mirror of git://gcc.gnu.org/git/gcc.git
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
This commit is contained in:
parent
36313a6bce
commit
8d53154813
|
|
@ -1,5 +1,8 @@
|
||||||
2018-12-18 Jonathan Wakely <jwakely@redhat.com>
|
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&))
|
* include/bits/fs_path.h (path::compare(const string_type&))
|
||||||
(path::compare(const value_type*)): Add noexcept and construct a
|
(path::compare(const value_type*)): Add noexcept and construct a
|
||||||
string view to compare to instead of a path.
|
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))
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
else if (!ec)
|
else if (!ec)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue