множественный if () или чтение из базы данных быстрее? - PullRequest
0 голосов
/ 06 февраля 2011

Мне нужно в onCreate () прочитать некоторые значения, основанные на значении, которое хранится в SharedPrefferences ... Так что я могу получить значения, которые мне нужны после многих операторов if elseif или чтения значений из базы данных!Который будет быстрее?кратный if или поиск и чтение из БД?

Ответы [ 2 ]

1 голос
/ 06 февраля 2011

If сами по себе не являются проблемой.Если они не вызывают функции с интенсивным использованием процессора, то они будут очень быстрыми, особенно на Froyo или позже, благодаря JIT.Чтение из БД может быть очень быстрым, но также может быть очень медленным.NAND непредсказуем с точки зрения производительности, и параллельный ввод-вывод приведет к заметной задержке.Если вы уверены, что не используете тяжелые функции в своих ifs, я бы пошел с ними.

Лучший способ - заключить фрагмент кода в // начало трассировки в "/ sdcard / calc.trace "Debug.startMethodTracing (" calc ");// ... // прекращаем трассировку Debug.stopMethodTracing ();(взято из http://developer.android.com/guide/developing/tools/traceview.html). Затем получите файл с SD-карты, откройте в Traceview и сравните обе альтернативы. Другой, более простой способ - это Log.d (TAG, «Start:» + System.currentTimeMillis ());сделайте свой код, затем Log.d (TAG, "End:" + System.currentTimeMillis ()); Сделайте это для обеих альтернатив и посмотрите, какая из них была быстрее.

Подробнее о теме здесь: http://developer.android.com/guide/practices/design/performance.html

0 голосов
/ 06 февраля 2011

Согласен с @kread, но вот мое уведомление. Что касается меня, чтение из БД не должно выполняться в методе onCreate (), так как это операция ввода-вывода. Это может заметно заблокировать поток GUI. Запрос БД должен быть перенесен в отдельный поток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...