Цитата(Jenya7 @ Dec 31 2015, 09:50)

У меня мэйн функция выходит довольно большая. Многие куски кода можно было вынести в отдельные функции. Но мне важна скорость а переход в функцию и обратно это 4 такта если я не ошибаюсь. помножить на количество функций... или это уже паранойя? и еще я заметил если функцию вынести в отдельный модуль код увеличивается примерно на 100 байт.
главное чтобы
костюмчик сидел компилятор хороший был
Код
smalcom [ ~/test_gc ]$ cat mod.h mod.c main.c
int foo(int p);
int foo(int p)
{
volatile int t;
t = p * 2;
return t * 2;
}
#include "mod.h"
int main()
{
volatile int k = 4;
k = foo(k);
return 0;
}
Код
smalcom [ ~/test_gc ]$ gcc -c main.c -flto -O2 -o main.o && gcc -c mod.c -flto -O2 -o mod.o && gcc main.o mod.o -flto -O2 -o prog1
smalcom [ ~/test_gc ]$ objdump -h -S ./prog1 | grep \<main\> -A 12
00000000004003a0 <main>:
4003a0: c7 44 24 f8 04 00 00 movl $0x4,-0x8(%rsp)
4003a7: 00
4003a8: 8b 44 24 f8 mov -0x8(%rsp),%eax
4003ac: 01 c0 add %eax,%eax
4003ae: 89 44 24 fc mov %eax,-0x4(%rsp)
4003b2: 8b 44 24 fc mov -0x4(%rsp),%eax
4003b6: 01 c0 add %eax,%eax
4003b8: 89 44 24 f8 mov %eax,-0x8(%rsp)
4003bc: 31 c0 xor %eax,%eax
4003be: c3 retq
4003bf: 90 nop
и никаких лишних вызовов