Как известно, под пятой осью обычные хаки не работают. вместо этого пальмсорс предложил использовать механизм нотификаций. именно с его помощью тилмастер эмулирует работу хаков.
В старых пальмосах существовал эффект замедления работы системы от хаков, которые вешаются на сисколл EvtGetEvent. (см HackSlowdown ).
В пятой оси на EvtGetEvent повешено оповещение всех подписчиков о нотификации sysNotifyEventDequeuedEvent. В подписчики можно записать практически все программы, у которых интерфейс состоит из больших кнопок enable/disable кучи опций. Интересно было, насколько подобные утилиты тормозят систему.
Я написал программку, которая 10000 раз запихивает в очередь символ и сразу же извлекает его. Соответственно 10000 будет происходить оповещение об извлечениии события из очереди.
Измерения производились на nx60. Время замерялось в секундах и тиках. Тик - примерно 1/10 секунды (с точностью до неких особенностей). Наличие подписчиков нотификаций определялось alarmlistом.
Результаты:
- Без утилит: 254 тика, 3 секунды.
- С McPhling: 2284 тика, 23 секунды.
- С McPhling и Cyrhack: 7318 тиков, 74 секунды
- С двумя нативными хаками (BrokenJog и Deadhack): 291 тик, 3 секунды
При оповещении McPhling вызывается процедура, при оповещении Cyrhack вызывается программа.
Нужно заметить, что программы были выбраны из тех, что стояли на машине, точно такие же замедления будут с _любыми_ программами, регистрирующимися подобным образом. В очередь помещался символ, который обоими программами просто игнорировался.
Замер времени расхода батареи по Battery Bench 2. Brightness 20%, Full power.
- Без утилит: 4:15
- С McPhling, Cyrhack: 4:07
Мораль: машинка может легко замедлиться в 30 раз. Это несущественно сказывается на времени ее жизни. Такое замедление не будет заметно в PIM приложениях, но будет ощущаться в игрушках и при работе с клавиатурой. Так что будьте внимательны, любители резидентных утилит.
Добавление: мини-доклад с пилотовки 20.04.04
С помощью программы Palm Internals (бывший AlarmList) можно измерить замедление реакции КПК, вносимое разными программами. Тестирование заключается в измерении времени обработки 10000 системных событий. Время измеряется в секундах и тиках (1/100 секунды) http://yahm.palmoid.com/PalmInternals.prc Полученные данные по замедлению, которое вносят русификаторы. Измерялось на моей NX-60. КПК без русского: 254 тик, 3 сек. Кирхак 1.10пре: 5694 тик, 58 сек Пилок 3.5: 276 тик, 3 сек Папирус 1.10: 7894 тик,79 сек С одной стороны 10000 событий - это очень много, в то же время добавление к русификатору программ McPhling, KeyQuick OKey и прочих псевдо-хаков может быть существенным. Замедление может сказаться на точности позиционирования стила, на точности распознавания граффити и на скорости ввода букв через граффити-клавиатуру.