私は、システムのプロファイリングと分析を行った後、システムのロギング コンポーネントが総実行時間の約 17% を占める多くのボトルネックの 1 つであるという結論に達しました。 .
このうち、ロガーが消費する時間の約 5% は、次の形式で日付/時刻スタンプを ascii で生成することに関連しています。(約 700K x (localtime および gettimeofday) 呼び出し/秒)
私は、タイムスタンプを効率的に生成するために仲間の SOer がどのようなテクニックを持っているのか疑問に思っていました。
クロスプラットフォーム ソリューションは歓迎されます。
注 1: Boost.datetime を調べました - 素晴らしいですが、私たちのニーズには少し遅すぎます。std::chrono は完璧なソリューションですが、残念ながら c++11 より前のコンパイラをサポートする必要があります。
注 2: 日付部分 (yyyymmdd) を 24 時間ごとに 1 つだけ計算する単純な最適化を実装したため、1 行に 1 回の gettimeofday 呼び出ししかありませんが、あまり役に立ちませんでした。