Bonjour,
pour un futur besoin je vais découper tout le réseau classe A 10.0.0.0/8 en sous réseaux avec un masque de /24..
Le résultat des sous réseaux s'affichant avec un /24 à la fin, je supprime cette partie et ensuite pour chaque sous réseaux, obtenir tous les adresses de host entre .230 et 252.
J'ai un test sans et avec référence. Le temps du second et ressource sont meilleurs mais vu le temps, j'ai du rater une optimisation quelque part.
Je suis sur :
I7-4600U
8G de RAM
strawberry 5.26.1 portable
Sans référence.
### RESULTAT BENCHMARCK
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 use strict; use warnings; use feature 'say'; use Data::Dumper; #no warnings ('uninitialized', 'substr'); use NetAddr::IP; use Benchmark; my $t0 = Benchmark->new; my $ip = new NetAddr::IP('10.0.0.0/8'); my @objects = $ip->split(24); my $NET; my $nbhost; for my $IP (@objects) { $NET++; foreach ( 230 .. 252) { my $host = NetAddr::IP->new($IP) + $_; $host =~ /(\d+\.\d+\.\d+\.\d+)\b\/\d+/; say $1; $nbhost++; } } say "Nombre de reseaux $NET"; say "Nombre adresse totale $nbhost; my $t1 = Benchmark->new; my $td = timediff($t1, $t0); print "the code took:",timestr($td),"\n";
Nombre de reseaux 65536
Nombre adresse totale 1507328
the code took:1882 wallclock secs (608.70 usr + 65.84 sys = 674.55 CPU)
Avec référence
### RESULTAT BENCHMARCK
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 use warnings; use feature 'say'; use Data::Dumper; #no warnings ('uninitialized', 'substr'); use NetAddr::IP; use Benchmark; my $t0 = Benchmark->new; my $ip = new NetAddr::IP('10.0.0.0/8'); my @objects = $ip->split(24); my $ref_objects = \@objects; my $NET; my $nbhost; #### VERSION PROCESSLESS foreach my $IP (@$ref_objects) { $NET++; foreach ( 230 .. 252) { my $host = NetAddr::IP->new($IP) + $_; $host =~ /(\d+\.\d+\.\d+\.\d+)\b\/\d+/; say $1; $nbhost++; } } say "Nombre de reseaux $NET"; say "Nombre adresse totale $nbhost; my $t1 = Benchmark->new; my $td = timediff($t1, $t0); print "the code took:",timestr($td),"\n";
Nombre de reseaux 65536
Nombre adresse totale 1507328
the code took:1623 wallclock secs (548.33 usr + 44.00 sys = 592.33 CPU)
Merci pour vos pistes
Partager