OpenWiki

Hack Slowdown

Palm Notes | Recent Changes | Title Index | User Preferences | Random Page | Help
Difference from prior major revision.
minor diff author diff hide diff

Технический 
комментарий: 
Некоторые 
хаки 
способны 
производить 
неочевидное 
замедление 
системы. Что 
происходит:
 
PalmOS является event-driven 
системой. 
Имеется 
очередь 
событий. 
События 
генерируют 
кнопки, 
нажатия на 
экран итд. 
Активное 
приложение 
выгребает 
очередь 
функцией EvtGetEvent. 
Потом оно 
передает их 
функции SysHandleEvent 
которая 
обрабатывает системные эвенты (запускает приложение по кнопке, выключает пальму итд). 
  
Нехорошие
хаки
вешаются на
одну из этих
двух функций
и в ответ на
каждую
обработку
каждого
эвента
делают свое
темное дело.
Например,
отслеживают
время, заряд
батареи и
состояние
подсветки.
  
Теперь про 
производительность.
Честный
бенчмарк
просто
производит
вычисления,
оставив
очередь
сообщений в
покое. При
этом такой
хак никак не
влияет на
результаты
бенчмарка. Но
при активном 
использовании
устройства
ситуация
изменяется.
Частые
нажатия
кнопок ведут
к частой
генерации
событий и к
частому
исполнению
кода хака. 
Соответственно
реакция на
кнопки или
клики
замедляется.
Еще хуже,
может 
переполниться
очередь
сообщений. 
Соответственно
получается В
этом случае
создается
ситуация,
когда
бенчмарк
никакого
замедления
не
показывает,
но оно
ощущается.
машинка
тормозит.
  
Пример 1: 
кирхак 1 для 
экономии 
держал 
шрифты 
только в 
кодировке 1251. 
для прочих 
строилась 
динамически 
таблица 
перекодировки. Этой работы хватало, чтобы на медленных устройствах перерисовка была заметна. Версия Lite была лишена разных кодировок и работала быстрее. Тест из QuickBits эту разницу хорошо видел, поскольку тестировал вывод текста. 
  
Пример 2: на 
хандере была 
программа SilkClockHack, 
которая 
рисовала в 
области 
виртуального граффити часы, свободную память и заряд батареи. Но поскольку эта программа вешалась хаком на SysHandleEvent, то перерисовка шла на каждое событие. При вводе с внешней клавиатуры замедление становилось весьма существенным. Мой SilkMan обновлял информацию в области граффити по таймеру раз в 10 секунд. При этом это не ощущалось при вводе с клавиатуры, но ощущалось при записи на диктофон. 
  
Пример 3. Клон 
арканоида Breakout 
вышел вот с 
таким 
изменением: 
"<code>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. </code>". 
  
Мораль: 
вешаться на 
сисколлы со 
словом 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 (hide diff)