Posted to tcl by colin at Wed May 23 06:01:30 GMT 2012view raw

  1. package require Thread
  2.  
  3. proc doit {head} {
  4. puts stderr $head
  5. puts stderr THREAD:[time {::thread::create {proc test {} {}; thread::exit}} 100]
  6. puts stderr INTERP:[time {::interp create test; interp delete test} 100]
  7. puts stderr PROC:[time {proc test {} {}; rename test {}} 100]
  8.  
  9. set thread [::thread::create {proc test {} {}; thread::wait}]
  10. puts stderr E_THREAD:[time {::thread::send $thread test} 100]
  11.  
  12. interp create I; interp eval I {proc test {} {}}
  13. puts stderr E_INTERP:[time {::interp eval I test} 100]
  14. interp delete I
  15.  
  16. proc test {} {}
  17. puts stderr E_PROC:[time {test} 100]
  18.  
  19. set now [clock microseconds]
  20. puts stderr A_THREAD:[time {::thread::send -async $thread test indicator} [set counter 100]]
  21. while {$counter} {vwait indicator; incr counter -1}
  22. puts stderr AE_THREAD:[expr {[clock microseconds] - $now}]
  23. }
  24.  
  25. doit "Out of the Box"
  26.  
  27. load ../InitScript/linux-ix86/InitScript.so
  28. #package require InitScript
  29. set script [InitScript {proc tclInit {} {}}]
  30. puts stderr $script
  31.  
  32. doit "With \[proc tclInit {} {}\]"
  33.  
  34. set script [InitScript {proc tclInit {} {incr ::THC}}]
  35. puts stderr $script
  36.  
  37. doit "With \[proc tclInit {} {incr ::THC}\]"