Some aspects of Tcl's filesystem (''glob'', ''file'', ''pwd'', ''cd'' primarily) became a bit slower with the vfs layer that was introducedin Tcl 8.4.0. This has gradually been addressed with later Tcl 8.4.x releases and also with Tcl 8.5.x. The current timings are as follows: 000 VERSIONS: 1:8.5a0 2:8.4.5 3:8.3.5 001 FILE exec interp 14848 14116 13033 002 FILE exec interp: pkg require 54447 69810 31033 003 FILE exec interp: pkg require+ 81868 98223 47400 004 FILE exec interp: pkg require+auto_path 64340 85805 46400 005 FILE exists tmpfile (obj) 21 23 0 006 FILE exists ~ 14 21 0 007 FILE exists! absolute tmpfile (obj) 17 18 0 008 FILE exists! absolute tmpfile (str) 182 204 100 009 FILE exists! relative tmpfile (obj) 22 18 0 010 FILE exists! relative tmpfile (str) 343 363 0 011 FILE exists! tmpfile (obj) 20 21 0 012 FILE exists! tmpfile (str) 284 304 100 013 FILE glob tmpdir (30 entries) / -dir 5036 5102 4810 014 FILE glob tmpdir (30 entries) / cd 5600 5654 5010 015 FILE glob tmpdir (subset of 30 entries) 2544 4986 4800 016 FILE glob / all subcommands 75864 66918 106850 017 FILE glob / atime 7587 7933 12420 018 FILE glob / attributes 49489 51030 46160 019 FILE glob / dirname 5605 5865 5210 020 FILE glob / executable 9507 7489 6110 021 FILE glob / exists 7162 7465 6010 022 FILE glob / extension 5179 5265 5010 023 FILE glob / isdirectory 7562 7952 12310 024 FILE glob / isfile 7629 7916 12420 025 FILE glob / mtime 7522 7909 12420 026 FILE glob / owned 7526 7877 12520 027 FILE glob / readable 11612 7475 6110 028 FILE glob / rootname 5214 5262 5000 029 FILE glob / size 7634 7866 12320 030 FILE glob / tail 5307 5472 5110 031 FILE glob / writable 11624 7463 6010 032 FILE glob deep dirs (30 entries+) 56694 57375 47870 033 FILE glob deep dirs (subset of 30 entries+) 36232 56717 46170 034 FILE glob dirs (30 entries) 4872 4936 12320 035 FILE recurse / -dir 105758 111418 137990 036 FILE recurse / cd 130812 177122 135690 037 FILE recurse+stat / -dir 136036 146569 243150 038 FILE recurse+stat / cd 161960 212755 240540 038 BENCHMARKS 1:8.5a0 2:8.4.5 3:8.3.5 (This is for a slightly modified version of file.bench, and a slightly modified version of Tcl 8.5a0 which is undergoing performance testing, where the above timings are on WinXP. Also see end of page for a normalized version). If you have particular pieces of code using ''file'', ''glob'' which are slower in Tcl 8.4/8.5, please add them to this page so that they can be added to the benchmark suite. ''Note:'' reading from and writing to files is a totally separate topic ''channel i/o'' which is nothing to do with the vfs changes made to Tcl 8.4.0, and is therefore irrelevant to this particular benchmarking exercise on this page. ---- Same data, normalized: 000 VERSIONS: 1:8.5a0 2:8.4.5 3:8.3.5 001 FILE exec interp 0.91 1.10 1.00 002 FILE exec interp: exit 1.05 1.09 1.00 003 FILE exec interp: pkg require 1.80 2.30 1.00 004 FILE exec interp: pkg require+ 1.76 2.11 1.00 005 FILE exec interp: pkg require+auto_path 1.47 1.96 1.00 006 FILE exists tmpfile (obj) 0.73 0.77 1.00 007 FILE exists ~ 0.43 0.47 1.00 008 FILE exists! absolute tmpfile (obj) 0.95 1.00 1.00 009 FILE exists! absolute tmpfile (str) 6.27 6.97 1.00 010 FILE exists! relative tmpfile (obj) 1.80 1.90 1.00 011 FILE exists! relative tmpfile (str) 16.65 18.15 1.00 012 FILE exists! tmpfile (obj) 0.73 0.80 1.00 013 FILE exists! tmpfile (str) 14.70 15.65 1.00 014 FILE glob tmpdir (30 entries) / -dir 1.00 1.01 1.00 015 FILE glob tmpdir (30 entries) / cd 1.11 1.14 1.00 016 FILE glob tmpdir (subset of 30 entries) 0.51 1.04 1.00 017 FILE glob / all subcommands 0.71 0.63 1.00 018 FILE glob / atime 0.65 0.64 1.00 019 FILE glob / attributes 1.08 1.11 1.00 020 FILE glob / dirname 1.09 1.11 1.00 021 FILE glob / executable 1.55 1.23 1.00 022 FILE glob / exists 1.17 1.22 1.00 023 FILE glob / extension 1.05 1.05 1.00 024 FILE glob / isdirectory 0.62 0.64 1.00 025 FILE glob / isfile 0.61 0.64 1.00 026 FILE glob / mtime 0.61 0.64 1.00 027 FILE glob / owned 0.61 0.64 1.00 028 FILE glob / readable 1.90 1.23 1.00 029 FILE glob / rootname 1.04 1.05 1.00 030 FILE glob / size 0.61 0.64 1.00 031 FILE glob / tail 1.06 1.07 1.00 032 FILE glob / writable 1.90 1.22 1.00 033 FILE glob deep dirs (30 entries+) 1.24 1.19 1.00 034 FILE glob deep dirs (subset of 30 entries+) 0.78 1.23 1.00 035 FILE glob dirs (30 entries) 0.42 0.41 1.00 036 FILE recurse / -dir 0.77 0.81 1.00 037 FILE recurse / cd 0.96 1.31 1.00 038 FILE recurse+stat / -dir 0.56 0.61 1.00 039 FILE recurse+stat / cd 0.69 0.90 1.00 039 BENCHMARKS 1:8.5a0 2:8.4.5 3:8.3.5