2011/6/21 Daniel Klíma <dankl...@gmail.com>: > 2011/6/21 Johan Corveleyn <jcor...@gmail.com>: >> Hi, >> >> I managed to get the benchmark 'suite1' (tools/dev/benchmarks/suite1, >> which is used for the automated benchmarks [svnbench] on svn-qavm) >> running on Windows. I did that by translating the 'run' script (bash) >> to a Windows "batch" script (I'm not much of a "batch" programmer, but >> with some trial and error, and the help of google ;-) ...). >> >> I've put the run.bat in attachment here (just strip the .txt >> extension). I'll commit it tonight (don't have access right now), but >> some extra eyes in the meantime can't hurt :-). >> >> There is one annoying issue remaining with the run script for Windows >> (or the benchmark in general): I get an error when running the 100x1 >> tests (100 directory levels deep). I reduced it to 50x1, but still get >> the error. It's probably some "max path component" or "max path >> length" limit on Windows/NTFS that's causing this. Maybe some of the >> Windows-devs knows how to work around this? Or should I reduce that >> test to 25x1? >> > ... >> File >> "C:\research\svn\client_build\trunk\tools\dev\benchmarks\suite1\benchmark.py", >> line 247, in create_tree >> create_tree(dn, levels - 1, spread) >> File >> "C:\research\svn\client_build\trunk\tools\dev\benchmarks\suite1\benchmark.py", >> line 240, in create_tree >> f = open(fn, 'w') >> IOError: [Errno 2] No such file or directory: >> 'c:\\docume~1\\user\\locals~1\\temp\\tmpmddeli\\wc\\trunk\\dir_2\\dir_4\\d >> ir_6\\dir_8\\dir_10\\dir_12\\dir_14\\dir_16\\dir_18\\dir_20\\dir_22\\dir_24\\dir_26\\dir_28\\dir_30\\dir_32\\dir_34\\dir >> _36\\dir_38\\dir_40\\dir_42\\dir_44\\dir_46\\dir_48\\dir_50\\dir_52\\dir_54\\dir_56\\dir_58\\file_59' >> ]]] >> >> For the rest it runs fine. Below are some results (only the 5x5 and >> 1x100) from comparing trunk@1137727 with 1.6.17 (SlikSVN binary) on >> Windows XP (32-bit) with local disk, with Antivirus disabled. >> >> Note that it took a *huge* time to run, even without the 100x1 tests >> (~ 7 hours). I guess that shows how slow my machine really is ;-), >> especially with 1.6. The performance improvements are definitely great >> though (especially 'update', which is 80% faster with trunk! And also >> 'commit', with is down almost 60%). > ... >> >> -- >> Johan >> > Hello. > > Max_Path is 256 chars excluding drive part. Max path for unicode > version of API is 32,767 when using path with "\\?\" style. I think > cmd should be able to work with \\?\ . > > Ref: http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx > (Naming Files, Paths, and Namespaces section: Maximum Path Length > Limitation)
Thanks, Daniel. That explains it. But unfortunately, the error happens inside the python script benchmark.py (in tools/dev/benchmarks/suite1), and I haven't found a way to avoid it. I've experimented a bit with pre-pending the path with "\\\\?\\" (which was also suggested at the end of this python issue: [1]), but it didn't help. I'll commit the Windows variant of the run script (run.bat) for now with a maximum "levels" of 25, which means it usually won't exceed the maximum path length. Maybe someone else can enhance it later (and/or benchmark.py) to enable benchmarks for even deeper working copies on Windows ... -- Johan [1] http://bugs.python.org/issue542314