Itcl - the [incr Tcl] extension

Artifact [831ced2dbf]
Login

Artifact 831ced2dbf09d6d786e05e3455aa479a38ef3cab3ca0ae16e7ce66a7d2adcf3d:

Attachment "itcl-perf-memopt-vs-on-dmnd-res.txt.diff" to ticket [fe70356a54] added by sebres 2019-04-17 22:18:51.
diff --git "a/itcl-perf-memopt.txt" "b/itcl-perf-on-dmnd-resolver.txt"
index 3e8256a..1ec3d5e 100644
--- "a/itcl-perf-memopt.txt"
+++ "b/itcl-perf-on-dmnd-resolver.txt"
@@ -1,5 +1,5 @@
-Calibration ... done: 0.04383928921360391 �s/#-overhead
-testing with x64/itcl412-memopt-perf
+Calibration ... done: 0.04378798150660412 �s/#-overhead
+testing with x64/itcl412-on-dmnd-resolver
 ==== initialization (preserve/release) ====
 
 % setup {set i 0; set k 0}
@@ -7,103 +7,103 @@ testing with x64/itcl412-memopt-perf
 % ## 1) create up-to 1000 classes (with 100 vars):
 % itcl::class timeClass[incr i] { for {set j 0} {$j<100} {incr j} { public variable d$j } }
 
-537.504 �s/# 999 # 1860.5 #/sec 536.966 nett-ms
+500.756 �s/# 999 # 1997.0 #/sec 500.255 nett-ms
 
 % ## 2) create up-to 1000 classes (with 100 vars):
 % itcl::class finiClass[incr k] { for {set j 0} {$j<100} {incr j} { public variable d$j } }
 
-532.474 �s/# 999 # 1878.0 #/sec 531.942 nett-ms
+482.616 �s/# 999 # 2072.0 #/sec 482.133 nett-ms
 
 % ## 2) delete up-to 1000 classes:
 % itcl::delete class finiClass$k; if {[incr k -1] <= 0} break
 
-170.553 �s/# 999 # 5863.3 #/sec 170.382 nett-ms
+143.973 �s/# 999 # 6945.7 #/sec 143.829 nett-ms
 
 % cleanup {while {$k > 0} {itcl::delete class finiClass$k; incr k -1}}
 
 % ## 1) delete up-to 1000 classes:
 % itcl::delete class timeClass$i; if {[incr i -1] <= 0} break
 
-174.125 �s/# 999 # 5743.0 #/sec 173.951 nett-ms
+147.164 �s/# 999 # 6795.1 #/sec 147.017 nett-ms
 
 % cleanup {while {$i > 0} {itcl::delete class timeClass$i; incr i -1}}
 
 ********************************************************************************
-Total 4 cases in 1.42 sec. (1.41 nett-sec.):
-1414.656000 �s/# 3996 # 2827.543 #/sec 1413.241 nett-ms
+Total 4 cases in 1.28 sec. (1.27 nett-sec.):
+1274.509000 �s/# 3996 # 3138.465 #/sec 1273.234 nett-ms
 Average:
-353.664000 �s/# 999 # 2828 #/sec 353.310 nett-ms
+318.627250 �s/# 999 # 3138 #/sec 318.308 nett-ms
 Min:
-170.553 �s/# 999 # 5863.3 #/sec 170.382 nett-ms
+143.973 �s/# 999 # 6945.7 #/sec 143.829 nett-ms
 Max:
-537.504 �s/# 999 # 1860.5 #/sec 536.966 nett-ms
+500.756 �s/# 999 # 1997.0 #/sec 500.255 nett-ms
 ********************************************************************************
 
 ==== class/var creation ====
 
 == 1.0) class : ::timeClass0 == 
 % declare vars ...
-133.024 �s/# 10000 # 7517.5 #/sec 1330.238 nett-ms
+11.1671 �s/# 10000 # 89548.8 #/sec 111.671 nett-ms
 
 == 1.1) class : ::timeClass1 == inherite ::timeClass0
 % inherit ::timeClass0
