3

SqlCiper sqlite db を Android プロジェクトに統合します。暗号化されていない SqlCiper sqlite db と暗号化された SqlCiper sqlite db では、db クエリのパフォーマンスに大きな違いがあることがわかりました。

同じ Android デバイスのコードで基本的なタイミング ロギングを実行しました。

  • 暗号化されていない SqlCiper db: 100 db クエリ、合計時間: 1 ~ 2 秒
  • 暗号化された SqlCiper db: 100 db クエリ、合計時間: 17 秒。

SqlCiper データベースで暗号化を有効にすると、実行時間が大幅に増加することがわかります。

この投稿に基づいて: SqlCiper Performance および SqlCiperSpeed、iOS ではそれほど大きな増加は見られませんが、Android ではパフォーマンスの数値は見られませんでした。

皆さんは、私たちが見たのと同じ問題を見ていますか? それを改善するための提案はありますか?

4

2 に答える 2

2

まず、心配する価値のある問題があることを確認してください。10 ミリ秒ではなく 170 ミリ秒かかるクエリは、単独でユーザーにとって重大な違いになる可能性は低いです。どちらの場合も、バックグラウンド スレッドを使用する必要があります。10 ミリ秒でも、他に何が起こっているかに応じて、1 つまたは 2 つのフレームをドロップするのに十分です。したがって、このクエリを個別のユーザー リクエスト (アクション アイテムのタップなど) に応じて実行している場合、ユーザーはその違いに気付くことはほとんどありません。これらのクエリを短時間で大量に実行する場合にのみ、速度の問題が発生し、ユーザーに問題が発生する可能性があります。

次に、EXPLAINキーワードなどを使用して、データベース アクセス全般を調整したことを確認します。SQLCipher for Android は、テーブル スキャンが発生するクエリなど、データベース I/O の低下を悪化させます (たとえば、適切なインデックスがないため)。

3 番目に、Traceview を使用して、どこで時間が費やされているかを正確に判断します。

于 2013-11-01T16:31:22.047 に答える
2

方法で最適化できます:

1.SQLCipher ライブラリでは、AES アルゴリズムを使用してデータを暗号化しました。--> AES --> RC4 を変更できます。パフォーマンスが 10 ~ 15% 向上しました。(使用前にAESとRC4を比較できます)

2.データSQLiteを最適化する必要があります(インデックスの作成、SQLクエリなど)。 http://www.sqlite.org/optoverview.html

于 2014-09-22T09:14:49.743 に答える