Posted to tcl by sebres at Wed Jul 24 15:02:21 GMT 2019view pretty

Here is a short summary of performance measure tests over all tcl-versions (8.5-8.7),
after my last timerate optimization (don't smudge by result set/reset, no overhead of done instruction anymore).

         | calibration, estim. overhead | incr i                        | set v $i
  -------|------------------------------|-------------------------------|--------------------
  tcl8.7 | 0.042126 µs/# 23738327 #/sec | 0.016987 µs/#  58869380 #/sec | 0.006242 µs/# 160200364 #/sec
  tcl8.6 | 0.040702 µs/# 24568897 #/sec | 0.006164 µs/# 162226955 #/sec | 0.006254 µs/# 159890545 #/sec
  tcl8.5 | 0.024152 µs/# 41403887 #/sec | 0.006322 µs/# 158168718 #/sec | 0.006136 µs/# 162983449 #/sec
  tclSE* | 0.011555 µs/# 86539816 #/sec | 0.002466 µs/# 405598052 #/sec | 0.002459 µs/# 406709551 #/sec

Strange is 8.7 with the large deviation between [incr i] and [set v $i], and [incr i] is also significantly slower than in all other versions.
And it was yet different some months before.


* my tclSE is just for related comparison ([incr i] vs [set v $i]), because it is more 8.7 similar, 
but measured times are not really comparable directly, because [timerate] in opposite to core-tcl 
is fully compiled there (so no overhead for TEBC enter/leave and NRE-trampoline, so overhead of measurement only).

Comments

Posted by sebres at Wed Jul 24 15:25:19 GMT 2019 [text] [code]

the times above are from 32-bit builds... Here are values of x64 builds, the difference is still obvious: | overhead (calibration) | incr i | set v $i -------|------------------------------|-------------------------------|-------------------- tcl8.7 | 0.031505 µs/# 31740849 #/sec | 0.009053 µs/# 110463676 #/sec | 0.005971 µs/# 167463542 #/sec tcl8.6 | 0.032371 µs/# 30891435 #/sec | 0.004283 µs/# 233488099 #/sec | 0.004442 µs/# 225122672 #/sec