-35041.0 �s/# 1 # 28.538 #/sec 35.041 nett-ms
+32.0000 �s/# 1 # 31250.0 #/sec 0.032 nett-ms
 
 % declare vars ...
-54989.2 �s/# 182 # 18.185 #/sec 10008.041 nett-ms
+12.1805 �s/# 10000 # 82098.4 #/sec 121.805 nett-ms
 
 == 1.2) class : ::timeClass2 == inherite ::timeClass1
 % inherit ::timeClass1
-30358.0 �s/# 1 # 32.940 #/sec 30.358 nett-ms
+36.0000 �s/# 1 # 27777.8 #/sec 0.036 nett-ms
 
 % declare vars ...
-55763.0 �s/# 180 # 17.933 #/sec 10037.339 nett-ms
+12.7137 �s/# 10000 # 78655.3 #/sec 127.137 nett-ms
 
 == 2.0) class : ::test-itcl-ns1::timeClass0 == 
 % declare vars ...
-192.720 �s/# 10000 # 5188.9 #/sec 1927.197 nett-ms
+11.7975 �s/# 10000 # 84763.7 #/sec 117.975 nett-ms
 
 == 2.1) class : ::test-itcl-ns1::timeClass1 == inherite ::test-itcl-ns1::timeClass0
 % inherit ::test-itcl-ns1::timeClass0
-38005.0 �s/# 1 # 26.312 #/sec 38.005 nett-ms
+27.0000 �s/# 1 # 37037.0 #/sec 0.027 nett-ms
 
 % declare vars ...
-72704.1 �s/# 138 # 13.754 #/sec 10033.171 nett-ms
+13.5809 �s/# 10000 # 73632.8 #/sec 135.809 nett-ms
 
 == 2.2) class : ::test-itcl-ns1::timeClass2 == inherite ::test-itcl-ns1::timeClass1
 % inherit ::test-itcl-ns1::timeClass1
-39973.0 �s/# 1 # 25.017 #/sec 39.973 nett-ms
+50.0000 �s/# 1 # 20000.0 #/sec 0.050 nett-ms
 
 % declare vars ...
-72985.9 �s/# 138 # 13.701 #/sec 10072.049 nett-ms
+14.0993 �s/# 10000 # 70925.5 #/sec 140.993 nett-ms
 
 == 3.0) class : ::test-itcl-ns1::test-itcl-ns2::timeClass0 == 
 % declare vars ...
-267.721 �s/# 10000 # 3735.2 #/sec 2677.211 nett-ms
+12.1779 �s/# 10000 # 82116.0 #/sec 121.779 nett-ms
 
 == 3.1) class : ::test-itcl-ns1::test-itcl-ns2::timeClass1 == inherite ::test-itcl-ns1::test-itcl-ns2::timeClass0
 % inherit ::test-itcl-ns1::test-itcl-ns2::timeClass0
-48422.0 �s/# 1 # 20.652 #/sec 48.422 nett-ms
+28.0000 �s/# 1 # 35714.3 #/sec 0.028 nett-ms
 
 % declare vars ...
-88921.6 �s/# 113 # 11.246 #/sec 10048.140 nett-ms
+13.2751 �s/# 10000 # 75329.0 #/sec 132.751 nett-ms
 
 == 3.2) class : ::test-itcl-ns1::test-itcl-ns2::timeClass2 == inherite ::test-itcl-ns1::test-itcl-ns2::timeClass1
 % inherit ::test-itcl-ns1::test-itcl-ns2::timeClass1
-48788.0 �s/# 1 # 20.497 #/sec 48.788 nett-ms
+52.0000 �s/# 1 # 19230.8 #/sec 0.052 nett-ms
 
 % declare vars ...
-91848.0 �s/# 109 # 10.888 #/sec 10011.434 nett-ms
+14.1397 �s/# 10000 # 70722.9 #/sec 141.397 nett-ms
 
 ********************************************************************************
-Total 5 cases in 23.07 sec. (22.83 nett-sec.):
-278247.321000 �s/# 10224 # 447.753 #/sec 22833.995 nett-ms
+Total 5 cases in 0.40 sec. (0.40 nett-sec.):
+119.592700 �s/# 30002 # 75761.287 #/sec 396.007 nett-ms
 Average:
