1
  • Can I measure the code size with the help of an fseek() function and store it to a shell variable?
  • Is it possible to extract the code size, compilation time and execution time using milepost gcc or a GNU Profiler tool? If yes, how to store them into shell variables?

Since my aim is to find the best set of optimization technique upon the basis of the compilation time, execution time and code size, I will be expecting some function that can return these parameters.

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

This will store the execution time to the variable Val. Similarly, I want to get the values of code size as well as compilation time. I will prefer something that I can do to accomplish this, without using an external program!

Praveen Vinny
  • 2,372
  • 6
  • 32
  • 40

3 Answers3

4

for code size on linux, you can use size command on terminal. $size file-name.out

it will give size of different sections. use text section for code size. you can use data and bss if you want to consider global data size as well.

3

You can use the size(1) command http://www.linuxmanpages.com/man1/size.1.php

Or open the ELF file, walk over section headers and sum the sizes of all the section with type SHT_PROGBITS and the SHF_EXECINSTR flag set.

chill
  • 16,470
  • 2
  • 40
  • 44
1

On non-Linux / non-GNU-utils systems (where you may have neither GNU size nor readelf), the nm program can be used to dump symbol information (including sizes) from object files (libraries / executables). The syntax is slightly system-dependent:

Unfortunately, while the utility is available almost everywhere, its output format is not as portable as could be, so some system-specific scripting is necessary.

Community
  • 1
  • 1
FrankH.
  • 17,675
  • 3
  • 44
  • 63