Есть ли метод / функция, чтобы получить размер кода C-программы, скомпилированной с помощью компилятора GCC? (может меняться при применении некоторой техники оптимизации)

  • Могу ли я измерить размер кода с помощью fseek() Функция и сохранить его в переменной оболочки?
  • Можно ли извлечь размер кода, время компиляции и время выполнения, используя milepost gcc или GNU Profiler tool? Если да, как сохранить их в переменных оболочки?

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

MyPgm=/root/Project/Programs/test.c
gcc -Wall -o1 -fauto-inc-dec $MyPgm -o output
time -f "%e" -o Output.log ./output
while read line;
do
echo -e "$line";
Val=$line
done<Output.log

Это будет хранить время выполнения переменной Val, Точно так же я хочу получить значения размера кода, а также время компиляции. Я предпочту что-то, что я могу сделать, чтобы выполнить это, без использования внешней программы!

3 ответа

Решение

Для размера кода в linux вы можете использовать команду size на терминале. $size file-name.out

это даст размер различных разделов. используйте текстовый раздел для размера кода. Вы можете использовать data и bss, если вы хотите учитывать и глобальный размер данных.

Вы можете использовать size(1) команда http://www.linuxmanpages.com/man1/size.1.php

Или откройте файл ELF, просмотрите заголовки разделов и суммируйте размеры всех разделов с типом SHT_PROGBITS и установленным флагом SHF_EXECINSTR.

В системах, отличных от Linux / non-GNU-utils (где у вас может не быть ни GNU size ни readelf), nm Программа может использоваться для выгрузки символьной информации (включая размеры) из объектных файлов (библиотек / исполняемых файлов). Синтаксис немного зависит от системы:

К сожалению, несмотря на то, что утилита доступна почти везде, ее выходной формат не так переносим, ​​как могло бы быть, поэтому необходимы некоторые специфичные для системы сценарии.

Другие вопросы по тегам