「SQLite性能評価その4」の続きです。
SQLiteインメモリデータベースと、C++標準ライブラリのコンテナの性能を比較してみることにします。
ややこしい処理を何もしていない分C++標準ライブラリの方が圧倒的に速そうですが、実際のところはどうでしょうか。
測定環境は前と変わっていませんが、もう一度書いておきます。
| コンパイラ | Visual C++.NET 2003デフォルトコンパイラ |
| OS | Windows XP Professional SP2 |
| CPU | AMD Athlon 64 3700+ |
| メモリ | 2GB |
| HDD | Seagate ST3300622AS |
| プロジェクト設定 | デフォルトRelease構成 |
| SQLiteバージョン | 3.4.2 (not define THREADSAFE) |
| boostバージョン | 1.33.1 |
インメモリデータベースのコードは、前回最速だったCase5を使用します。
C++標準ライブラリのコンテナを使ったコードは以下の通りです。これをCase6とします。 std::listを使いました。おまけでboostも使いました(標準ライブラリ相当ということで・・・)
std::list<boost::tuple<std::string, int> > Database;
// 処理時間測定開始
for (int i = 0; i < 100000; ++i) {
Database.push_back(boost::make_tuple(StringList[i], ValueList[i]));
}
// 処理時間測定終了
測定結果は以下のようになりました。

C++標準ライブラリのコンテナを使った方が6倍速いです。結構な差だとは思いますが、桁が違うところまでは行かないんですね。 SQLite大健闘ではないかと思います。
投稿者 MASATO : 2008年01月27日 20:16 | トラックバック