User Tools

Site Tools


hackslowdown

Технический комментарий: Некоторые хаки способны производить неочевидное замедление системы. Что происходит:

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

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

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

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

Пример 2: на хандере была программа SilkClockHack, которая рисовала в области виртуального граффити часы, свободную память и заряд батареи. Но поскольку эта программа вешалась хаком на SysHandleEvent, то перерисовка шла на каждое событие. При вводе с внешней клавиатуры замедление становилось весьма существенным. Мой SilkMan обновлял информацию в области граффити по таймеру раз в 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 опасно.

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

hackslowdown.txt · Last modified: 2003/09/01 07:14 by 127.0.0.1