Должен ли QGraphiveItem:: boundingRect () включать дочерние ограничивающие ректы?

Гуглинг предполагает, что он должен .

Но пример реализации dragdroprobot (на родительском объекте Robot) не предлагает:

QRectF Robot::boundingRect() const
{
    return QRectF();
}

Что правильно, или происходит что-то более тонкое?

-121--1813038-

Закольцовывание через курсор SQLite занимает слишком много времени I Это код, о котором я говорю: публичный статический список ...

Я использую базу данных SQLite в приложении Android и метод getAll , который я написал, занимает слишком много времени.

Это код, о котором я говорю:

public static List getAll(Context context) {
        List feeds = new ArrayList();
        Uri allFeeds = Uri.parse(ContentProvidersUris.URL_CONTENT_PROVIDER_FEED);

        long startQuery = BenchmarkUtils.start();
        Cursor c = context.getContentResolver().query(allFeeds, null, null, null, "title desc");

        long startCursor = BenchmarkUtils.start();
        for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
            long startInsideCursor = BenchmarkUtils.start();

            Feed feed = new Feed();
            feed.setContent(c.getString(c.getColumnIndex(FeedsProvider.COL_WEBVIEW_CONTENT)));
            feed.setDate(c.getString(c.getColumnIndex(FeedsProvider.COL_PUB_DATE)));
            feed.setDescription(c.getString(c.getColumnIndex(FeedsProvider.COL_DESCRIPTION)));
            feed.setName(c.getString(c.getColumnIndex(FeedsProvider.COL_FEED_NAME)));

            Log.d(TAG, "This loop  cursor iteration took : " + BenchmarkUtils.stop(startInsideCursor) + " ms.");
        }

        Log.d(TAG, "Looping through the ENTIRE Cursor took: " + BenchmarkUtils.stop(startCursor) + " ms.");


        return feeds;
}

Как вы видите, я также измеряю время, занятое этим циклом на каждой итерации, и оказывается, что это занимает среднее время 1800 мс (на Nexus S ). Я считаю, что это много времени. И я не понимаю, что большая часть этого времени тратится на первую итерацию , как показано в журналах:

D/FeedsProviderHelper (5800): Это повторение курсора петли взяло: 1 726 мс.

D/FeedsProviderHelper (5800): Эта итерация курсором цикла заняла: 3 мс.

D/FeaingProvireHelper (5800): Эта итерация курсором цикла заняла: 2 мс.

D/FeaingProvireHelper (5800): Эта итерация курсором цикла заняла: 3 мс.

D/FeaingProvireHelper (5800): Эта итерация курсором цикла заняла: 2 мс.

D/FeaingProvireHelper (5800): Эта итерация курсором цикла заняла: 3 мс.

D/FeaingProvireHelper (5800): Эта итерация курсором цикла заняла: 3 мс.

D/FeaingProvireHelper (5800): Эта итерация курсором цикла заняла: 2 мс.

D/FeedingProvireHelper (5800): Эта итерация курсором цикла заняла: 0 мс.

D/FeedingProvireHelper (5800): Эта итерация курсором цикла заняла: 5 мс.

D/FeaingProvireHelper (5800): Эта итерация курсором цикла заняла: 1 мс.

D/FeaingProvireHelper (5800): Эта итерация курсором цикла заняла: 1 мс.

D/FeaingProvireHelper (5800): Эта итерация курсором цикла заняла: 5 мс.

D/FeaingProvireHelper (5800): Эта итерация курсором цикла заняла: 1 мс.

D/FeaingProvireHelper (5800): Эта итерация курсором цикла заняла: 1 мс.

D/FeedingProvireHelper (5800): Эта итерация курсоров цикла заняла: 1 мс.

D/FeedingProvireHelper (5800): закольцовывание всего курсора заняло: 1770 мс.

Так что мои вопросы:

Это нормально? Если да, то почему? Если нет, то что я делаю не так? Любой более быстрый способ выполнения startAll для базы данных SQLite?

Спасибо!

EDIT

Я вывел вызовы getColumnIndex из цикла в соответствии с предложением @ superfell,и теперь я запускаю метод getAll в среднем 1500 мс . Это быстрее, но недостаточно быстро на мой взгляд (еще раз)!

6
задан Amokrane Chentir 16 September 2011 в 17:49
поделиться