OpenWiki

Hack Slowdown

Edit this page (last edited September 1, 2003)
Palm Notes | Recent Changes | Title Index | User Preferences | Random Page | Help
Технический комментарий: Некоторые хаки способны производить неочевидное замедление системы. Что происходит:

Palm OS является event-driven системой. Имеется очередь событий. События генерируют кнопки, нажатия на экран итд. Активное приложение выгребает очередь функцией EvtGetEvent?. Потом оно передает их функции SysHandleEvent? которая обрабатывает системные эвенты (запускает приложение по кнопке, выключает пальму итд).

Нехорошие хаки вешаются на одну из этих двух функций и в ответ на обработку каждого эвента делают свое темное дело. Например, отслеживают время, заряд батареи и состояние подсветки.

Теперь про производительность. Честный бенчмарк просто производит вычисления, оставив очередь сообщений в покое. При этом такой хак никак не влияет на результаты бенчмарка. Но при активном использовании устройства ситуация изменяется. Частые нажатия кнопок ведут к частой генерации событий и к частому исполнению кода хака. Соответственно реакция на кнопки или клики замедляется. Еще хуже, может переполниться очередь сообщений. В этом случае создается ситуация, когда бенчмарк никакого замедления не показывает, но машинка тормозит.

Пример 1: кирхак 1 для экономии держал шрифты только в кодировке 1251. для прочих строилась динамически таблица перекодировки. Этой работы хватало, чтобы на медленных устройствах перерисовка была заметна. Версия Lite была лишена разных кодировок и работала быстрее. Тест из Quick Bits эту разницу хорошо видел, поскольку тестировал вывод текста.

Пример 2: на хандере была программа Silk Clock Hack, которая рисовала в области виртуального граффити часы, свободную память и заряд батареи. Но поскольку эта программа вешалась хаком на SysHandleEvent?, то перерисовка шла на каждое событие. При вводе с внешней клавиатуры замедление становилось весьма существенным. Мой Silk Man обновлял информацию в области граффити по таймеру раз в 10 секунд. При этом это не ощущалось при вводе с клавиатуры, но ощущалось при записи на диктофон.

Пример 3. Клон арканоида Breakout вышел вот с таким изменением: "contain some code that limit the big slowdowns due to pen related hacks (or "kind of hacks" for Palm OS 5 devices), when using the stylus. ".

Мораль: вешаться на сисколлы со словом Event опасно.

Список сисколлов, на которые вешается хак можно посмотреть в свойствах хака.

Palm Notes | Recent Changes | Title Index | User Preferences | Random Page | Help
Edit this page | View other revisions
Print this page | View XML
Find page by browsing, searching or an index
Edited September 1, 2003 (diff)
Valid XHTML 1.0!Valid CSS!