Commit 8d531548 by Jonathan Wakely Committed by Jonathan Wakely

Micro-optimization to avoid creating temporary path

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.

From-SVN: r267236
parent 36313a6b
2018-12-18 Jonathan Wakely <jwakely@redhat.com>
* src/filesystem/std-dir.cc (filesystem::_Dir::advance): Append
string to lvalue to avoid creating temporary path.
* include/bits/fs_path.h (path::compare(const string_type&))
(path::compare(const value_type*)): Add noexcept and construct a
string view to compare to instead of a path.
......
......@@ -61,7 +61,9 @@ struct fs::_Dir : _Dir_base
{
if (const auto entp = _Dir_base::advance(skip_permission_denied, ec))
{
entry = fs::directory_entry{path / entp->d_name, get_file_type(*entp)};
auto name = path;
name /= entp->d_name;
entry = fs::directory_entry{name, get_file_type(*entp)};
return true;
}
else if (!ec)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment