Thread Hash im Skalaren Kontext 3/8 und so
(15 answers)
Opened by rosti at 2012-08-16 18:32
Ich sollte nicht behaupten, etwas sei schneller ohne einen Benchmark gemacht zu haben! Erstaunlicherweise ist nämlich die Version ohne direkte Zuweisung an %keys schneller!
Code: (dl
)
1 use Benchmark qw(:all); Ergebnis für 100 mio Keys ist: Code: (dl
)
1 Benchmark: running normal, preAssign for at least 100 CPU seconds... Gut, nur ein Durchlauf. Aber trotzdem ein deutlicher Unterschied. Oder habe ich da irgendwas falsch gemacht? Oder muss man vielleicht noch bedenken, dass ein kleinerer Hash komplett im Prozessor-Cache gehalten werden kann und es daher schneller sein kann, diesen mehrmals in der Größe zu ändern? Wenn ich nur 40 statt 1e8 Keys nehme: Code: (dl
)
1 Benchmark: running normal, preAssign for at least 100 CPU seconds... Conclusion: es bringt nichts, daran rumzudoktoren. Das ist in Perl bereits wunderbar optimiert, sodass man selbst sich nicht mehr darum kümmern muss. (Tests mit 5.8.8 gemacht) modedit Editiert von pq: code-tags um benchmark-ausgabe, sonst unlesbar Last edited: 2012-08-17 12:32:20 +0200 (CEST) |