Как измерить время, потраченное на управление памятью

это Reddit Тема привлек мое внимание к пользовательским распределителям памяти. Пользователь Rohmboid говорит, например:

Люди не будут писать свои собственные распределители пула, если есть
не было явной выгоды.

Откуда они знают, что есть один?

Я не хочу тратить свое время / деньги / энергию на написание собственного распределителя, если время, потраченное на управление памятью, составляет менее 1% от продолжительности моей программы. Также я не хочу переключаться на пользовательский распределитель и не могу определить ускорение. Поэтому мне интересно: как я могу измерить (или, по крайней мере, оценить) время, потраченное на выделение / освобождение / выборку памяти?

1

Решение

Как я знаю, что есть один?

Нет смысла оптимизировать что-то, что не является горячим путем в вашем коде.

Если Allocator (A) занимает 5% процессорного времени, а ваше приложение занимает остальные 95%, ускорение выделения в два раза дает вам (5/2)/100 = 2.5% увеличение. Теперь попробуйте ускорить B даже на долю.

Как?

Самый простой способ — использовать встроенный в IDE профилировщик; MSVS one довольно приличный, хотя я использую Intel VTune; его простота использования действительно велика, и он просто показывает вам — оптимизировать Вот.

Использование программы профилирования имеет дополнительное преимущество; вам вообще не нужно изменять свой код; Вам также не нужно перекомпилировать, если вы хотите изменить параметры профилирования и запустить снова. При этом таймеры в вашем приложении также могут давать хорошие результаты, хотя их редко нужно размещать непосредственно внутри распределителя. Лучше постоянно сужать возможные места, где программа занимает больше всего времени.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]