Am 04.05.2010 um 13:06 schrieb Chris Moeller:

Hat jemand eine Idee, wie man "schnell" einen MemoryBlock mit Zufallsdaten füllen kann?
Das hier ist jedenfalls viel zu langsam:

for n=0 to len(mem)
   mem.Byte(n)=rnd*255
next n

Achja: der Block kann schon mal 128 MB groß werden

Chris

Nun, 128 MB enthalten auch eine ganze Menge Bytes (1024*1024*128). Mein 08/15-Taschenrechner hier, kann diese Zahl schon gar nicht mehr darstellen...

Grundsätzlich kannst Du große Schleifen meistens beschleunigen, indem Du ein "#pragma DisableBackgroundTasks" an den Anfang der jeweiligen Methode stellst.

Für Dein spezielles Problem gibt es aber evtl. noch eine andere Lösung. In der engl. Mailingliste hat vor ein paar Monaten jemand ein Random-Modul erstellt, das "zufälligere" Zahlen liefert, als die REALbasic-Methode/-Klasse, indem es "/dev/random" ausliest. Unter anderem enthält das Modul eine "RandomMemoryBlock" Methode, die einen mit Zufallszahlen gefüllten MemoryBlock in beliebiger Größe liefert. Leider funktioniert diese Methode nur unter Mac OS X und Linux. Herunterladen kannst Du das Modul "M_Random 1.0" unter http://www.mactechnologies.com/index.php?page=downloads

Gruß
Christian




Antwort per Email an