Boost Log-Laufzeitoptimierung

8

Ich verwende Boost-Log und den globalen Schweregrad Logger für die Logging-Plattform meiner Anwendung. Profiling zeigt, dass die boost::log::v2s_mt_posix::core::open_record aufnehmen kann 25% der gesamten Ausführungszeit.

Ich habe viele Log-Nachrichten, aber ich würde nicht erwarten, dass sie so teuer sind, wie sie es sind niedrigerer Schweregrad und sie werden gefiltert .

Gibt es eine Möglichkeit, diese Nachrichten in der Laufzeit nicht so kostspielig zu machen? (wiederum: Ich erwarte einen kleinen Overhead, selbst wenn gefiltert und natürlich ein größerer, wenn nicht gefiltert).

Die Kompilierzeit ist relativ einfach zu "reparieren", indem einige Wrapper-Makros erstellt werden.

AKTUALISIERT mit Beispielcode:

%Vor%

Das Ausführen mit dem Argument 0 gibt keine Protokollnachrichten aus, aber es dauert zweimal (!) Zeit, als die LOG-Nachricht auskommentieren.

    
Dimitris Dakopoulos 17.06.2014, 09:17
quelle

2 Antworten

0

Bei der Protokollierung muss oft protokolliert werden, was protokolliert wird, und diese Auswertung erfolgt vor der eigentlichen Entscheidung, ob protokolliert werden soll oder nicht. Zum Beispiel:

%Vor%

Wir hatten ein selbst entwickeltes Logging-System, das dem Protokoll die aktuelle Zeit hinzufügte, was ein Aufruf von gettimeofday() war. Es stellte sich heraus, dass 20% der CPU-Auslastung im Programm Aufrufe in gettimeofday() für Protokollfunktionen waren, die nie irgendwo hingelangen.

    
Mark 02.10.2014 02:02
quelle
0

Eine Problemumgehung (dies ist eine Marmite-Lösung, btw.) besteht darin, ein Makro zum Umbrechen der Protokollierung zu verwenden, zum Beispiel:

%Vor%

Dann:

%Vor%

Sie können sicher sein, dass someExpensiveFunction() nur auf einer Ebene ausgeführt wird, die INFO unterstützt.

Verdammt, du könntest sogar so weit gehen, es komplett zu kompilieren,

%Vor%

Ein weiterer Vorteil wäre, dass Sie die Protokollierungsimplementierung ändern könnten, indem Sie das Makro ändern und nicht Ihren gesamten Code überall ändern.

    
Nim 03.08.2015 11:03
quelle

Tags und Links