Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Слишком долгий вызов inline функции / 7 сообщений из 7, страница 1 из 1
27.11.2007, 13:16:55
    #34967979
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком долгий вызов inline функции
есть inline функция, одна строка, без параметров, статическая для класса
по vTune выполнение занимает 30-40 клоков. а вызов - около 800. и выход ок. 150
примерно следующее
Код: plaintext
1.
2.
3.
4.
static inline int top()
{
  return head->next;
}

или еще одна функция, оан, правда, проходит интерфейс, но это же не должно столько занимать времени. (что интерфейс, что не интерфейс должно же быть пох. ???
выполнение занимает 60 тактов, вызов 550, выход 340. функция inline.

отчего так долго ?

аффтопитезь: 4 8 15 16 23 42
...
Рейтинг: 0 / 0
27.11.2007, 14:11:04
    #34968266
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком долгий вызов inline функции
а зачем static. Прелесть inline функции как раз заключается в том, что помещение inline фукнции в заголовочный файл не приведет double defined symbol:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
// h
inline int myfunc()
{
     return somothing;
}

// 1.cpp
#include "header.h"

// 2.cpp
#include "header.h"
...
Рейтинг: 0 / 0
29.11.2007, 15:02:20
    #34975214
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком долгий вызов inline функции
даже не статик, все равно при 50 тактах на выполнение, происходит 800 тактов на вызов это же абсурд !!!
...
Рейтинг: 0 / 0
29.11.2007, 15:35:42
    #34975411
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком долгий вызов inline функции
Aklinдаже не статик, все равно при 50 тактах на выполнение, происходит 800 тактов на вызов это же абсурд !!!брр... как inline функция может вызываться ? она же по определению _встраиваемая_ (in line) в место вызова... или я что-то не так понял ?
...
Рейтинг: 0 / 0
29.11.2007, 16:41:03
    #34975718
Слишком долгий вызов inline функции
Ёшбрр... как inline функция может вызываться ? она же по определению _встраиваемая_ (in line) в место вызова... или я что-то не так понял ?

на все воля компайлера.. надо изучать ассемблер на выходе и делать выводы
...
Рейтинг: 0 / 0
29.11.2007, 18:39:20
    #34976223
Палестинец
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком долгий вызов inline функции
Aklinдаже не статик, все равно при 50 тактах на выполнение, происходит 800 тактов на вызов это же абсурд !!!
для vc

__forceinline int top()
{
return head->next;
}

ну естественно
next имеет тип int
и -> не перегружен.
...
Рейтинг: 0 / 0
29.11.2007, 21:41:40
    #34976554
grieg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком долгий вызов inline функции
Во-первых, inline -- не требование, а рекомендация компилятору. Поэтому, вероятно, надо смотреть ассемблерный код, чтобы понять, инлайнится функция или нет.

Во-вторых, лаг может быть обусловлен некоторой предысторией команд. Ну например, именно перед исполнением встроенной функции закончился командный кеш и происходит обращение к медленной оперативной памяти. Таких вариантов много можно напридумывать.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Слишком долгий вызов inline функции / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]