This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Micro-optimization to avoid creating temporary path


On 12/18/18 5:38 PM, Jonathan Wakely wrote:
On 18/12/18 15:52 +0000, Jonathan Wakely wrote:
Now that path::operator/=(basic_string_view<value_type>) works directly
from the string argument, instead of constructing a temporary path from
the string, it's potentially more efficient to do 'path(x) /= s' instead
of 'x / s'. This changes the only relevant place in the library.

    * src/filesystem/std-dir.cc (filesystem::_Dir::advance): Append
    string to lvalue to avoid creating temporary path.

This is only an optimization if it doesn't introduce a new copy! Fixed
by the attached patch.

Tested x86_64-linux, committed to trunk.


Isn't it just equivalent to the original code:

-	entry = fs::directory_entry{path / entp->d_name, get_file_type(*entp)};

The temporary un-named instance was already moved, no ?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]