5 Знаков - страница 6

 
Sergey Eremin:

У меня следующее предположение о том, почему при профилировании получается замедление Point():

Озвучу его на основе ранее прилагаемого скрина. Т.е., видно, что в списке по итогам профилирования отображается Point(), но не отображается _Point. Количество вызовов функции Point в журнале по итогам профилирования совпадает с количеством вызовов Point() в коде по строке 33 ("двуцикл" по 10 для 1000 = 1000 * 10 * 10 = 100 000).


Предположение следующее: то, что при профилировании функция отображается отдельной строкой в журнале, прибавляет немного времени к обработке по ней при профилировании, замедляя. Как-то так.


P./S.: Код, на основе работы которого вчера был сделан этот скрин по итогам профилирования, приводимый выше и здесь (после выписки из лог-файла при обычной работе), взяла тут у вас. Отличия:

вместо:

 for(int i = 0; i < 1000000000; i++)

поставила:

for(int i = 0; i < 1000; i++)

А, вспомнила, и приведение к string заменила на IntegerToString(). Поэтому в списке по итогам профилирования эта функция на скрине. /*и только из-за этого об этом различии уточняю*/

 

P./S.: Т.е., если брать количественное исчисление, то по коду идёт:

1) 1000 * 10 * 10 = 100 000 обращений к _Point;

2) 1000 * 10 * 10 = 100 000 обращений к Point();

На скрине, в журнале по итогам профилирования отображены отдельными строками только функции (в режиме "Функции по вызовам", где можно видеть наименование вызываемой функции). И соответственно, только второй пункт (Point()).


Дополнено: Приложу ещё скрин из Руководства пользователя, где упоминается о компилировании специальной версии программы для профилирования: