「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 | トラックバック