Is SQLite cursor.getCount() дорогостоящая операция при исполнении на Android устройство?SQLite cursor.getCount дорогая операция в Android
Что быстрее:
Cursor cursor = db.rawQuery(sql, null);
int length = cursor.getCount();
final List<Item> items = new ArrayList<Item>(length * 2); // need maybe 2 items per row
if (cursor.moveToFirst()) {
// loop trough the query result
do {
...
или
Cursor cursor = db.rawQuery(sql, null);
final List<Item> items = new ArrayList<Item>(); // capacity is 0 by default on android
if (cursor.moveToFirst()) {
// loop trough the query result
do {
Я не думаю, что есть существенная разница в производительности, если вы не говорите о значительном количестве/размере элементов. В противном случае, я думаю, ваш вопрос предлагает некоторые темы для обсуждения: лучше ли выделять память заранее на вашем телефоне, чтобы получить производительность ... – hovanessyan
Я не думаю, что когда-либо была разница в производительности. 'cursor.moveToFirst()' вызывает 'onMove', который вызывает' getCount'. Таким образом, getCount может быть очень медленным, но вы не можете избежать этого. – Malabarba