【发布时间】:2011-12-23 16:45:52
【问题描述】:
在 Android 设备上执行 SQLite cursor.getCount() 操作是否昂贵?
哪个更快:
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 {
【问题讨论】:
-
我认为性能没有显着差异,除非您谈论的是相当数量/大小的元素。否则,我认为您的问题提供了一些可以讨论的主题:提前在手机上分配内存以获得性能是否更好......
-
我认为性能没有任何差异。
cursor.moveToFirst()调用onMove,后者调用getCount。所以 getCount 可能会很慢,但你无法真正摆脱它。