реклама на сайте
подробности

 
 
> Оптимизация кода.
Jenya7
сообщение Dec 31 2015, 07:50
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



У меня мэйн функция выходит довольно большая. Многие куски кода можно было вынести в отдельные функции. Но мне важна скорость а переход в функцию и обратно это 4 такта если я не ошибаюсь. помножить на количество функций... или это уже паранойя? и еще я заметил если функцию вынести в отдельный модуль код увеличивается примерно на 100 байт.

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
smalcom
сообщение Jan 2 2016, 22:08
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Цитата(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

и никаких лишних вызовов
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jan 3 2016, 02:53
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(smalcom @ Jan 3 2016, 01:08) *
главное чтобы костюмчик сидел компилятор хороший был

Не уверен, что это корректный пример, с одной функцией в том же файле.
Более интересно такое:

Код
typedef void (*tVECTOR)(void);
const tVECTOR function[stQTY] = {Reset, Init, Run, Failure};

void main(void)
{
    InitStateService();
    for (;;)
    {
        event=GetEvent();
        function[state]();
        event=0;
    }
}



--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Оптимизация кода.   Dec 31 2015, 07:50
- - Ruslan1   Цитата(Jenya7 @ Dec 31 2015, 09:50) У мен...   Dec 31 2015, 09:19
|- - Jenya7   Цитата(Ruslan1 @ Dec 31 2015, 14:19) Это ...   Dec 31 2015, 09:28
- - HardEgor   Цитата(Jenya7 @ Dec 31 2015, 13:50) У мен...   Dec 31 2015, 10:39
|- - Jenya7   Цитата(HardEgor @ Dec 31 2015, 15:39) 4 т...   Dec 31 2015, 11:38
|- - Dog Pawlowa   Цитата(Jenya7 @ Dec 31 2015, 14:38) а где...   Dec 31 2015, 12:15
||- - toweroff   Цитата(Dog Pawlowa @ Dec 31 2015, 15:15) ...   Dec 31 2015, 12:23
|- - HardEgor   Цитата(Jenya7 @ Dec 31 2015, 17:38) в том...   Dec 31 2015, 12:33
|- - Dog Pawlowa   Цитата(HardEgor @ Dec 31 2015, 15:33) Т.е...   Dec 31 2015, 19:37
- - SlavaV   Цитата(Jenya7 @ Dec 31 2015, 15:50) У мен...   Jan 1 2016, 03:11
- - smalcom   ЦитатаНе уверен, что это корректный пример, с одно...   Jan 3 2016, 13:30
|- - Dog Pawlowa   Цитата(smalcom @ Jan 3 2016, 16:30) Тем н...   Jan 3 2016, 15:04
- - smalcom   ЦитатаДизассемблер в этом виде мало что дает, т.к....   Jan 3 2016, 19:36
|- - Dog Pawlowa   Цитата(smalcom @ Jan 3 2016, 22:36) что в...   Jan 3 2016, 20:24
- - smalcom   ЦитатаМожет, в конкретном случае это даст что-то т...   Jan 4 2016, 07:27
|- - Dog Pawlowa   Цитата(smalcom @ Jan 4 2016, 10:27) я вам...   Jan 4 2016, 09:28
- - smalcom   ЦитатаЭто потому что функции пустые, в них не изме...   Jan 4 2016, 10:36
|- - Dog Pawlowa   Цитата(smalcom @ Jan 4 2016, 13:36) куски...   Jan 4 2016, 11:01
- - Jenya7   вобщем инлайнить функции и будет всем счастье. с...   Jan 5 2016, 09:39
- - smalcom   говоришь, показываешь - бестолку да-да, с НГ )) -...   Jan 5 2016, 09:42


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th August 2025 - 01:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.0312 секунд с 7
ELECTRONIX ©2004-2016