2016-05-09 4 views
0

CoreDataとRealmのベンチマークを正しく行うにはどうすればよいですか?CoreDataとRealmのベンチマーク

私はUnit Testingを使用しましたが、RealmデータベースがCoreData(これは間違っていると思われます)と比較して100,000レコードのデータを追加するのに時間がかかっていましたが、InMemoryは使用しませんでしたベンチマークは可能な限り現実に近いものとなっています。

データベースのフェッチ/追加/削除プロセスをベンチマークする適切な方法は何ですか? XCTest?楽器?

XCTestが方法である場合、私はそれを間違ってテストしているに違いありません。私はRealmが少なくともシンプルなデータベースでCoreDataを上回るべきだと考えています。

答えて

0

いくつかの一般的なベンチマーク質問:

  1. あなたがどのようなコンパイラの最適化レベルを構築していますか?完全最適化を使用した「リリース」モードでのビルドは、最適な設定が現実世界の動作に最も近い可能性があります。
  2. シミュレータまたは実際のデバイスでベンチマークを行っていますか?実際のiOSデバイスでテストすることは非常に重要です。
  3. ベンチマークコードは、実際の使用状況をどの程度近くに反映していますか?ライブラリが実際にどのように実際に使用されているかを反映するために十分な注意を払わない限り、合成ベンチマークは誤解を招くことがあります。たとえば、レルムのトランザクションごとのオーバーヘッドは、アイソレーション(ACIDの「I」:レルムのフォルトはない)を保持しているため、コアデータよりも高い可能性があります。しかし、トランザクション内での書き込みはCore Dataよりも高速である可能性があります。ほとんどのクエリはRealm、特にグラフトラバーサルで高速になります。小規模な取引をたくさん作成していますか、それとも大規模なものはほとんどありませんか?このすべてがパフォーマンス特性に影響します。
  4. ベンチマークで関連性のないコードを間違って測定していますか?私は

...あなたは私がNSLogにそのほとんどの時間を費やして見てきたベンチマークのコードの一部で驚かれると思い、聞いている最後に、XCTestと楽器が劇的でベンチマーク比較に影響を与えるべきではありませんほとんどの状況。私は実際に#4を確認するためにインストゥルメンツを見ることをお勧めします。

関連する問題