Thread Über viele(!) Boolesche Werte iterieren: Array oder Bit::Vector oder was? (14 answers)
Opened by flowdy at 2012-08-03 22:56

flowdy
 2012-08-04 16:36
#160621 #160621
User since
2012-08-03
45 articles
BenutzerIn

user image
2012-08-04T13:40:46 topeg
"substr" ist nur ein klein wenig langsamer als ein Array für Bitwerte kann es durchaus etwas bringen.

Das Problem ist nicht substr, sondern die teure weil immer wiederholte Einrichtung von $str_data. Okay, das passiert außerhalb der Schleife, aber die, potenziell mehrmals aufgerufene Funktion braucht den Speicher dafür, also kann man in auch gleich einmalig initialisieren und $bin_data hat dann keinen Zweck mehr. :-)

2012-08-04T13:40:46 topeg
Weiterhin alles was du außerhalb der Schleife initalisieren kannst "my", kostet keine Zeit in der Schleife. das betrifft auch das "$v". In der schleife definiert wird die varable am ende der Schleife zerstört und dann am Anfang neu eingerichtet (speicherallokation etc.)

Stimmt, habe $v aus der Schleife rausgemyert. Die Verbesserung ist vielmehr der Korrektur des übersehenen Tests gegen den Kovektor zu verdanken, tjaja, Copy&Paste, Plage unserer Zeit:
Code: (dl )
1
2
3
4
5
6
7
8
9
        Rate bitvx bitvm bitvr array strng index slice theor
bitvx 1.43/s -- -16% -20% -23% -38% -46% -65% -72%
bitvm 1.71/s 20% -- -4% -8% -26% -36% -58% -66%
bitvr 1.79/s 25% 5% -- -4% -22% -33% -56% -65%
array 1.86/s 30% 8% 4% -- -20% -30% -54% -63%
strng 2.31/s 61% 35% 29% 24% -- -13% -43% -54%
index 2.67/s 86% 56% 49% 44% 16% -- -34% -47%
slice 4.07/s 184% 138% 127% 119% 76% 53% -- -20%
theor 5.06/s 253% 195% 182% 172% 119% 90% 24% --


Auch von der Speichereffizienz dürfte strng ungefähr im Mittelfeld liegen. Wenn die Quote von sinntragenden und aufgefüllten Bits beim Bitvektor bei 1:0(,0...) liegt, je nach Länge und deren Teilbarkeit durch die maschinenabhängige Datenwortlänge, und die beim Array bei 1 : mind. 100, dürfte sie beim String bei ungefähr 1 : 7 liegen, denn '0' und '1' sind 1 Byte lange Zeichen.

PS: Hm, so sehr ich mich auch gefreut habe, endlich mal ein Forum mit ner Baumstruktur bei den Threads zu erblicken. Wenn man gleichzeitig auf mehrere Artikel antwortet, ist das eher ein Nachteil. Naja, des einen Freud ...
package MyClass; sub new {\b\b\b\b\b\b\b\b\buse Moose;

View full thread Über viele(!) Boolesche Werte iterieren: Array oder Bit::Vector oder was?