In perl.git, the branch vincent/faster-PathTools has been created
<http://perl5.git.perl.org/perl.git/commitdiff/b574b16abe5b45a0d42bd85cfd560f88248bde1a?hp=0000000000000000000000000000000000000000>
at b574b16abe5b45a0d42bd85cfd560f88248bde1a (commit)
- Log -----------------------------------------------------------------
commit b574b16abe5b45a0d42bd85cfd560f88248bde1a
Author: Vincent Pit <[email protected]>
Date: Sat Jun 30 15:06:38 2012 +0200
Test some edge cases of File::Spec::Unix::catfile()
They are related to RT #113898.
M dist/Cwd/t/Spec.t
commit 59be2e66c41e22dd2ac019daf8caf7e62a3127c0
Author: Vincent Pit <[email protected]>
Date: Fri Jun 29 12:30:49 2012 +0200
Optimize File::Spec::Cygwin::{canonpath,catdir}()
Profiling shows that the hot spot in File::Spec::Cygwin::canonpath()
is the return line, even in exclusive terms. Since SUPER is slow and
File::Spec::Cygwin::canonpath() is explicitely documented as calling
its ::Unix ancestor, we can state explicitely which method we should
recall into.
One would expect this to have little impact, but it yields an average
20% speedup on top of the previous optimizations brought to
File::Spec::Unix::canonpath().
M dist/Cwd/lib/File/Spec/Cygwin.pm
commit bf66893927ac1d56abc7c2741e1b0a1f8fdbd209
Author: Vincent Pit <[email protected]>
Date: Wed Jun 27 23:04:15 2012 +0200
Optimize File::Spec::Epoc::canonpath()
Since File::Spec::Epoc::canonpath() looks a lot like
File::Spec::Unix::canonpath(), it is easy to apply to the former the
optimizations devised for the latter.
The tests differing between File::Spec::Unix::canonpath() and
File::Spec::Epoc::canonpath() are also enabled by this commit, so that
it is easy to catch a behaviour change in the future.
M dist/Cwd/lib/File/Spec/Epoc.pm
M dist/Cwd/t/Spec.t
commit 47d9e27db4042d20c540e1925ab64d868c85c142
Author: Vincent Pit <[email protected]>
Date: Wed Jun 27 23:09:52 2012 +0200
Properly align comments in File::Spec::Unix::canonpath()
Whitespace-only change.
M dist/Cwd/lib/File/Spec/Unix.pm
commit 615d7f0bcc3c25bd3fc1b37a7c42fdffe7c94c52
Author: Vincent Pit <[email protected]>
Date: Wed Jun 27 23:08:57 2012 +0200
Document and test a couple of edge cases of File::Spec::Unix::canonpath()
M dist/Cwd/lib/File/Spec/Unix.pm
M dist/Cwd/t/Spec.t
commit fc0fd59d0d2335b1b359e73c199218a7670a6c9f
Author: Vincent Pit <[email protected]>
Date: Thu Apr 26 19:30:43 2012 +0200
Simplify the third regexp of File::Spec::Unix::canonpath()
At the second regexp, any path looking like './././xx' gets turned into
'./xx', so there is no need to look for several './' at the beginning of
the path anymore. This means that '(?:\./)+' can be simplified into '\./'.
This also makes it more clear why '././' is not turned into the empty
string by the third regexp even though it is not equal to './'.
Also remove the /s flag, as there is no '.' (sic) in the regexp.
M dist/Cwd/lib/File/Spec/Unix.pm
commit b401775513cb81f8d3acefecb02637eca6a58691
Author: Vincent Pit <[email protected]>
Date: Thu Apr 26 18:53:21 2012 +0200
Merge two substitutions in one in File::Spec::Unix::canonpath()
Now that the comment was corrected, it is obvious that the two
substitutions can be merged.
I suspect that that '$' is wrong and should be a '\z' but, knowing
File::Spec, I'm pretty sure someone somewhere relies on this.
M dist/Cwd/lib/File/Spec/Unix.pm
commit ef4b5699b4e7b8feb9458cab938809c6812a7f65
Author: Vincent Pit <[email protected]>
Date: Thu Apr 26 18:47:58 2012 +0200
Fix a comment in File::Spec::Unix::canonpath()
The code was not doing what the comment was describing, and I believe the
code is right here ('/../xx' should be turned into '/xx' and not into 'xx').
M dist/Cwd/lib/File/Spec/Unix.pm
commit 3017b768e3cef48392acad9a2d7fa10816a36f40
Author: Vincent Pit <[email protected]>
Date: Thu Apr 26 17:47:39 2012 +0200
Conditionally compile QNX/NTO code in File::Spec::Unix::canonpath()
File::Spec::Unix::canonpath() does a platform run-time check at each
invocation to apply a QNX/NTO hack. As this is not needed on plain Unix
systems, the check can be moved to a constant so that the special code
can be optimized away by constant folded.
This seems to yield a 25% speedup for each call to canonpath().
M dist/Cwd/lib/File/Spec/Unix.pm
-----------------------------------------------------------------------
--
Perl5 Master Repository