4

私はこのような方法を持っています

public Dao<ModelStore, Integer> getDaoStore() throws SQLException {
    return BaseDaoImpl.createDao(getConnectionSource(), ModelStore.class);
}

私が呼ぶとき、getDaoStoreそれはかなり長いプロセスです。私のログでは、これを呼び出すたびにGCが実行されることがわかります。したがって、この呼び出しでは多くのことが行われていると思います。

これをスピードアップする方法はありますか?

4

1 に答える 1

8

Androidランドを詳しく調べると、大まかMethod.equals()な方法​​のため、Androidでのアノテーションは非常に遅く、GCを非常に集中的に使用することがわかりました。バージョン4.26で、これをバイパスしてORMLiteの起動を大幅に高速化するテーブル構成ファイルを追加しました。メーリングリストのこの質問このスレッドを参照してください。

注釈の速度は引き続き向上しています。参照:AndroidでのORMLiteのパフォーマンスの低下?


DAOの作成は、比較的コストのかかるプロセスです。ORMLiteは、クラスとクラス内のフィールドの両方のデータ表現を作成し、さまざまなDAO機能を支援する他の多くのユーティリティクラスを構築します。呼び出しごとに1回メソッドを呼び出すようにしてくださいcreateDao。これはAndroid@Pzannoの下にあると思いますか?

4.16ではDaoManager、Daoクラスをキャッシュすることをジョブとするwhoを追加しました。これは、バージョン4.20で改善されました。その後、常にそれを使用してDaosを作成する必要があります。次のコードのようなものをお勧めします。

private Dao<ModelStore, Integer> modelStoreDao = null;
...

public Dao<ModelStore, Integer> getDaoStore() throws SQLException {
    if (modelStoreDao == null) {
        modelStoreDao = DaoManager.createDao(getConnectionSource(),
            ModelStore.class);
    }
    return modelStoreDao;
}

お役に立てれば。ORMLiteのメモリ監査もおそらく適切です。消費量を見てから久しぶりです。

于 2011-03-25T12:59:56.587 に答える