棚からパルチャギ

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

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日目。

2009. 08. 10

教訓
ぐぐるよりも前に公式ドキュメント読みましょう。

はい。


まあ、iPhone Dev Centerの解説も微妙に古かったりでなんともだったりするのですが。
Code Signingに登録したProvisioning Profileが表示されないとか
Organizerにドラッグ&ドロップするか、+ボタン押して追加で一見登録されたように見えるのに、Code Signingの項目では選択できないという罠。

Profile用のディレクトリが存在しないと正常に登録されないのか、ダメな場合は自分でディレクトリ作成してコピーする必要があるみたい。
$ mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles $ cd ~/Library/MobileDevice/Provisioning\ Profiles $ mv ~/Downloads/Develop.mobileprovision .
iPhone OS 3.0.1にしたらXcodeが認識しないとか
このバージョンには対応していないので最新版のXcodeに更新してねと言われる。
The version of iPhone OS on “iPhone” does not match any of the versions of iPhone OS supported for development with this copy of Xcode. Please restore the device to a version of the OS listed below. If necessary, the latest version of Xcode is available here.

3.0用のデバイス定義が流用できるので、シンボリックリンクは自分で貼る必要があるみたい。 こういうのバージョンアップで対応とかしないものなのかしら。
$ cd /Developer/Platforms/iPhoneOS.platform/DeviceSupport $ ln -s 3.0\ \(7A341\) 3.0.1
iPhone開発メモ
はまったところくらいは書き残していこうと思うわけで。

本は「iPhoneデベロッパーズクックブック」だけ買いました。通称エリカ本。良書。 あとの情報はネットの情報で結構とかなるような気がしますね。 むしろ情報多すぎてどれから手をつければいいのか分からない気がしますが。 Objective-Cはサンプルコード書き写しながら覚える感じで。