Ist Log4cplus wirklich so langsam?

8

Ich habe drei Optionen für mein Logging-Subsystem in C ++ getestet. Einer ist Log4cplus, einer ist Pantheios und der letzte ist eine einfache Logging-Bibliothek, die wir selbst geschrieben haben.

Log4cplus war viel langsamer als die anderen beiden. Hier sind die Ergebnisse für die Protokollierung von 1.000.000 Protokolleinträgen:

  • log4cplus: 200 Sekunden BEARBEITEN: Das Einstellen der Puffergröße reduzierte es auf 120 Sekunden
  • mylogger: 55 Sekunden
  • Pantheios: 35 Sekunden

Ich frage mich, ob mir eine Leistungsoptimierung fehlt.

Ich sollte hinzufügen, dass ich immer den Root-Logger verwende, ich logge mich in Datei ein und protokolliere: LOG4CPLUS_INFO(rootLogger, "Replace me with the text!");

danke, Reza

    
RezaPlusPlus 07.09.2011, 18:04
quelle

1 Antwort

12

Die Verwendung von log4cplus::NullAppender in performance_test gibt mir Logging 1000000 took: 4sec 343709usec auf dem halb-geladenen FreeBSD-Server. IOW, der reine Protokollierungsaufwand ist eher gering. Ihre Protokollierungszeiten scheinen vom Zielprotokollierer abhängig zu sein. Wenn Sie log4cplus::FileAppender verwenden, unterscheiden sich die Timings erheblich.

BEARBEITEN:

Sie müssen FileAppender ein wenig anpassen. Stellen Sie sicher, dass Sie die Eigenschaft ImmediateFlush auf false festlegen. Sie könnten BufferSize auch auf etwas Größeres wie 1000000 Bytes setzen.

    
wilx 07.09.2011 18:20
quelle