-55649.464200 �s/# 2044 # 448 #/sec 4566.799 nett-ms
+23.918540 �s/# 6000 # 75757 #/sec 79.201 nett-ms
 Min:
-267.721 �s/# 10000 # 3735.2 #/sec 2677.211 nett-ms
+12.1779 �s/# 10000 # 82116.0 #/sec 121.779 nett-ms
 Max:
-91848.0 �s/# 109 # 10.888 #/sec 10011.434 nett-ms
+52.0000 �s/# 1 # 19230.8 #/sec 0.052 nett-ms
 ********************************************************************************
 
 ==== var access ====
@@ -114,41 +114,41 @@ Max:
 0
 % o getv pub[incr j]
 0
-2.230223 �s/# 9999 # 448385 #/sec 22.300 nett-ms
+1.929293 �s/# 9999 # 518324 #/sec 19.291 nett-ms
 
 % # 1) obj-var get (resolved)
 % setup {set j 0}
 0
 % o getv pub[incr j]
 0
-2.158416 �s/# 9999 # 463302 #/sec 21.582 nett-ms
+2.019902 �s/# 9999 # 495073 #/sec 20.197 nett-ms
 
 % # 1) obj-var resolved
 % setup {set j 0}
 0
 % o getv pub1
 0
-1.168017 �s/# 9999 # 856152 #/sec 11.679 nett-ms
+1.123012 �s/# 9999 # 890462 #/sec 11.229 nett-ms
 
 % # 1) obj-var in method compiled (public)
 % o getpub1
 1
-0.998800 �s/# 9999 # 1001201 #/sec 9.987 nett-ms
+0.972397 �s/# 9999 # 1028386 #/sec 9.723 nett-ms
 
 % # 1) obj-var in method compiled (protected)
 % o getpro1
 1
-0.985099 �s/# 9999 # 1015126 #/sec 9.850 nett-ms
+0.979398 �s/# 9999 # 1021035 #/sec 9.793 nett-ms
 
 % # 1) obj-var in method compiled (private)
 % o getpri1
 2
-1.003900 �s/# 9999 # 996114 #/sec 10.038 nett-ms
+0.982398 �s/# 9999 # 1017917 #/sec 9.823 nett-ms
 
 % # 1) obj-var in method unknown
 % o getunknown
 1
-4.857286 �s/# 9999 # 205876 #/sec 48.568 nett-ms
+4.717572 �s/# 9999 # 211973 #/sec 47.171 nett-ms
 
 % cleanup {itcl::delete object o}
 
@@ -157,35 +157,35 @@ Max:
 0
 % o cget -pub[incr j]
 0
-3.925093 �s/# 9999 # 254771 #/sec 39.247 nett-ms
+3.355336 �s/# 9999 # 298032 #/sec 33.550 nett-ms
 
 % # 1) obj-var cget (resolved):
 % setup {set j 0}
 0
 % o cget -pub[incr j]
 0
-3.961696 �s/# 9999 # 252417 #/sec 39.613 nett-ms
+3.395240 �s/# 9999 # 294530 #/sec 33.949 nett-ms
 
 % # 1) obj-var cfg/cget
 % o configure -pub1
 -pub1 0 0
-2.779878 �s/# 9999 # 359728 #/sec 27.796 nett-ms
+2.403140 �s/# 9999 # 416122 #/sec 24.029 nett-ms
 
 % o cget -pub1
 0
-2.397640 �s/# 9999 # 417076 #/sec 23.974 nett-ms
+2.087909 �s/# 9999 # 478948 #/sec 20.877 nett-ms
 
 % # 1) cls-com resolve
 % setup {set j 0}
 0
 % o getv com[incr j]; if {$j >= 1000} {set j 0}
 
-1.575358 �s/# 9999 # 634776 #/sec 15.752 nett-ms
+1.600460 �s/# 9999 # 624820 #/sec 16.003 nett-ms
 
 % # 1) cls-com resolved
 % o getv com1
 
-1.020602 �s/# 9999 # 979813 #/sec 10.205 nett-ms
+1.026503 �s/# 9999 # 974181 #/sec 10.264 nett-ms
 
 % cleanup {itcl::delete object o}
 
