簡體   English   中英

為什么DAO方法在ORMLite中這么慢?

[英]Why is the DAO method so slow in ORMLite?

我有一個看起來像這樣的方法

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

當我打電話給getDaoStore這是一個漫長的過程。 在我的日志中,我可以看到GC在每次調用之后運行,所以我猜這次調用會有很多事情發生。

有沒有辦法加快速度?

對Android-land的深入研究表明,由於一個嚴重的Method.equals()方法,Android下的注釋非常緩慢且極其 GC密集。 我們在版本4.26中添加了表配置文件,繞過了這個並使ORM​​Lite啟動得更快,更快。 在郵件列表中查看此問題此主題

我們繼續提高注釋速度。 另請參閱: Android上的ORMLite性能不佳?


DAO創建是一個相對昂貴的過程。 ORMLite創建類中的類和字段的數據表示,並構建許多其他實用程序類,以幫助實現各種DAO功能。 您應該確保每次調用都調用一次createDao方法。 我認為這是在Android @Pzanno下?

在4.16中,我們添加了一個DaoManager ,它的作用是緩存Dao類,這在版本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的內存審計可能也是有序的。 我看了它的消費已經有一段時間了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM