ORMLiteを使うときの注意点として、DAOの生成はコストがかかるので使いまわした方がいいっていう記事があるので、時間だけでも計測してみました。
こちらの記事を参考にさせてもらいました。
http://qiita.com/opengl-8080/items/133314cfed9b3b404572
テストコードでこんな感じのソースを作ってみます。
HogeHoge hogehogeEntity = new HogeHoge();
long count = 1000;
//ヘルパー作成
ORMDatabaseHelper helper = new ORMDatabaseHelper(loginActivity);
Calendar startCal = null;
Calendar endCal = null;
/*都度DAOを生成する*/
startCal = Calendar.getInstance();
for(int i = 0;i < count;i++){
Dao<HogeHoge,Long> dao = helper.getDao(HogeHoge.class);
dao.createOrUpdate(hogehogeEntity);
}
endCal = Calendar.getInstance();
Log.i(TAG, "同じhelperで毎度DAOを生成した場合(ミリ秒):" + (endCal.getTimeInMillis() - startCal.getTimeInMillis()));
/*DAOを事前に生成しておき、都度DAOを生成する*/
Dao<HogeHoge,Long> dao2 = helper.getDao(HogeHoge.class);
startCal = Calendar.getInstance();
for(int i = 0;i < count;i++){
dao2.createOrUpdate(hogehogeEntity);
}
endCal = Calendar.getInstance();
Log.i(TAG,"同じhelperでDAOを使いまわした場合(ミリ秒):" + (endCal.getTimeInMillis() - startCal.getTimeInMillis()));
結果なんですが、ほとんど変わらなかったです。
1回目。
同じhelperで毎度DAOを生成した場合(ミリ秒):2402
同じhelperでDAOを使いまわした場合(ミリ秒):2174
2回目。
同じhelperで毎度DAOを生成した場合(ミリ秒):2329
同じhelperでDAOを使いまわした場合(ミリ秒):2338
何度やっても0.3秒以内の差にしかならず、それほど目立った差にはなりませんでした。
少なくとも時間的な意味では、DAOを生成しても使いまわしても、あんまし差が無いかもしれないです。
ディスクアクセスの量とかもっと詳しい見方をすると違うのかもしれんですが…。
モデルクラスとか設計するときに「DAOを使いまわせるように設計しないとなー」と悩んでいる方々は、思い切って使い切りにしちゃうのも良いかと思います。
helperの生成にはすごく時間かかりましたので、helperは多分使いまわした方がいいと思いますが…。