@@ -195,41 +195,41 @@ Max:
 0
 % o getv pub[incr j]
 0
-2.185519 �s/# 9999 # 457557 #/sec 21.853 nett-ms
+2.029703 �s/# 9999 # 492682 #/sec 20.295 nett-ms
 
 % # 2) obj-var get (resolved)
 % setup {set j 0}
 0
 % o getv pub[incr j]
 0
-2.231023 �s/# 9999 # 448224 #/sec 22.308 nett-ms
+1.973997 �s/# 9999 # 506586 #/sec 19.738 nett-ms
 
 % # 2) obj-var resolved
 % setup {set j 0}
 0
 % o getv pub1
 0
-1.149115 �s/# 9999 # 870234 #/sec 11.490 nett-ms
+1.108011 �s/# 9999 # 902518 #/sec 11.079 nett-ms
 
 % # 2) obj-var in method compiled (public)
 % o getpub1
 1
-1.005501 �s/# 9999 # 994529 #/sec 10.054 nett-ms
+0.966197 �s/# 9999 # 1034986 #/sec 9.661 nett-ms
 
 % # 2) obj-var in method compiled (protected)
 % o getpro1
 1
-1.035904 �s/# 9999 # 965340 #/sec 10.358 nett-ms
+0.962996 �s/# 9999 # 1038425 #/sec 9.629 nett-ms
 
 % # 2) obj-var in method compiled (private)
 % o getpri1
 2
-1.014201 �s/# 9999 # 985997 #/sec 10.141 nett-ms
+0.952095 �s/# 9999 # 1050315 #/sec 9.520 nett-ms
 
 % # 2) obj-var in method unknown
 % o getunknown
 1
-5.007001 �s/# 9999 # 199720 #/sec 50.065 nett-ms
+4.743174 �s/# 9999 # 210829 #/sec 47.427 nett-ms
 
 % cleanup {itcl::delete object o}
 
@@ -238,35 +238,35 @@ Max:
 0
 % o cget -pub[incr j]
 0
-4.158616 �s/# 9999 # 240464 #/sec 41.582 nett-ms
+3.570957 �s/# 9999 # 280036 #/sec 35.706 nett-ms
 
 % # 2) obj-var cget (resolved):
 % setup {set j 0}
 0
 % o cget -pub[incr j]
 0
-4.132913 �s/# 9999 # 241960 #/sec 41.325 nett-ms
+3.458946 �s/# 9999 # 289105 #/sec 34.586 nett-ms
 
 % # 2) obj-var cfg/cget
 % o configure -pub1
 -pub1 0 0
-2.847985 �s/# 9999 # 351125 #/sec 28.477 nett-ms
+2.441944 �s/# 9999 # 409509 #/sec 24.417 nett-ms
 
 % o cget -pub1
 0
-2.456346 �s/# 9999 # 407108 #/sec 24.561 nett-ms
+2.141414 �s/# 9999 # 466981 #/sec 21.412 nett-ms
 
 % # 2) cls-com resolve
 % setup {set j 0}
 0
 % o getv com[incr j]; if {$j >= 1000} {set j 0}
 
-1.621762 �s/# 9999 # 616613 #/sec 16.216 nett-ms
+1.631863 �s/# 9999 # 612796 #/sec 16.317 nett-ms
 
 % # 2) cls-com resolved
 % o getv com1
 
-0.992399 �s/# 9999 # 1007658 #/sec 9.923 nett-ms
+0.981098 �s/# 9999 # 1019266 #/sec 9.810 nett-ms
 
 % cleanup {itcl::delete object o}
 
@@ -276,41 +276,41 @@ Max:
 0
 % o getv pub[incr j]
 0
-2.104810 �s/# 9999 # 475102 #/sec 21.046 nett-ms
+2.074907 �s/# 9999 # 481949 #/sec 20.747 nett-ms
 
 % # 3) obj-var get (resolved)
 % setup {set j 0}
 0
 % o getv pub[incr j]
 0
