getcwd bottleneck
getcwd
is a bottleneck for my use case (about 10% of the cpu time when invoking cmake is spent in it):
the main call sites are:
945 945.0ms 11.9% 0.0 cmsys::SystemTools::CollapseFullPath(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*)
915 915.0ms 11.6% 0.0 cmsys::SystemTools::CollapseFullPath(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
485 485.0ms 6.1% 0.0 (anonymous namespace)::AppendPaths(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, cmGeneratorExpression const&, cmLocalGenerator*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&)
485 485.0ms 6.1% 0.0 cmCustomCommandGenerator::cmCustomCommandGenerator(cmCustomCommand const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, cmLocalGenerator*)
259 259.0ms 3.2% 0.0 cmSourceFileLocation::cmSourceFileLocation(cmMakefile const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cmSourceFileLocationKind)
126 126.0ms 1.5% 0.0 cmGeneratorTarget::GetIncludeDirectories(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const
16 16.0ms 0.2% 0.0 cmAddSubDirectoryCommand(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, cmExecutionStatus&)
12 12.0ms 0.1% 0.0 cmStateDirectory::SetCurrentSource(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
11 11.0ms 0.1% 0.0 cmSourceGroupCommand(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, cmExecutionStatus&)
4 4.0ms 0.0% 0.0 cmStateDirectory::SetCurrentBinary(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
1 1.0ms 0.0% 0.0 cmLocalGenerator::GetFrameworkFlags(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cmGeneratorTarget*)
1 1.0ms 0.0% 0.0 cmAddCustomCommandCommand(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, cmExecutionStatus&)
compare utils/kwsys!161 (closed)
according to @brad.king one should provide the base path as second argument to CollapseFullPath
, however i haven't been able to figure out, how to obtain this path.
Edited by Tim Blechmann