Как узнать, что генерирует много кода
От: MrVoid  
Дата: 26.05.10 14:53
Оценка:
Исполняемый файл нашей программы пухнет не по дням, а по часам. Я подозреваю, что дело в шаблонах. Есть какие-то средства, чтобы узнать, какие места в программе — классы, функции, сколько генерируют кода? Это как профайлинг, только не по скорости выполнения, а по объему исполняемого кода.
Re: Как узнать, что генерирует много кода
От: remark Россия http://www.1024cores.net/
Дата: 26.05.10 14:56
Оценка: 3 (1)
Здравствуйте, MrVoid, Вы писали:

MV>Исполняемый файл нашей программы пухнет не по дням, а по часам. Я подозреваю, что дело в шаблонах. Есть какие-то средства, чтобы узнать, какие места в программе — классы, функции, сколько генерируют кода? Это как профайлинг, только не по скорости выполнения, а по объему исполняемого кода.


http://www.rsdn.ru/forum/cpp.applied/3700995.1.aspx
Автор: remark
Дата: 11.02.10



1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re: Как узнать, что генерирует много кода
От: Pavel Dvorkin Россия  
Дата: 26.05.10 16:13
Оценка: 5 (1) +3
Здравствуйте, MrVoid, Вы писали:

MV>Исполняемый файл нашей программы пухнет не по дням, а по часам. Я подозреваю, что дело в шаблонах. Есть какие-то средства, чтобы узнать, какие места в программе — классы, функции, сколько генерируют кода? Это как профайлинг, только не по скорости выполнения, а по объему исполняемого кода.


Project — Properties — Configuration Properties — Linker — Debugging — Generate Map File

и все как на ладони.
With best regards
Pavel Dvorkin
Re: Как узнать, что генерирует много кода
От: DIMEDROLL Украина  
Дата: 28.05.10 16:51
Оценка:
Здравствуйте, MrVoid, Вы писали:

еще как вариант глануть по создаваемым .obj файлам
Re: Как узнать, что генерирует много кода
От: Unhandled_Exception Россия  
Дата: 28.05.10 17:04
Оценка:
Здравствуйте, MrVoid, Вы писали:

MV>Исполняемый файл нашей программы пухнет не по дням, а по часам. Я подозреваю, что дело в шаблонах. Есть какие-то средства, чтобы узнать, какие места в программе — классы, функции, сколько генерируют кода? Это как профайлинг, только не по скорости выполнения, а по объему исполняемого кода.


я в таких случаях выставляю генерацию ассемблерного кода вместе с исходным. и там уже смотрю, что к чему.
Re: Как узнать, что генерирует много кода
От: Aleх  
Дата: 30.05.10 22:31
Оценка:
Здравствуйте, MrVoid, Вы писали:

MV>Исполняемый файл нашей программы пухнет не по дням, а по часам. Я подозреваю, что дело в шаблонах. Есть какие-то средства, чтобы узнать, какие места в программе — классы, функции, сколько генерируют кода? Это как профайлинг, только не по скорости выполнения, а по объему исполняемого кода.


Какой компилятор? Не Intel случайно?
Re[2]: Как узнать, что генерирует много кода
От: MrVoid  
Дата: 31.05.10 17:16
Оценка:
A>Какой компилятор? Не Intel случайно?

Нет, MSVC 2010, MSVC 2005 Mobile, GCC 3.4.2 (Symbian), GCC 4.2 (iPhone).
Re[2]: Как узнать, что генерирует много кода
От: MrVoid  
Дата: 31.05.10 17:16
Оценка:
U_E>я в таких случаях выставляю генерацию ассемблерного кода вместе с исходным. и там уже смотрю, что к чему.

Но это же огромная куча текста.
Re[2]: Как узнать, что генерирует много кода
От: MrVoid  
Дата: 31.05.10 17:18
Оценка:
PD>Project — Properties — Configuration Properties — Linker — Debugging — Generate Map File

PD>и все как на ладони.


Я сделал так, но непонятно, как извлечь какую-то полезную информацию оттуда — там просто список всех задекорированных названий функций с адресами.
Re[3]: Как узнать, что генерирует много кода
От: Pavel Dvorkin Россия  
Дата: 31.05.10 17:32
Оценка:
Здравствуйте, MrVoid, Вы писали:

PD>>Project — Properties — Configuration Properties — Linker — Debugging — Generate Map File


PD>>и все как на ладони.


MV>Я сделал так, но непонятно, как извлечь какую-то полезную информацию оттуда — там просто список всех задекорированных названий функций с адресами.


И длинами, которые элемнтарно вычисляются.

0002:00000a90 ??1?$_Vector_iterator@HV?$allocator@H@std@@@std@@QAE@XZ 00411a90 f i 4555556989.obj
0002:00000b30 ??1?$_Vector_const_iterator@HV?$allocator@H@std@@@std@@QAE@XZ 00411b30 f i 4555556989.obj

Длина

??1?$_Vector_iterator@HV?$allocator@H@std@@@std@@QAE@XZ

есть 00000b30 — 00000a90 == 0xA0 байт.
With best regards
Pavel Dvorkin
Re[3]: Как узнать, что генерирует много кода
От: Тот кто сидит в пруду Россия  
Дата: 01.06.10 05:56
Оценка:
Здравствуйте, MrVoid, Вы писали:

PD>>Project — Properties — Configuration Properties — Linker — Debugging — Generate Map File


PD>>и все как на ладони.


MV>Я сделал так, но непонятно, как извлечь какую-то полезную информацию оттуда — там просто список всех задекорированных названий функций с адресами.


Тебе ж remark правильную утилиту уже посоветовал — вот ей и пользуйся. А то на 30-мегабайтном, например, екзешнике в мэпфайлах или, тем более, ассемблерных листингах ковыряццо — то еще развлечение. А Symbol Sort хотя бы top-100 нарисует.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.