-<ow:wiki version="0.91" encoding="windows-1251" mode="diff">
 <ow:useragent>CCBot/2.0 (https://commoncrawl.org/faq/)</ow:useragent>
 <ow:location>http://wiki.palmoid.com/</ow:location>
 <ow:scriptname>ow.asp</ow:scriptname>
 <ow:imagepath>ow/images</ow:imagepath>
 <ow:iconpath>ow/images/icons</ow:iconpath>
 <ow:about>http://wiki.palmoid.com/ow.asp?p=HackSlowdown&a=diff&revision=&xml=1</ow:about>
 <ow:title>O p e n W i k i</ow:title>
 <ow:frontpage name="PalmNotes" href="ow.asp?PalmNotes">Palm Notes</ow:frontpage>
-<ow:userpreferences>
 <ow:cols>55</ow:cols>
 <ow:rows>25</ow:rows>
 <ow:username />
-<ow:bookmarks>
 <ow:link name="PalmNotes" href="ow.asp?PalmNotes">Palm Notes</ow:link>
 <ow:link name="RecentChanges" href="ow.asp?RecentChanges">Recent Changes</ow:link>
 <ow:link name="TitleIndex" href="ow.asp?TitleIndex">Title Index</ow:link>
 <ow:link name="UserPreferences" href="ow.asp?UserPreferences">User Preferences</ow:link>
 <ow:link name="RandomPage" href="ow.asp?RandomPage">Random Page</ow:link>
 <ow:link name="Help" href="ow.asp?Help">Help</ow:link>
 </ow:bookmarks>
 <ow:prettywikilinks />
 <ow:opennew />
 <ow:emoticons />
 <ow:bookmarksontop />
 <ow:editlinkontop />
 <ow:trailontop />
 </ow:userpreferences>
-<ow:trail>
 <ow:link name="HackSlowdown" href="ow.asp?HackSlowdown">Hack Slowdown</ow:link>
 </ow:trail>
-<ow:diff type="major" from="7" to="8">
 Технический комментарий: Некоторые хаки способны производить неочевидное замедление системы. Что происходит: PalmOS является event-driven системой. Имеется очередь событий. События генерируют кнопки, нажатия на экран итд. Активное приложение выгребает очередь функцией EvtGetEvent. Потом оно передает их функции SysHandleEvent которая обрабатывает системные эвенты (запускает приложение по кнопке, выключает пальму итд). Нехорошие хаки вешаются на одну из этих двух функций и в ответ на
 <strike class="diff"> каждую</strike>
  обработку
 <u class="diff"> каждого</u>
  эвента делают свое темное дело. Например, отслеживают время, заряд батареи и состояние подсветки. Теперь про производительность. Честный бенчмарк просто производит вычисления, оставив очередь сообщений в покое. При этом такой хак никак не влияет на результаты бенчмарка. Но при активном использовании устройства ситуация изменяется. Частые нажатия кнопок ведут к частой генерации событий и к частому исполнению кода хака. Соответственно реакция на кнопки или клики замедляется. Еще хуже, может переполниться очередь сообщений.
 <strike class="diff"> Соответственно получается</strike>
 <u class="diff"> В этом случае создается</u>
  ситуация, когда бенчмарк
 <u class="diff"> никакого</u>
  замедления не показывает, но
 <strike class="diff"> оно ощущается.</strike>
 <u class="diff"> машинка тормозит.</u>
  Пример 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 опасно. Список сисколлов, на которые вешается хак можно посмотреть в свойствах хака.
 </ow:diff>
-<ow:page name="HackSlowdown" changes="2" lastminor="8" lastmajor="8">
 <ow:link name="HackSlowdown" href="ow.asp?HackSlowdown" date="2003-09-01T11:14:00+01:00">Hack Slowdown</ow:link>
-<ow:change revision="8" status="updated" minor="false">
 <ow:by name="80.240.104.xxx" />
 <ow:date>2003-09-01T11:14:00+01:00</ow:date>
 </ow:change>
-<ow:body>
 Технический комментарий: Некоторые хаки способны производить неочевидное замедление системы. Что происходит:
 <p />
 <ow:link name="PalmOS" href="ow.asp?PalmOS" date="2003-05-13T18:59:32+01:00">Palm OS</ow:link>
  является event-driven системой. Имеется очередь событий. События генерируют кнопки, нажатия на экран итд. Активное приложение выгребает очередь функцией
 <ow:link name="EvtGetEvent" href="ow.asp?p=EvtGetEvent&a=edit">EvtGetEvent</ow:link>
 . Потом оно передает их функции
 <ow:link name="SysHandleEvent" href="ow.asp?p=SysHandleEvent&a=edit">SysHandleEvent</ow:link>
  которая обрабатывает системные эвенты (запускает приложение по кнопке, выключает пальму итд).
 <p />
  Нехорошие хаки вешаются на одну из этих двух функций и в ответ на обработку каждого эвента делают свое темное дело. Например, отслеживают время, заряд батареи и состояние подсветки.
 <p />
  Теперь про производительность. Честный бенчмарк просто производит вычисления, оставив очередь сообщений в покое. При этом такой хак никак не влияет на результаты бенчмарка. Но при активном использовании устройства ситуация изменяется. Частые нажатия кнопок ведут к частой генерации событий и к частому исполнению кода хака. Соответственно реакция на кнопки или клики замедляется. Еще хуже, может переполниться очередь сообщений. В этом случае создается ситуация, когда бенчмарк никакого замедления не показывает, но машинка тормозит.
 <p />
  Пример 1: кирхак 1 для экономии держал шрифты только в кодировке 1251. для прочих строилась динамически таблица перекодировки. Этой работы хватало, чтобы на медленных устройствах перерисовка была заметна. Версия Lite была лишена разных кодировок и работала быстрее. Тест из
 <ow:link name="QuickBits" href="ow.asp?QuickBits" date="2003-06-05T16:23:08+01:00">Quick Bits</ow:link>
  эту разницу хорошо видел, поскольку тестировал вывод текста.
 <p />
  Пример 2: на хандере была программа
 <ow:link name="SilkClockHack" href="ow.asp?SilkClockHack" date="2003-07-09T19:34:37+01:00">Silk Clock Hack</ow:link>
 , которая рисовала в области виртуального граффити часы, свободную память и заряд батареи. Но поскольку эта программа вешалась хаком на
 <ow:link name="SysHandleEvent" href="ow.asp?p=SysHandleEvent&a=edit">SysHandleEvent</ow:link>
 , то перерисовка шла на каждое событие. При вводе с внешней клавиатуры замедление становилось весьма существенным. Мой
 <ow:link name="SilkMan" href="ow.asp?SilkMan" date="2003-08-13T13:03:21+01:00">Silk Man</ow:link>
  обновлял информацию в области граффити по таймеру раз в 10 секунд. При этом это не ощущалось при вводе с клавиатуры, но ощущалось при записи на диктофон.
 <p />
  Пример 3. Клон арканоида Breakout вышел вот с таким изменением: "
 <tt>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. </tt>
 ".
 <p />
  Мораль: вешаться на сисколлы со словом Event опасно.
 <p />
  Список сисколлов, на которые вешается хак можно посмотреть в свойствах хака.
 </ow:body>
 </ow:page>
 </ow:wiki>