Я сделал простой тест с формулой, X-(X+1) =-1, и самое большое значение X, я могу взяться за работу над Safari, Opera и Firefox (протестированный на OS X) 9e15. Вот код, который я использовал для тестирования:
javascript: alert(9e15-(9e15+1));
Используйте gprof.
Просто скомпилируйте с флагом -pg
(я думаю (но не уверен), что вам нужно отключить оптимизацию.) И используйте gprof для проанализируйте файл gmon.out, который затем создаст ваш исполняемый файл.
например:
gcc -pg -o whatever whatever.c
./whatever
gprof whatever gmon.out
То же самое с g ++ и cpp.
XSS здесь!
, то же самое касается вещей, которые вводятся в JavaScript, появляются ошибки! Я поклонник Oprofile . Он включает в себя установку модуля ядра и требует некоторого обучения, но он достаточно мощный и очень хорошо работает для оптимизированных программ / программ без отладочных символов.
Vtune - еще один очень мощный профилировщик от Intel. Я считаю, что версия для Linux бесплатна для некоммерческого программного обеспечения.
Существует также набор инструментов Valgrind , предложенный dfa. Callgrind, вероятно, будет тем, что вас больше всего интересует. Cachegrind (набор функций которого является подмножеством Callgrind) и Massif тоже интересны, но у меня нет опыта работы с последними.
Взгляните на KCacheGrind , который представляет собой графический интерфейс для valgrind и делает его действительно простым в использовании.
У Google также есть хороший профилировщик как часть google-perftools , которые включены в Debian / Ubuntu и, возможно, в другие дистрибутивы.
gprof - это стандартный инструмент GNU для профилирования.
Zoom from RotateRight ( http://www.rotateright.com ) - вот что я использовал. Он имеет вид бабочек функций, и вы можете дважды щелкнуть любую функцию, чтобы погрузиться в исходный или asm-код. Выполните сборку с отладочной информацией (-g), чтобы увидеть исходный код, но вы все равно должны собрать и профилировать оптимизированный код.