summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | merge resp. reintegrate sebres-8-5-event-perf-branch to 8.6sebres2017-07-1024-15366/+9553
|\ \ \ \ | |/ / /
| * | | performance test cases extended sebres2017-07-031-8/+37
| | | |
| * | | cleanup... sebres2017-07-031-17/+1
| | | |
| * | | after at: added simple workaround for absolute timers/sleep ("after at ↵sebres2017-07-032-3/+200
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | real-time"): because we use monotonic time in all wait functions, so to avoid too long wait by the absolute timers (to be able to trigger it) if time jumped to the expected absolute time, just let block for maximal 1 second if absolute timers available. test-cases: time-jumps (TIP #302) test covered now. Note: on some platforms it is only possible if the user has corresponding privileges to change system date and time. Ex.: sudo LD_LIBRARY_PATH=. ./tclsh ../tests/timer.test -match timer-20.*
| * | | code review and small optimizations sebres2017-07-032-36/+37
| | | |
| * | | fix check event source threshold (corresponds 100-ns ranges, if the ↵sebres2017-07-031-38/+51
| | | | | | | | | | | | | | | | | | | | | | | | wide-clicks supported); because of variable width of 1 wide-click: windows - frequency dependent, unix - nanoseconds, darwin/osx - tb.numer / tb.denom nanoseconds.
| * | | unix: implements wide-clicks on unix (1 wide-click == 0.001 microseconds (1 ↵sebres2017-07-033-13308/+4979
| | | | | | | | | | | | | | | | | | | | | | | | nanosecond)), so more precise now (e. g. by time measurement etc.); unix/configure: regenerated (autoconf)
| * | | [unix] fixes conditional-wait: timeout is monotonic based; sebres2017-07-031-3/+13
| | | |
| * | | Introduced monotonic time as ultimate fix for time-jump issue (fixed for ↵sebres2017-07-0311-435/+393
| | | | | | | | | | | | | | | | | | | | | | | | | | | | windows and unix now, TIP #302 fully implemented now); Usage of monotonic time instead of adjustment via timeJump/timeJumpEpoch is more precise and effective. New sub-command "clock monotonic" to provide monotonic time facility for tcl-level.
| * | | don't cancel scheduled event as long as the event list is not bidirectional ↵sebres2017-07-031-1/+9
| | | | | | | | | | | | | | | | (too slow by large queue) - rewritten to cancel delayed (by execute it).
| * | | fixed timer-marker handling: timer should be always executed after queued ↵sebres2017-07-036-197/+230
| | | | | | | | | | | | | | | | | | | | | | | | event (of the same generation), it was marked (be sure it marked to immediate execution in corresponding checkProc only). tclIO: scheduled event rewritten using Tcl_Event instead of timer event (IO is not timer, e. g. executed also by usage of `vwait -notimer ...`, etc).
| * | | interim commit: trying to pass test-cases - timer-3.*, chan-io-29.34, ↵sebres2017-07-033-60/+118
| | | | | | | | | | | | | | | | socket-2.12 (busy prompt timer, unexpected too early timer event, wrong timer-marker usage)
| * | | Merge branch 'fix-busy-prompt-timers' into event-perf-branch: sebres2017-07-031-34/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * Amend to timer-marker: dualize special state of timer-marker (to differentiate between timer generations), so: INT2PTR(-1) - exec immediate (marker reached); INT2PTR(-2) - check in the next-cycle (marker reached only if no other events available); Avoids permanent busy execution of prompt-events (always busy in timer), if they regenerate itself continuously for waiting for other events (like writable/readable), see e. g. socket-2.12.
| * | | "after at" set factor to 1000000 (seconds), test cases fixed sebres2017-07-033-13/+13
| | | |
| * | | code review, rewrite tclTimer, prolongation, etc. sebres2017-07-037-404/+593
| | | |
| * | | interim commit: code review, rewrite tclTimer, etc. sebres2017-07-035-111/+219
| | | |
| * | | revert dual lists (relative/absolute) back to single list (because of better ↵sebres2017-07-031-109/+63
| | | | | | | | | | | | | | | | handling, a bit faster, etc.)
| * | | amend with review sebres2017-07-032-19/+56
| | | |
| * | | don't use tolerance in vwait, because of dual usage, it causes canceling of ↵sebres2017-07-031-8/+2
| | | | | | | | | | | | | | | | wait before end-time, on small timeout values (like 0.5, etc.)
| * | | interim commit: trying to resolve time-freezes with new facilities ↵sebres2017-07-037-270/+362
| | | | | | | | | | | | | | | | timeJump/timeJumpEpoch
| * | | interim commit: trying to resolve time-freezes with new facilities ↵sebres2017-07-035-194/+454
| | | | | | | | | | | | | | | | timeJump/timeJumpEpoch
| * | | call TclWinResetTimerResolution at end of sleep resp. wait for event (no ↵sebres2017-07-031-10/+18
| | | | | | | | | | | | | | | | calibration thread anymore)
| * | | win: calibration cycle completely rewritten (no calibration thread needed, ↵sebres2017-07-032-613/+222
| | | | | | | | | | | | | | | | | | | | | | | | soft drifts within 250ms intervals, fewer discrepancy and fewer virtual time gradation, etc). todo: implement resetting timer-resolution to original value (without calibration thread now).
| * | | interim commit: amend with optimization sebres2017-07-031-53/+159
| | | |
| * | | interim commit: time-drift backwards fix... (try to resolve using counter ↵sebres2017-07-031-168/+187
| | | | | | | | | | | | | | | | variance + frequency factor)
| * | | interim commit: time-drift backwards fix... (try to resolve using frequency ↵sebres2017-07-031-222/+86
| | | | | | | | | | | | | | | | factor)
| * | | interim commit: time-drift backwards fix... sebres2017-07-031-27/+78
| | | |
| * | | interim commit: try to fix time-drift backwards (calibration? something ↵sebres2017-07-033-45/+80
| | | | | | | | | | | | | | | | else?)...
| * | | interim commit: try to fix time-drift backwards (too long offset after ↵sebres2017-07-033-143/+260
| | | | | | | | | | | | | | | | calibration? something else?)...
| * | | extended performance test-cases (test-nrt-capability): RTS-near sleeps with ↵sebres2017-07-031-0/+12
| | | | | | | | | | | | | | | | very brief sleep-time.
| * | | chanio.test: optimize several tests cases running too long (shorten unwanted ↵sebres2017-07-031-6/+6
| | | | | | | | | | | | | | | | large sleeps)
| * | | bug fix: prevent setting of negative block-time by too few initial ↵sebres2017-07-031-6/+8
| | | | | | | | | | | | | | | | wait-time, that may expire immediately (for example `vwait 0.0001 test`).
| * | | extended performance test-cases (test-nrt-capability): covering of brief ↵sebres2017-07-031-0/+29
| | | | | | | | | | | | | | | | wait-times and other RTS-near constructs.
| * | | [unix] optimized Tcl_WaitForEvent similar to windows changes (makes Tcl for ↵sebres2017-07-032-89/+226
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | *nix more "RTS" resp. NRT-capable): - more precise waiting now (e.g. still microseconds by time up to 0.005 ms), important since after/vwait accepting microseconds (double); - avoids too long waiting on *nix wait/sleep primitives, e. g. by `timerate {vwait 0 a}` - 1.5µs now vs. 31.9µs before; - extended with new internal function TclpSleep (in contrast to Tcl_Sleep accept Tcl_Time, so microseconds);
| * | | added performance test-cases to cover timer-events speed resp. event-driven ↵sebres2017-07-032-0/+270
| | | | | | | | | | | | | | | | | | | | | | | | tcl-handling (cherry-picked and back-ported from tclSE-9)
| * | | fix sporadic errors on some fast cpu/platforms (because bgerror executed in ↵sebres2017-07-031-8/+15
| | | | | | | | | | | | | | | | background and it is an idle-event, give enough time to process it (resp. wait until last idle event is done);
| * | | make timer test-case more precise and time-independent, ignores short ↵sebres2017-07-031-138/+119
| | | | | | | | | | | | | | | | | | | | | | | | tolerance (deviation by waiting); several time-independent test-cases optimized (wait shorter now) + some new cases to cover more situations.
| * | | after info, after cancel: compare interpreter of the timer-events by direct ↵sebres2017-07-032-2/+28
| | | | | | | | | | | | | | | | retrieving via internal representation (ignore foreign events), test cases extended.
| * | | resolved some warnings / fixed unix resp. x64 compilation sebres2017-07-033-6/+5
| | | |
| * | | code review + better usage of the waiting tolerance (fewer CPU-greedy now, ↵sebres2017-07-034-34/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | avoid busy-wait if the rest of wait-time too small and can be neglected); TMR_RES_TOLERANCE can be defined to use wait-tolerance on *nix platforms (currently windows only as relation resp. deviation between default timer resolution 15.600 in exact milliseconds, means 15600/15000 + small overhead); Decreasing of TMR_RES_TOLERANCE (up to 0) makes tcl more "RTS" resp. NRT-capable (very precise wait-intervals, but more CPU-hungry).
| * | | [win] fallback to replace C++ keyword "inline" with C keyword "__inline" sebres2017-07-031-0/+10
| | | | | | | | | | | | | | | | | | | | Otherwise depending on the VC-version, context, include-order it can cause: error C2054: expected '(' to follow 'inline'
| * | | [win32] use timer resolution handling in Tcl_Sleep also; sebres2017-07-032-20/+75
| | | |
| * | | Use auto-reset event object (system automatically resets the event state to ↵sebres2017-07-031-2/+1
| | | | | | | | | | | | | | | | nonsignaled after wake-up), avoids unwanted reset if wake-up for some other reasons (timeout/aio/message).
| * | | optimization of Tcl_LimitExceeded by internal usage (tclInt header) sebres2017-07-032-0/+10
| | | |
| * | | dynamic increase of timer resolution corresponding wait-time; sebres2017-07-036-74/+386
| | | | | | | | | | | | | | | | non-blocking wait for event - if block-time set outside an event source traversal, use it as timeout, so can return with result 0 (no events);
| * | | [enhancement] extend "vwait" with same options as "update", new syntax ↵sebres2017-07-036-89/+151
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "vwait ?options? ?timeout? varname". some small improvements and fixing: - Tcl_DoOneEvent can wait for block time that was set with Tcl_SetMaxBlockTime outside an event source traversal, and stop waiting if Tcl_SetMaxBlockTime was called outside an event source (another event occurs and interrupt waiting loop), etc; - safer more precise pre-lookup by options (use TclObjIsIndexOfTable instead of simply comparison of type with tclIndexType); test cases extended to cover conditional "vwait" usage;
| * | | interim commit: try to extend "vwait" with same options as "update" sebres2017-07-032-61/+121
| | | |
| * | | [performance] do one event (update / event servicing) cycle optimized ↵sebres2017-07-036-69/+326
| | | | | | | | | | | | | | | | | | | | | | | | | | | | (introduced threshold to prevent sourcing resp. waiting for new events by no-wait). [enhancement] new event type introduced: TCL_ASYNC_EVENTS, command "update" becomes options to process only specified types, resp. to bypass some event types (including -idle/-noidle that in opposite to "idletasks" does not included window events); test cases extended.
| * | | command "vwait" extended with timeout argument (in ms), 0 could be used to ↵sebres2017-07-032-10/+140
| | | | | | | | | | | | | | | | | | | | | | | | process pending events only (without wait), negative value equivalent execution of "vwait" without timeout (infinite); test cases fixed and extended;
| * | | [performance] much better handling for timer events within Tcl_ServiceEvent ↵sebres2017-07-034-138/+51
| | | | | | | | | | | | | | | | | | | | | | | | using timer marker in the queue and direct call of TclServiceTimerEvents if marker reached (instead of continuous adding handler event, polling it in the queue and removing hereafter); this provides double performance increase in the service cycle;