000
28.06.2007, 00:56 Uhr
struct
|
Hallo
Ich arbeite zur Zeit an einer kleinen 3D Spiele-Engine und die beinhaltet eine Komponente für ein Logfile. Problem ist jetzt dass die Funktion mit der ich in den Logfile schreibe auf verschiedenen PCs unterschiedlich schnell ist. Um das genauer zu testen hab ich ein Benchmarkprogramm geschrieben das 100 Logfileeinträge schreibt und die Zeit misst die dafür benötigt wurde. Auf meinem Rechner braucht das Programm für die 100 Einträge etwa 40ms. Auf meinem Laptop sind es um die 2600ms ! Und bei nem Freund von mir um die 3000ms!
Die Engine und das Benchmarkprogramm hab ich auf meinem Rechner mit Visual C++ 2005 Express Edition compilliert. Und, falls es von Bedeutung ist, auf den beiden anderen Testrechnern ist Visual C++ 2003 Standard installiert. Kann es denn sein dass es an der installierten VC++ Version liegt? Dürfte doch eigentlich nicht sein denk ich
Hier die Log-Funktion:
Code: |
beResult beLogfile::WriteToLogfile(const char* pcFormat, ...) { // cancel if the logfile is not opened if ( m_pLogfile == NULL ) { return BE_IMPOSSIBLE; } char acText[1024]; va_list VAList;
va_start(VAList, pcFormat); vsprintf(acText, pcFormat, VAList); va_end(VAList);
fprintf(m_pLogfile, "%s", acText); fflush(m_pLogfile); return BE_OK; }
|
Geöffnet wird die Datei mit:
Code: |
m_pLogfile = fopen( pcFilename, "wc" );
|
Ich hab's auch mit
Code: |
m_pLogfile = fopen( pcFilename, "w" );
|
und ohne fflush probiert. Dann wars deutlich schneller, klar, aber ich will das fflush eigentlich schon da haben. Außerdem ist es auf meinem Laptop dann immernoch langsamer: bei mir: <1ms, Laptop: 15ms.
Ich habe keine Ideen mehr woran es liegen könnte, darum bin ich für jegliche Vorschläge dankbar. |