On Sunday 22 July 2001 20:15, Torsten Werner wrote:
Ergo: Binaerausgabe + perl-Konverter ist merklich schneller als direkte Textausgabe in C++. Ganz super! Hat jemand aehnliche Erfahrungen?
Es gibt sowohl in C++ als auch in Perl tausend Wege, ein Problem zu lösen. 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.
Die reine Ein- und Ausgabe von 13 MB in und aus einer Datei mit den C++-Operatoren dauert hier (Athlon500) 24+10 = 24 Sekunden (Textformat). In optimiertem C sind es noch 3+0 = (aufgerundet) 4 Sekunden (Binärformat). 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?
Die angehängte Datei demonstriert das mal. Mit 130 MB (zehnfache Menge) gibt es hier nur eine Performance-Bremse, das ist meine nicht-hdparm-optimierte Festplatte. 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 :-)
Josef Spillner