This is an archive of the discontinued LLVM Phabricator instance.

Avoid some memory allocations in the ThreadPool
AcceptedPublic

Authored by • espindola on Apr 27 2018, 12:49 PM.

Details

Reviewers
dblaikie
Summary

I was surprised to see std::function related allocations showing up it a profile of lld. In the case of lld the allocations are tiny and don't really impact performance.

I am not sure if we should be trying to improve this code as it probably needs a full rewrite for better performance, but I was curious how hard it would be to remove some of the allocations.

Note that this only updated one of the executors so far.

Diff Detail

Event Timeline

• espindola created this revision.Apr 27 2018, 12:49 PM
dblaikie accepted this revision.Apr 27 2018, 6:25 PM

If no one else is using the 'add' API - could simplify it to take a function pointer, if the goal is to avoid situations that might cause allocation overhead?

This revision is now accepted and ready to land.Apr 27 2018, 6:25 PM
dblaikie added inline comments.Apr 27 2018, 6:26 PM
lib/Support/Parallel.cpp
94

This should probably take Latch by reference. I know lld has a bit of a different coding convention there - but it's not usually done that way in LLVM (well, it's perhaps a bit all over the shop, to be fair).