Инструменты оптимизации для C и C ++ - PullRequest
5 голосов
/ 14 июня 2011

Какие инструменты для систем Windows и Linux можно использовать для определения проблем с выравниванием, пропусков кэша и других параметров, относящихся к коду, сгенерированному Visual C ++ и GCC?Могу ли я использовать эти инструменты для определения выравнивания структур, чтобы избежать заполнения компилятором?

Ответы [ 2 ]

3 голосов
/ 14 июня 2011

Для определения пропусков кэша вам понадобится профилировщик уровня процессора, например, oprofile или vtune, или инструмент динамического инструментария, например, valgrind с cachegrind.

Для поиска проблем с выравниванием структур существует инструмент под названием pahole для объектных файлов с DWARF отладочной информацией.

1 голос
/ 14 июня 2011

Если вы хотите избежать заполнения в структурах данных, вы можете использовать __attribute__((__packed__)) для gcc или для Microsoft Visual Studio #pragma(pack(push,1)) до объявления вашей структуры и #pragma(pop) после объявления вашей структуры.Вы также можете передать параметр командной строки компилятору Microsoft Visual Studio / Zp1 для упаковки в один байт http://msdn.microsoft.com/en-us/library/xh3e3fd0(v=vs.80).aspx или с помощью gcc -falign-function = 8 для упаковки в границах 1 байта.Ваша кодовая база будет меньше, однако это может иметь серьезные негативные последствия для вашей производительности ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...