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