|Bill Allombert on Wed, 09 Sep 2009 15:09:22 +0200|
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
|Re: TRY/CATCH is unnecessarily slow on OS X|
On Wed, Sep 09, 2009 at 06:01:19AM +0200, Lorenz Minder wrote: > Hi Bill, > > Great. This looks very acceptable. > > I guess the question now is: Given that TRY/CATCH is meant only for > internal use, and that a different error handling mechanism is under way, > do you think the number of uses of those macros in libpari warrant a patch > that uses _setjmp() when possible? There is still the issue that PARI should behave in the same way on all system. Imagine the user change the signal blocked set asynchronously during TRY/CATCH and their changes get reverted on some system and not others... (and it depends on the race condition...) Looking at your patch it seems that: 1) you are doing getrusage(RUSAGE_SELF,...) instead of getrusage(0,...) Your code seems more correct, I do not know why PARI does getrusage(0,...) 2) You add the system time to the user time. This would change PARI behaviour. 3) You are initializing T before calling TIMER() in TIMERstart. That should not be necessary, because the return value of TIMER() is discarded, but this is probably cleaner this way. So I do not see how this avoid the negative timing. Cheers, Bill.