■
iPhone 3GSのSQLiteベンチマーク
4万件程度のデータをほどほど高速に扱いたいなあと思って、iPhoneのSQLiteがどの程度の性能出せるのか検証。
ベンチマークの内容は公式の速度比較の項目とだいたい同じもの。5回試行した平均とってます。 比較対象がないのも微妙なので、公式の数値と開発環境(MacBook Core2Duo 2.1GHz/4GB Memory)上のiPhoneシミュレータの数値も掲載。単位は秒。
更新系は多少遅いものの、SELECTする分にはシミュレータ並みの速度が出たりするのはフラッシュメモリの恩恵なのかなあ。 もともとデータは事前に用意するつもりだったので全然実用的に使えそうな気がしてきた。
データベースライブラリにfmdbを使っています。 ソースコードはベタ書きで結果をNSLogで出力する恥ずかしいものなので、欲しい方はメールください。。。
ベンチマークの内容は公式の速度比較の項目とだいたい同じもの。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で出力する恥ずかしいものなので、欲しい方はメールください。。。
posted at 19:22 [ /tech/iphone ]