-2.157816 �s/# 9999 # 463431 #/sec 21.576 nett-ms
+2.038804 �s/# 9999 # 490483 #/sec 20.386 nett-ms
 
 % # 3) obj-var resolved
 % setup {set j 0}
 0
 % o getv pub1
 0
-1.112711 �s/# 9999 # 898705 #/sec 11.126 nett-ms
+1.158216 �s/# 9999 # 863396 #/sec 11.581 nett-ms
 
 % # 3) obj-var in method compiled (public)
 % o getpub1
 1
-1.008301 �s/# 9999 # 991767 #/sec 10.082 nett-ms
+0.979998 �s/# 9999 # 1020410 #/sec 9.799 nett-ms
 
 % # 3) obj-var in method compiled (protected)
 % o getpro1
 1
-0.936294 �s/# 9999 # 1068041 #/sec 9.362 nett-ms
+0.944594 �s/# 9999 # 1058655 #/sec 9.445 nett-ms
 
 % # 3) obj-var in method compiled (private)
 % o getpri1
 2
-0.979098 �s/# 9999 # 1021348 #/sec 9.790 nett-ms
+0.946895 �s/# 9999 # 1056083 #/sec 9.468 nett-ms
 
 % # 3) obj-var in method unknown
 % o getunknown
 1
-4.766177 �s/# 9999 # 209811 #/sec 47.657 nett-ms
+4.571757 �s/# 9999 # 218734 #/sec 45.713 nett-ms
 
 % cleanup {itcl::delete object o}
 
@@ -319,47 +319,47 @@ Max:
 0
 % o cget -pub[incr j]
 0
-4.153515 �s/# 9999 # 240759 #/sec 41.531 nett-ms
+3.546855 �s/# 9999 # 281939 #/sec 35.465 nett-ms
 
 % # 3) obj-var cget (resolved):
 % setup {set j 0}
 0
 % o cget -pub[incr j]
 0
-4.110511 �s/# 9999 # 243278 #/sec 41.101 nett-ms
+3.533753 �s/# 9999 # 282985 #/sec 35.334 nett-ms
 
 % # 3) obj-var cfg/cget
 % o configure -pub1
 -pub1 0 0
-2.905891 �s/# 9999 # 344128 #/sec 29.056 nett-ms
+2.588759 �s/# 9999 # 386285 #/sec 25.885 nett-ms
 
 % o cget -pub1
 0
-2.588659 �s/# 9999 # 386300 #/sec 25.884 nett-ms
+2.215222 �s/# 9999 # 451422 #/sec 22.150 nett-ms
 
 % # 3) cls-com resolve
 % setup {set j 0}
 0
 % o getv com[incr j]; if {$j >= 1000} {set j 0}
 
-1.754475 �s/# 9999 # 569970 #/sec 17.543 nett-ms
+1.664366 �s/# 9999 # 600829 #/sec 16.642 nett-ms
 
 % # 3) cls-com resolved
 % o getv com1
 
-1.004100 �s/# 9999 # 995916 #/sec 10.040 nett-ms
+1.050205 �s/# 9999 # 952195 #/sec 10.501 nett-ms
 
 % cleanup {itcl::delete object o}
 
 ********************************************************************************
-Total 39 cases in 2.30 sec. (0.88 nett-sec.):
-88.482651 �s/# 389961 # 440764.384 #/sec 884.738 nett-ms
+Total 39 cases in 2.22 sec. (0.81 nett-sec.):
+80.869286 �s/# 389961 # 482259.724 #/sec 808.612 nett-ms
 Average:
-2.268786 �s/# 9999 # 440756 #/sec 22.686 nett-ms
+2.073571 �s/# 9999 # 482251 #/sec 20.734 nett-ms
 Min:
-0.936294 �s/# 9999 # 1068041 #/sec 9.362 nett-ms
+0.944594 �s/# 9999 # 1058655 #/sec 9.445 nett-ms
 Max:
-5.007001 �s/# 9999 # 199720 #/sec 50.065 nett-ms
+4.743174 �s/# 9999 # 210829 #/sec 47.427 nett-ms
 ********************************************************************************
 
 ==== object instance ====
