I have spent some time now getting to know uTasker, and I think I may have seen some room for improvement on the scheduler/driver.
First, all operations on tasks use a linear search through the task table to find the appropriate task. By sorting the tasks, you can use a binary search that should reduce the runtime of searches.
But even without this, it could be possible to cache the index of tasks you care about. These can be global variables that are set on startup and used instead of the character constants. This eliminates the need to search whatsoever.
In addition, the timer resources involve a linear search as well, and this could easily be cached on startup (in fact the index is present in nr_of_timers in the start function).
I don't know what the performance/power consumption is without these changes, but I expect from all the calls to things like sending events and waking up tasks that this can save a significant amount of cycles. What do you think?
-Steve