sqliteの反則技(amalgamation )
AirOneで使っているsqliteのパフォーマンスが微妙に気にいらない(*)ので、パフォーマンスチューニングが進んでいるかどうか調べるために、久しぶりにWebサイトをチェックしました。
(*)ノートPCなのでディスクアクセスの遅さが要因かもしれません。
最近のリリース文を見ると、バグを埋め込んでは直し埋め込んでは直し、を繰り返している雰囲気がしないでもありません。それはともかくとして、次のリリース文が目につきました。
2007-Apr-02 - Version 3.3.14
This version focuses on performance improvements. If you recompile the amalgamation using GCC option -O3 (the precompiled binaries use -O2) you may see performance improvements of 35% or more over version 3.3.13 depending on your workload.
35%のパフォーマンス改善とは驚きの数字です(Javaなら驚きませんが。なぜならJavaは最新テクノロジーだからです)。amalgamationとは何かと次のページを見てみると...
全部の.cファイルをひとつのファイルにまとめてからコンパイルするようです。普通のCコンパイラはコンパイル単位(=ひとつのCソースファイル)で最適化を行うので、ひとつのファイルにまとめると速くなりうる、という理屈です。こっちでは、5%から10%の速度改善と書いてあります。
これは反則でしょう。
このテクニック(と呼びたくは無いですが)、そんなに効くものでしょうか。(ソースが分かれていれば)インラインになりえない関数呼び出し部分がインライン化するぐらいはすぐに思いつきますが、それ以外の最適化がどれほど起きるのか不明です。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/sqlite-amalgamation/tbping