Програмування С, С++теорія та практика (частина 2)
2.2.7 Використання іпііпе-специфікатору
Даний специфікатор дозволяє ввести функції з новим ключовим словом іпІіпе, щоб компілятор розмістив код цієї функції безпосередньо у місце виклику функції. Згадаємо, що під час компіляції звичайної функції її код розміщується у деяку область пам’яті. Файл виконання являє собою набір фрагментів коду, до яких звертається основна програма, організовуючи виклик тієї чи іншої функції. Звичайно, при кожній активації функції необхідно зберігати поточну адресу програми, аби знати, куди повернути керування після виконання функції. Не складно припустити, що програма працюватиме повільніше, втрачаючи час на виклик функції. Тому не дивує позиція деяких програмістів принципово не писати малих функцій, включаючи їх безпосередньо до програми, турбуючись перш за все про менший час виконання. Проте програма губить свої переваги, модульність зокрема. Тут у нагоді стають саме іпІіпе-функції, що дозволяють зберегти високомодульний стиль проектування без надлишкових витрат часу на виклики функцій. Виклик такої функції організується таким чином, що передача керування функції (команда переходу) заміняється тілом самої функції. Звичайно, що така функція повинна бути визначена до її першого використання у програмі (одного лише прототипу недостатньо), то ж найдоцільніше їх визначати у кеаіїег- файлі.
Приклад: іпІіпе іп£ тах(іпї а, іп£ Ь)
{
ге'Ьигп (а>Ь)?а:Ь;
}
Бажаний максимальний розмір іпІіпе-функцій - три оператори виконання. Якщо функція займатиме більше рядків, час її виклику можливо порівняти з часом, необхідним для звичайного виконання функції. Тобто із збільшенням розміру функції переваги такої підстановки зменшуються.
ІпІіпе-функція виконується як один рядок, незалежно від того, скільки рядків вона містить та до скількох помилок призведе її виконання. Тому для проведення відлагодження тимчасово слід усунути ключове слово, аби повністю впевнитися у відсутності помилок.
Не усі функції можливо оголосити іпІіпе - функціями. Включення у функцію будь-якого оператора циклу призведе до перетворення у оиґііпе-функцію (тобто звичайну, що не підставлятиметься). У цьому випадку час на виконання циклу “затьмарить” переваги оголошення іпііпе. Насамкінець слід зауважити, що даний специфікатор лише вказує компілятору на необхідність оптимізації виклику даної функції підстановкою її тіла на відміну від звичайної активації функції. Підкреслимо, що тільки вказує, отже інколи компілятор спроможний ігнорувати такі вказівки. Компілятор Уізиаі Сі+ + має ключ, що дозволяє програмісту або перетворити функцію в оиґііпе, якщо вона має відповідні вади (наявність керуючих структур), або залишати її як іпііпе, доки є надія здобути принаймні хоч якусь ефективність алгоритму.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
Схожі підручники
- Преодоление духовного материализма (онлайн)
- НАВЧАЛЬНО-МЕТОДИЧНИЙ КОМПЛЕКС ДИСЦИПЛІНИ «ГРОШІ І КРЕДИТ»
- Загальні питання з курсу Українська мова
- РЕГІОНАЛЬНА ЕКОНОМІКА. Тексти лекцій онлайн (частина 3)
- Стан НПС та основні напрями природоохоронної політики Чехії управлінські, організаційні, економічні та юридичні аспекти
- СЛОВНИК ОСНОВНИХ ЕКОЛОГІЧНИХ ТЕРМІНІВ ТА ПОНЯТЬ
