Thread RDW 2007/8 -- Aprilscherz (29 answers)
Opened by Ishka at 2007-04-01 15:41

GoodFella
 2007-04-02 23:00
#75601 #75601
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl

use strict;
use warnings;
use Benchmark ':all';

my $n = 19229024324098347987343;
$n += 0.0;

print 'AND: '.(($n&1) ? 'ungerade' : 'gerade')."\n";
print 'MODULO: '.(($n%2) ? 'ungerade' : 'gerade')."\n";


    
sub and_test { return($_[0]&1) }
sub modulo_test { return($_[0]%2) }

cmpthese (2000000, { and_test => sub { &and_test($n) }, modulo_test => sub { &modulo_test($n) } } );


Output:

Quote
---------- Perl ----------
AND: ungerade
MODULO: gerade
                Rate modulo_test    and_test
modulo_test  836470/s          --        -27%
and_test    1152738/s         38%          --

Output completed (10 sec consumed) - Normal Termination


Mein Vorredner hat meinen Code ja schon verteidigt :)

..ausserdem: "modulo" funktioniert irgendwo zwischen 2^51 und 2^52 nicht mehr ohne Zusatzmodule richtig, "and" schon .. ^^
..wie man an den unterschiedlichen Ergebnissen sehen kann.
Achja, der Geschwindigkeitsunterschied zwischen And und Modulo wächst mit der Grösse der Zahl; Modulo wird immer langsamer.\n\n

<!--EDIT|GoodFella|1175540884-->

View full thread RDW 2007/8 -- Aprilscherz