|
Joined: Apr 2004
Posts: 871
Hoopy frood
|
OP
Hoopy frood
Joined: Apr 2004
Posts: 871 |
A change in the timer management code - possibly linked to point 147 in versions.txt - now causes starting of many timers to be extremely slow. For example: /timertest {
var %i = 1, %t = $ticks
while (%i <= 100) {
.timer 1 5 !
inc %i
}
echo -a on mirc $version $+ , it took $calc($ticks - %t) ms to start 100 timers
} The results on my machine: on mirc 6.16, it took 47 ms to start 100 timers
on mirc 6.17, it took 1563 ms to start 100 timers At least for me this is an unacceptable amount slower..
Saturn, QuakeNet staff
|
|
|
|
Joined: Apr 2004
Posts: 759
Hoopy frood
|
Hoopy frood
Joined: Apr 2004
Posts: 759 |
confirmed here: on mirc 6.16, it took 70 ms to start 100 timers on mirc 6.17, it took 1061 ms to start 100 timers this is a roughly 1500% increase of time .
$maybe
|
|
|
|
Joined: Sep 2003
Posts: 4,230
Hoopy frood
|
Hoopy frood
Joined: Sep 2003
Posts: 4,230 |
on mirc 6.16, it took 47 ms to start 100 timers on mirc 6.17, it took 1563 ms to start 100 timers At least for me this is an unacceptable amount slower.. What do u expect, hes having to do more code now to ensure they start in the order they are created, thus the longer create time. You cant have your cake and eat it too.
|
|
|
|
Joined: Apr 2004
Posts: 871
Hoopy frood
|
OP
Hoopy frood
Joined: Apr 2004
Posts: 871 |
Apart from the fact that I never requested to eat this cake in the first place, maybe you would have had somewhat of a point if the time to create a timer increased as more timers were active. However, as qwerty pointed out to me, this is not the case: every timer creation takes about 10-15ms, regardless of the number of timers active at that moment. No code that checks a single timer could reasonably take 15 ms.
Saturn, QuakeNet staff
|
|
|
|
Joined: Dec 2002
Posts: 5,493
Hoopy frood
|
Hoopy frood
Joined: Dec 2002
Posts: 5,493 |
Indeed it does take more than 15ms: due to the way Windows differentiates and orders timers and WM_TIMER messages, in order to ensure that the timers are triggered in the correct order, mIRC has to ensure there is enough of a millisecond delay inbetween each timer so that Windows will correctly trigger them in the order that they were started. There are no plans to change this I'm afraid.
|
|
|
|
Joined: Apr 2004
Posts: 871
Hoopy frood
|
OP
Hoopy frood
Joined: Apr 2004
Posts: 871 |
It should be easy to let mIRC order them, instead of relying on Windows for this. I can help you with this if necessary, please let me know if you're interested. But in my opinion, having mIRC hang for 15ms every time a timer is started is really not an acceptable remedy for the relatively harmless issue of timer ordering. This cure is worse than the disease..
Actually I would guess that most scripts do not rely on ordering at all, so if you really don't want to fix this then I urge you to add a flag to /timer that orders the timer using this delay (or instead, negate this behaviour). Such timers should only have to be ordered in respect to other ordered timers anyway.
Saturn, QuakeNet staff
|
|
|
|
Joined: Nov 2004
Posts: 842
Hoopy frood
|
Hoopy frood
Joined: Nov 2004
Posts: 842 |
on mirc 6.16, it took 78 ms to start 100 timers on mirc 6.17, it took 1562 ms to start 100 timers
Does it really matter though since how many situations involve 100 timers being loaded at the same time? I think a 1-2 sec lag is pretty easy to live with.
What do you do at the end of the world? Are you busy? Will you save us?
|
|
|
|
Joined: Jan 2003
Posts: 2,523
Hoopy frood
|
Hoopy frood
Joined: Jan 2003
Posts: 2,523 |
I fully agree. Any way of getting the old, fast behaviour back would be great. I'm sure many picture window scripters would agree too, as timers are a frequently used tool in such scripts (including a few of mine, which now run considerably slower).
/.timerQ 1 0 echo /.timerQ 1 0 $timer(Q).com
|
|
|
|
Joined: Apr 2004
Posts: 871
Hoopy frood
|
OP
Hoopy frood
Joined: Apr 2004
Posts: 871 |
Does it really matter though since how many situations involve 100 timers being loaded at the same time? Yes it does matter. It could also be 100 scripts each using one timer. And it will be noticeable with far less than that. I think a 1-2 sec lag is pretty easy to live with. You're kidding, right? We're not talking about network lag, but about mIRC being unresponsive for 1-2 sec, with a 100% CPU spike. If you find that acceptable, then you don't have a very fast PC to begin with..
Saturn, QuakeNet staff
|
|
|
|
Joined: Feb 2004
Posts: 2,019
Hoopy frood
|
Hoopy frood
Joined: Feb 2004
Posts: 2,019 |
Although I understand that Khaled wanted to fix this timer order issue, I also think the fix is worse than the "bugged" version. The difference in performance in some scripts is very noticable, and imho not worth it with the current implementation of the fix.
I hope this will be undone, done differently, or with a flag for those who really care about the order.
Gone.
|
|
|
|
Joined: Feb 2005
Posts: 681
Fjord artisan
|
Fjord artisan
Joined: Feb 2005
Posts: 681 |
The flag idea is a good one, this wasn't worth the sacrifice of performance in my opinion.
|
|
|
|
Joined: Feb 2006
Posts: 32
Ameglian cow
|
Ameglian cow
Joined: Feb 2006
Posts: 32 |
Yeah, I'd agree, add a flag to use the old way, or get Sat to help you on this
|
|
|
|
Joined: Oct 2005
Posts: 1,741
Hoopy frood
|
Hoopy frood
Joined: Oct 2005
Posts: 1,741 |
I think it would be more logical to provide a switch to enable the new method. That way, existing scripts will default to the old method, and anyone needing the high-order-resolution timers can add the switch.
-genius_at_work
|
|
|
|
Joined: Feb 2005
Posts: 681
Fjord artisan
|
Fjord artisan
Joined: Feb 2005
Posts: 681 |
This is what I meant as well, revert back to the old and add a switch for the new method.
|
|
|
|
Joined: Jul 2003
Posts: 655
Fjord artisan
|
Fjord artisan
Joined: Jul 2003
Posts: 655 |
Agreed, only just noticed this myself while testing some changes on my multiserver script, for testing puposes i had as little as 20 servers and it was very much noticable. (not due to slow pc by any means). Reverting back to the old method and providing a flag to enable the new method would be great if at all possible.
"Allen is having a small problem and needs help adjusting his attitude" - Flutterby
|
|
|
|
Joined: Aug 2003
Posts: 72
Babel fish
|
Babel fish
Joined: Aug 2003
Posts: 72 |
I agree too, I would like to see a flag to enable or disable new timer ordering method
|
|
|
|
Joined: Jun 2003
Posts: 9
Nutrimatic drinks dispenser
|
Nutrimatic drinks dispenser
Joined: Jun 2003
Posts: 9 |
I agree. I would like to see a flag for timer ordering method.
|
|
|
|
Joined: Feb 2006
Posts: 1
Mostly harmless
|
Mostly harmless
Joined: Feb 2006
Posts: 1 |
The speed in which timer's are being executed on 6.17 is indeed 'unacceptable'. The ‘timer loop method’ which has been used by many scripters over the last few years is now almost useless. Version 6.17 has left only one fast method to perform multiple, repeated instruction on mIRC. This is through the use of while loops, which as we know consume 100% cpu usage, are unstable, and often cause mIRC to freeze.
I agree with the flag proposition. Ordered timer's are not worth the current drop in performance.
|
|
|
|
Joined: Mar 2004
Posts: 3
Self-satisified door
|
Self-satisified door
Joined: Mar 2004
Posts: 3 |
uff the diference its too big. the problem doesn't only affect picwinners.. the timers loops its the only way to do recursive calls and non-frosen iteractions... a speed decrease like that made useless too muchs of my scripts... PD:my apollogies for mi english
|
|
|
|
Joined: Feb 2005
Posts: 681
Fjord artisan
|
Fjord artisan
Joined: Feb 2005
Posts: 681 |
Khaled: " As for the timer, I'll be changing it in the next version so that the ordering only works when a switch is specified, so it will return back to it's normal speed."
|
|
|
|
|