棚からパルチャギ

日々の雑記、ニュース拾いとか

2009. 08. 14

iPhone 3GSのSQLiteベンチマーク
4万件程度のデータをほどほど高速に扱いたいなあと思って、iPhoneのSQLiteがどの程度の性能出せるのか検証。

ベンチマークの内容は公式の速度比較の項目とだいたい同じもの。5回試行した平均とってます。 比較対象がないのも微妙なので、公式の数値と開発環境(MacBook Core2Duo 2.1GHz/4GB Memory)上のiPhoneシミュレータの数値も掲載。単位は秒。

テスト内容 公式 iPhone
(Simulator)
iPhone
(3GS)
Test 1: 1000 INSERTs 3.823 2.084 16.668
Test 2: 25000 INSERTs in a transaction 0.764 0.578 4.288
Test 3: 25000 INSERTs into an indexed table 1.778 0.887 6.181
Test 4: 100 SELECTs without an index 3.153 0.001 0.005
Test 5: 100 SELECTs on a string comparison 4.853 0.001 0.008
Test 6: INNER JOIN without an index 14.473 0.000 0.000
Test 7: Creating an index 0.552 1.312 2.186
Test 8: 5000 SELECTs with an index 1.872 0.016 0.238
Test 9: 1000 UPDATEs without an index 0.562 0.241 1.915
Test 10: 25000 UPDATEs with an index 1.883 0.936 6.859
Test 11: 25000 text UPDATEs with an index 1.386 0.803 5.712
Test 12: INSERTs from a SELECT 1.179 0.689 4.020
Test 13: INNER JOIN with index on one side 0.371 0.000 0.000
Test 14: INNER JOIN on text field with index on one side 0.383 0.000 0.000
Test 15: 100 SELECTs with subqueries. Subquery is using an index 7.877 0.000 0.005
Test 16: DELETE without an index 0.528 0.257 1.538
Test 17: DELETE with an index 0.866 0.959 5.446
Test 18: A big INSERT after a big DELETE 0.973 0.455 3.362
Test 19: A big DELETE followed by many small INSERTs 0.155 0.080 0.521
Test 20: DROP TABLE 0.138 0.031 0.171


更新系は多少遅いものの、SELECTする分にはシミュレータ並みの速度が出たりするのはフラッシュメモリの恩恵なのかなあ。 もともとデータは事前に用意するつもりだったので全然実用的に使えそうな気がしてきた。

データベースライブラリにfmdbを使っています。 ソースコードはベタ書きで結果をNSLogで出力する恥ずかしいものなので、欲しい方はメールください。。。
awsxomのProduct Advertising API対応
2009/08/15以降、AmazonアソシエイトのAPIは署名認証が必要になったのでawsxomのProduct Advertising API対応版。 本体のみ。 ライセンス書いてなかったので勝手にやった。今は公開している。

xreaにDigest::SHAが入っているのか分からなかったので、Digest::SHA::PurePerlをコピーして以下のような感じで使ってます。 導入済みの人は特に弄る必要はないはず。
use lib "$blosxom::plugin_dir/lib";
use Digest::SHA::PurePerl qw(hmac_sha256_base64);
雑記
もともと買ったものとかしか書いてなかったから、そういうのがtwitterで事足りてしまうと見事に書くことがなくなってしまうなあ。

なんかしよう。
コミケ行き忘れた。1日目。