最適化する関数がやや大きい(コメントなしで約80行のコード)。
プロファイラーに作業を任せるための一環として、2つのコードチャンクを取得し、それらを別々の関数に配置しました(これは、元に戻すことができるまでの一時的なものであると想定されています)。
興味深い部分はこれです:私のテストケースは29.8秒かかり
ました最初のチャンクを別の関数に入れた後、関数呼び出しのオーバーヘッドによる小さなパフォーマンスの低下が見られました。(30.2秒)コードの2番目のチャンクを別の関数に入れると、24.2秒までかなり大きなパフォーマンスの向上が得られました
コードの2番目のチャンクは、かなり大きなリンクリストへの挿入であり、バイナリツリーなどに置き換える予定ですが、それでもこの20%の改善はかなり混乱します。
tl; dr:コードを最適化しようとすると、コードのブロックを別の関数に入れると、パフォーマンスが20%向上することに気付きました。そんなことがあるものか?
編集:リリースビルドでも実行されていることを確認