Не уверен насчет VS10, но в старых вы отлаживаете dll, определяя исполняемый файл для его запуска.
Давайте разделим проблему на две части: 1) определение того, что вы могли бы назвать «узкими местами»,и 2) измерить общее ускорение, которое вы получаете, исправляя каждое из них.
(2) легко, верно?Все, что вам нужно, это внешний таймер.
То есть (1).Если вы похожи на большинство людей, вы думаете, что найти «узкие места» невозможно без какого-либо точного хронометража частей программы.Это не так, потому что в большинстве случаев вещи, которые нужно исправить, чтобы добиться наибольшего ускорения, - это не то, что вы можете обнаружить таким образом.Они не обязательно являются плохими алгоритмами, медленными функциями или горячими точками.Это распределенные вещи, выполняемые совершенно невинно выглядящим, хорошо спроектированным кодом, которые просто предоставляют огромную возможность ускорения, если кодируются по-другому.
Вот пример , где достаточно хорошовремя выполнения письменной программы сократилось с 48 секунд до 20, 17, 13, 10, 7, 4, 2.1 и, наконец, 1.1, за 8 итераций. ** Это суммарный коэффициент ускорения более 40x.Коэффициент ускорения, который вы можете получить, отличается в каждой отдельной программе - некоторые могут получить меньше, некоторые могут получить больше, в зависимости от того, насколько они близки к оптимальному в первую очередь.Там нет загадки, как это сделать.Метод был случайная пауза .(Это альтернатива использованию профилировщика. Профилировщики измеряют различные вещи и дают вам различные подсказки, которые могут или не могут быть полезны, но они не могут точно сказать вам, в чем проблема.)
**Достигнутые коэффициенты ускорения за одну итерацию составили 2,38, 1,18, 1,31, 1,30, 1,43, 1,75, 1,90, 1,91.Еще один способ выразить это - процентное сокращение времени на каждой итерации: 58%, 15%, 24%, 23%, 30%, 43%, 48%, 48%.Я испытываю трудности с поклонниками профилировщика, потому что метод очень ручной, но они никогда не говорят о результатах ускорения.(Может быть, это изменится.)