В прошлом я использовал производительность профильные инструменты, такие как nprof, профилировщик Equatec и профилировщик Yourkit, чтобы определить и удалить/уменьшить узкие места производительности в главным образом под управлением коде в одном потоке (сериализированное выполнение). В наше время я пишу много многопоточного кода, который может быть замедлен конкуренцией за блокировку; что инструменты и приемы могут использоваться для идентификации, где конкуренция за блокировку происходит и сколько?
Это доступно в ближайшее время, в настоящее время доставка в Visual Studio 2010 beta 2. Вот видео с инструментом .
Попробуйте Threadchecker из Intel. Работает как на Windows, так и на Linux. Если вы работаете над Windows, то попробуйте Parallel Studio . Он обеспечивает простые в использовании замки и ожидает профилировщика. Он показывает общий параллелизм во время выполнения, что дает подсказки на блокировку и плохой параллелизм. Инструменты делают прямо сейчас, что вы хотите.
Для разработки в Windows у Software Verification есть несколько ( http://www.softwareverify.com/thread.html ).
Для C, C ++, Delphi попробуйте Thread Validator.
Для Java существует также Java Thread Validator.
Существуют также экспериментальные версии для Python и Ruby.