Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Java-код, разница времени выполнения 
:(
    Опции темы
wertklop
Дата 21.8.2013, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.9.2008

Репутация: нет
Всего: нет



Всем привет

Пишу библиотеку под Android. Некоторый её функционал повторяет функционал из пакета android.database.sqlite. В частности, есть 2 метода, один из моей библиотеки, другой из sqlite. На некотором этапе они вызывают один и тот же метод стандартной библиотеки Java "int java.lang.String.indexOf(int ch)", который мало того, что выполняется с разным временем исполнения, так ещё и появляется "(context switch)", который увеличивает время выполнения в целом. Ниже представлены скрины профайлера для вызова из моего метода
user posted image

и для метода Android'a
user posted image

Методы я профилирую заключая их между "Debug.startMethodTracing("name method");" и "Debug.stopMethodTracing();"
Протестировав некоторое время и перезагрузив устройство, стало понятно, что время выполнения методов примерно одинаково и скорее всего зависит от работы самой Android OS. А вот "(context switch)" не исчезает при выполнении моей библиотеки. Данное явление наблюдается практически во всех вызовах, что соответственно увеличивает общее время выполнения моего кода и намного отстает от кода sqlite в целом.
Тут человек описывает похожую ситуацию, но мне ничего особого не дало.
Подскажите, с чем может связано такое поведение?

Это сообщение отредактировал(а) wertklop - 3.9.2013, 16:44
PM MAIL   Вверх
wertklop
Дата 3.9.2013, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.9.2008

Репутация: нет
Всего: нет



Вопрос не решен, помогите, пожалуйста
PM MAIL   Вверх
LSD
Дата 4.9.2013, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Ты не там спрашиваешь. context switch вещь сугубо специфичная для конкретной реализации и Davlik это не JVM.
Ты профилировал на устройстве или эмуляторе?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
wertklop
Дата 4.9.2013, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.9.2008

Репутация: нет
Всего: нет



Цитата(LSD @ 4.9.2013,  09:42)
Ты не там спрашиваешь. context switch вещь сугубо специфичная для конкретной реализации и Davlik это не JVM.
Ты профилировал на устройстве или эмуляторе?

Профилировал и на устройстве и на эмуляторе, разница только во времени выполнения "(context switch)"
А где по вашему мне спрашивать?
PM MAIL   Вверх
LSD
Дата 4.9.2013, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(wertklop @  4.9.2013,  12:05 Найти цитируемый пост)
А где по вашему мне спрашивать?

Тут (хотя я и сомневаюсь, что там кто нибудь знает).

Все что мне удалось нагуглить, это что context switch вызывается при проверках пермиссий. Возможно что код самого Dalvik и пользовательский работает с разным уровнем привилегий, что и вызывает context switch.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
wertklop
Дата 4.9.2013, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.9.2008

Репутация: нет
Всего: нет



Цитата(LSD @ 4.9.2013,  13:17)
Цитата(wertklop @  4.9.2013,  12:05 Найти цитируемый пост)
А где по вашему мне спрашивать?

Тут (хотя я и сомневаюсь, что там кто нибудь знает).

Все что мне удалось нагуглить, это что context switch вызывается при проверках пермиссий. Возможно что код самого Dalvik и пользовательский работает с разным уровнем привилегий, что и вызывает context switch.

Т.е. по этому и происходит вызов "(context switch)", если код вызывается из моего приложения, а из кода Android нет?
Может есть какие-то способы не вызывать "(context switch)" или хотя бы уменьшить время его исполнения?

Кстати, ещё вопрос, что конкретно означает вызов "self"? Почему у него такое большое время выполнения?Как его уменьшить?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0980 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.