@@ -370,19 +370,19 @@ Max:
 % # 1) create :
 % ::timeClass0 o[incr i]
 o1
-36689.9 �s/# 28 # 27.255 #/sec 1027.317 nett-ms
+35076.3 �s/# 29 # 28.509 #/sec 1017.214 nett-ms
 
 % # 1) delete:
 % itcl::delete object o$i; if {[incr i -1] <= 0} break
 
-182536.8 �s/# 6 # 5.478 #/sec 1095.221 nett-ms
+185408.0 �s/# 6 # 5.394 #/sec 1112.448 nett-ms
 
 % cleanup {while {$i > 0} {itcl::delete object o$i; incr i -1}}
 
 % # 1) create + delete:
 % ::timeClass0 o; itcl::delete object o
 
-224101.2 �s/# 5 # 4.462 #/sec 1120.506 nett-ms
+223634.8 �s/# 5 # 4.472 #/sec 1118.174 nett-ms
 
 == 2) class : ::test-itcl-ns1::timeClass0 ==
 % setup {set i 0}
@@ -390,19 +390,19 @@ o1
 % # 2) create :
 % ::test-itcl-ns1::timeClass0 o[incr i]
 o1
-40222.2 �s/# 25 # 24.862 #/sec 1005.555 nett-ms
+38458.1 �s/# 27 # 26.002 #/sec 1038.369 nett-ms
 
 % # 2) delete:
 % itcl::delete object o$i; if {[incr i -1] <= 0} break
 
-185383.7 �s/# 6 # 5.394 #/sec 1112.302 nett-ms
+183330.3 �s/# 6 # 5.455 #/sec 1099.982 nett-ms
 
 % cleanup {while {$i > 0} {itcl::delete object o$i; incr i -1}}
 
 % # 2) create + delete:
 % ::test-itcl-ns1::timeClass0 o; itcl::delete object o
 
-225169.8 �s/# 5 # 4.441 #/sec 1125.849 nett-ms
+228374.4 �s/# 5 # 4.379 #/sec 1141.872 nett-ms
 
 == 3) class : ::test-itcl-ns1::test-itcl-ns2::timeClass0 ==
 % setup {set i 0}
@@ -410,29 +410,29 @@ o1
 % # 3) create :
 % ::test-itcl-ns1::test-itcl-ns2::timeClass0 o[incr i]
 o1
-40716.0 �s/# 25 # 24.560 #/sec 1017.900 nett-ms
+39378.6 �s/# 26 # 25.394 #/sec 1023.844 nett-ms
 
 % # 3) delete:
 % itcl::delete object o$i; if {[incr i -1] <= 0} break
 
-184532.5 �s/# 6 # 5.419 #/sec 1107.195 nett-ms
+184561.5 �s/# 6 # 5.418 #/sec 1107.369 nett-ms
 
 % cleanup {while {$i > 0} {itcl::delete object o$i; incr i -1}}
 
 % # 3) create + delete:
 % ::test-itcl-ns1::test-itcl-ns2::timeClass0 o; itcl::delete object o
 
-226328.0 �s/# 5 # 4.418 #/sec 1131.640 nett-ms
+225806.4 �s/# 5 # 4.429 #/sec 1129.032 nett-ms
 
 ********************************************************************************
-Total 9 cases in 22.22 sec. (9.74 nett-sec.):
-1345680.100000 �s/# 111 # 11.392 #/sec 9743.485 nett-ms
+Total 9 cases in 22.88 sec. (9.79 nett-sec.):
+1344028.400000 �s/# 115 # 11.749 #/sec 9788.304 nett-ms
 Average:
-149520.011111 �s/# 12 # 11 #/sec 1082.609 nett-ms
+149336.488889 �s/# 12 # 11 #/sec 1087.589 nett-ms
 Min:
-36689.9 �s/# 28 # 27.255 #/sec 1027.317 nett-ms
+35076.3 �s/# 29 # 28.509 #/sec 1017.214 nett-ms
 Max:
-226328.0 �s/# 5 # 4.418 #/sec 1131.640 nett-ms
+228374.4 �s/# 5 # 4.379 #/sec 1141.872 nett-ms
 ********************************************************************************