I personnally strive for fewer timers that cause a sequence of actions rather than a bunch that cause single actions. I do this because of neatness and simplicity.

Here are the timers I have running right now...

Code:
* Active timers:
* Timer .internal.timer 1s delay if $isalias(INTERNAL.TIMER.EVENT) { INTERNAL.TIMER.EVENT }
* Timer .failsafe 1s delay if ($isalias(STARTFAILSAFETIMER) != $true) { .timers.* off  .unset %p.* %g.*  .timer.REMOTE.REENABLE -oi 1 60 /REMOTE ON  REMOTE OFF }
* Timer .msec.inc 5ms delay /inc %p.msec.inc 5 | if (%p.msec.inc > 999) %p.msec.inc = 0
* Timer .titlebar.update 50ms delay if $isalias(TITLEBAR.UPDATE)) { TITLEBAR.UPDATE }


The last timer, the "Titlebar updater" is good example of how I approach the problem.

It calls the following function.

Code:
ALIAS -l TITLEBAR.UPDATE {
  if (($appactive != %l.appactive) || ($appstate != %l.appstate)) {
    set %l.appactive $appactive
    set %l.appstate $appstate
    START.TITLEBAR.UPDATE
  }

  set %p.tb -

  ROOTSIGNAL -n TITLEBAR.UPDATE

  if (%p.tb !== $titlebar) {
    /titlebar %p.tb
} }

ALIAS /ROOTSIGNAL { .SIGNAL $1- }



Using this technique, every script file loaded may be called, depending on if an ON *:SIGNAL:TITLEBAR.UPDATE: event exists within that file.

Anyhow, this should explain how to lower the number of timers in a script. I hope it helps.


Beware of MeStinkBAD! He knows more than he actually does!