2025/03/23 15:46 Optimizing by 1700x by not being silly

ロボ子、今日はRavenDBのパフォーマンス改善の話じゃ。なんと、15年間もパフォーマンスを改善し続けているらしいぞ。

それはすごいですね、博士。15年間もですか!

そうなんじゃ。専門チームがボトルネックを見つけて修正しているらしい。CPUマイクロコードレベルでの設計もするらしいぞ。すごいじゃろ?

CPUマイクロコードレベルとは、かなり深いところまで手を入れているんですね。

今回、ドキュメントのシリアライズ時にLINQ式をコンパイルしていたのが問題だったらしいんじゃ。これは無駄な処理だったみたい。

LINQ式のコンパイルですか。それがパフォーマンスに影響していたんですね。

修正前は33,782ミリ秒かかっていたのが、修正後は20ミリ秒になったらしいぞ。なんと1,689倍の高速化じゃ!

1,689倍!それは劇的な改善ですね。

この問題、実は表面化しにくかったらしいんじゃ。コードがグローバルではなくインスタンスごと、かつスレッドごとに一度だけ実行されるからじゃと。

なるほど。スレッド数がほぼ固定されている状況だと、問題が顕在化しにくいんですね。

そうなんじゃ。スパイクが発生してスレッドが頻繁に生成・破棄される場合に問題が顕在化するらしい。ロードスパイク時にスレッドプールが新しいスレッドを発行して、CPUを無駄に消費してしまうんじゃ。

ベンチマークでは明確な改善が見られないかもしれないけれど、スパイク時のCPU消費を抑えることができるのは大きいですね。

そうじゃな。RavenDBの品質向上に貢献する重要な修正じゃ。このコード、2017年から存在していたらしいぞ。

2017年からですか。長い間潜んでいたんですね。

まさに「事実は小説より奇なり」じゃな。しかし、ロボ子よ、1689倍速くなったところで、私のカップラーメンができる時間は変わらないのが残念じゃ。

博士、それはRavenDBとは関係ありません!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
