Почему INSERT и UPDATE медленнее на Android 4.0?

Когда в декабре 2011 года Android 4.0 стал доступен для Nexus S, мы провели тестирование производительности: http://greendao-orm.com/2011/12/17/sql-performance-in-android-4-0/ введите здесь описание изображения

Удивительно, но производительность UPDATE и INSERT упала вдвое (!) после обновления до Android 4.0 на том же телефоне. У нас не было времени исследовать дальше, но, может быть, тем временем кто-то еще это сделал?

Можно предположить, что файловая система изменилась и т. д., но я ищу неопровержимые факты. ;)


person Markus Junginger    schedule 12.02.2012    source источник
comment
Просто чтобы быть уверенным, вы использовали стоковый 2.3? Потому что некоторые ПЗУ действительно улучшают производительность ввода-вывода за счет использования разных файловых систем вместе с хаками.   -  person Beowulf Bjornson    schedule 28.02.2012
comment
Да, стоковая ОС. Версия 2.3.6, если я правильно помню.   -  person Markus Junginger    schedule 28.02.2012
comment
Меня это тоже интересует. Файловая система ICS заметно медленнее, чем на старых дроидах, и я не вижу для этого какой-либо очевидной причины.   -  person Reuben Scratton    schedule 28.02.2012
comment
Если вы посмотрите на sqlite.git из исходного дерева Android, то увидите ряд изменений между двумя версиями, характерными для Android. Я бы начал там.   -  person NuSkooler    schedule 28.02.2012
comment
Доступны ли ваши тестовые сценарии? Я не вижу их по вашей ссылке. Какой был тестовый телефон?   -  person George    schedule 01.03.2012
comment
Проверьте исходную ссылку (greendao-orm. com/2011/12/17/sql-performance-in-android-4-0), я обновил пост небольшим инструкцией.   -  person Markus Junginger    schedule 02.03.2012
comment
Просматривая репозиторий git, я нашел следующую фиксацию (github.com/android/platform_frameworks_base/commit/), может ли это быть связано? Ведение журнала с упреждающей записью должно быть быстрее, но я не знаю, в каких версиях оно могло быть включено.   -  person Jörn Horstmann    schedule 08.04.2012


Ответы (1)


В соответствии с этим запись в блоге Sony, разница, похоже, вызвана SQLite Android API:

Еще одно изменение в ICS по сравнению с Gingerbread заключается в том, что Google переместил большую часть обработки SQL с нативного уровня на уровень Java. В наших внутренних исследованиях мы увидели, что операции чтения и записи в базу данных SQL занимают больше времени...

Я хотел бы увидеть последующее расследование, чтобы глубже погрузиться в эту проблему, например. сравнение источников. Кроме того, странно, что Sony утверждает, что производительность чтения ниже, в то время как наши измерения показали улучшение производительности примерно на 40%.

person Markus Junginger    schedule 04.04.2012
comment
Я не могу найти никаких доказательств этого утверждения при изучении исходного кода Android. - person CommonsWare; 23.06.2012