Am Dienstag, dem 24. Juli 2001 um 19:55:20, schrieb Josef Spillner:
Wenn es nicht unbedingt High-Level-C++ sein muß würde ich die Cache-Verwaltung einfach selbst implementieren, d.h. blockweise alles in ein dickes fettes Array rein und das dann in eine Datei oder auf den Bildschirm dumpen.
Das habe ich nun so gemacht, ist aber eventuell nicht so portabel bzw. ich brauche im Ernstfall immer einen Konverter nach Text - nicht wirklich schlimm, da das fast ein perl-one-liner ist.
Die reine Ein- und Ausgabe von 13 MB in und aus einer Datei mit den C++-Operatoren dauert hier (Athlon500) 24+10 = 24 Sekunden
^^^^^^^^^^ aha
(Textformat). In optimiertem C sind es noch 3+0 = (aufgerundet) 4 Sekunden (Binärformat).
Statt C kann man auch die write/read-Funktionen von iostream nehmen, die sind genauso schnell.
Das dann auf den Bildschirm ausgeben ist tricky, weil printf elend lahm ist, da müsste man schon was eigenes schreiben - aber das soll nicht wirklich schnell sein, oder?
perl ist trotz Interpreter offensichtlich schneller, komisch nicht?
Achso, und ein Quickhack ist auch drin weil der Modulo-Operator "%" unbedingt meint, große Zahlen folgen anderen mathematischen Gesetzen (32499999 % 32500000 ist bei ihm 8124999) - mit Ruby wär das nicht passiert :-)
Aehm bei mir ist alles korrekt (gcc 2.95.3).
#include <iostream> int main () { std::cout << 32499999 % 32500000 << '\n'; }
gibt wie erwartet 32499999 aus.
Torsten