русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Inline – функції


Дата додавання: 2014-04-22; переглядів: 1117.


Функції, оголошення яких починається ключовим словом inline, називають вбудованими функціями. Виконання таких функцій має бути максимально швидким, тому компілятор «вбудує» код такої функції у місці її виклику. Це може збільшити обсяг коду програми, оскільки кожен виклик функції буде замінений її тілом. Тому вбудованими доцільно оголошувати невеликі функції, які викликаються багатократно і мають критичний вплив на виконання програми.

В останньому прикладі inline – функцією можна оголосити функцію array_swap, яка виконує просту операцію і викликається багато разів. Оголошення функції буде виглядати таким чином:

 

inline void array_swap( int * a, int * b ) {

int t = *a;

*a = *b;

*b = t;

}

 

Використання вбудованих функції дає змогу дотримуватись принципів функціональної структуризації програми і одночасно забезпечити максимальну швидкодію реалізації таких функцій. Виграш у часі виконання inline – функцій порівняно з звичайними функціями досягається завдяки тому, що вбудований код не вимагає передавання параметрів і значення функції, а також збереження в стеку поточних станів системних регістрів. Але inline не є обов’язковою директивою, тобто компілятор може не вбудовувати дану функцію, а використати інші засоби оптимізації швидкодії або взагалі проігнорувати вказівку inline.

Для прикладу наведемо inline – функцію, що обчислює значення квадрату заданого аргументу дійсного типу:

 

inline int sqr( int x ) {

return x * x;

}

 

Якщо звернутися до цієї функції для обчислення виразу

 

sqr( a + b ) / ( sqr( a ) + sqr( b ) )

 

то компілятор може поміняти виклики функцій на вбудування її тіла, тобто вираз набуде вигляду

 

( a + b ) * ( a + b ) / ( a * a + b * b )

 


<== попередня лекція | наступна лекція ==>
Взаємодія фактичних і формальних параметрів функцій | Масиви і символьні рядки як параметри функцій


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн