Не забегай вперед.
Я опубликовал проект sourceforge , показывающий, как значительно ускорилась программа моделирования (более 700x).
Это не было сделано заранее, предполагая, что нужно сделать быстро.
Это было сделано с помощью «профилирования», которое я заключил в кавычки, потому что метод, который я использую, заключается не в использовании профилировщика.
Скорее я полагаюсь на случайная пауза , метод, известный и используемый некоторыми программистами для хорошего эффекта.
Он проходит через серию итераций.
На каждой итерации определяется и фиксируется большой источник затрат времени, что приводит к определенному коэффициенту ускорения.
Когда вы проходите через несколько итераций, эти коэффициенты ускорения умножаются вместе (как сложный процент).
Вот как вы получаете Major ускорение.
Если и только если вы попадаете в точку, в которой некоторый код занимает большую долю времени, и он не содержит вызовов функций, и вы думаете, что можете написать код на ассемблере лучше, чем это делает компилятор, тогда пойти на это.
P.S. Если вам интересно, разница между использованием профилировщика и случайной паузой заключается в том, что профилировщики ищут «узкие места», предполагая, что это локализованные вещи. Они ищут подпрограммы или строки кода, которые отвечают за большой процент общего времени.
Чего они пропускают, так это проблем, которые распространены .
Например, у вас может быть 100 подпрограмм, каждая из которых занимает 1% времени.
То есть никаких узких мест.
Однако во многих или во всех этих подпрограммах может быть выполнено действие, составляющее 1/3 времени, которое может быть выполнено лучше или не выполнено вообще.
Случайная пауза будет видеть эту активность с небольшим количеством выборок, потому что вы не суммируете, вы исследуете образцы.
Другими словами, если вы взяли 9 проб, в среднем вы заметили активность по 3 из них.
Это говорит о том, что он большой.
Так что вы можете это исправить и получить коэффициент ускорения 3/2.