Питання з тегом 'compiler-optimization'

Оптимізація компілятора включає в себе адаптацію компілятора для скорочення часу виконання або розміру об'єкта або обох. Це може бути виконано з використанням аргументів компілятора (наприклад, CFLAGS, LDFLAGS), плагінів компілятора (наприклад, DEHYDRA) або прямих змін до компіляторі (таких як зміна вихідного коду).
10
відповідей

Чому в окремих циклах стігментние додавання набагато швидше, ніж в комбінованому циклі?

Припустимо, що a1, b1, c1 і d1 вказують на пам'ять купи, і мій числовий код має такий основний цикл. const int n = 100000; for (int j = 0; j <n; j ++) {a1 [j] + = b1 [j]; c1 [j] + = d1 [j]; } Цей цикл виконується 10000 раз через ін ...
заданий 17 дек. '11 о 23:40
12
відповідей

Чому GCC НЕ оптимізує a * a * a * a * a * a to (a * a * a) * (a * a * a)?

Я роблю деяку чисельну оптимізацію в науковому додатку. Я помітив, що GCC оптимізує виклик pow (a, 2), компілюючи його в a * a, але виклик pow (a, 6) не оптимiзований і фактично викличе бібліотечну функцію pow, що значно уповільнює виробляй ...
заданий 21 червня '11 о 21:49
10
відповідей

Заміна 32-бітного лічильника циклів на 64-бітові значення призводить до божевільним відхилень продуктивності

Я шукав найшвидший спосіб для великих масивів даних popcount. Я зіткнувся з дуже дивним ефектом: зміна змінної циклу від unsigned до uint64_t призвело до зниження продуктивності на 50% на моєму ПК. Контрольний показник #include ...
заданий 01 Серпня. '14 13:33
9
відповідей

Швидка бета-версія: сортування масивів

Я реалізовував алгоритм в Swift Beta і зауважив, що продуктивність була дуже поганий. Покопавшись глибше, я зрозумів, що одним з вузьких місць є щось таке ж просте, як сортування масивів. Відповідна частина тут: let n = 1000000 var ...
заданий 08 червня '14 о 2:53
3
відповідей

Чому ми використовуємо ключове слово volatile в С ++?

Можливий дублікат: С ++: коли волатильний ключовий слово коли-небудь допомагав вам? Я ніколи не використовував його, але мені цікаво, чому люди його використовують? Що він робить? Я шукав форум, я знайшов його тільки на С # або в Java.
заданий 14 дек. '10 о 12:14
2
відповідей

Що таке операція в C

#include <stdio.h> volatile int i; int main () {int c; for (i = 0; i <3; i ++) {c = i i; printf ( "% d \ n", c); } Return 0; } Висновок вищевказаної програми, скомпільований за допомогою ...
заданий 19 дек. '12 о 9:48
3
відповідей

Чому GCC генерує таку радикально різну збірку для майже того ж C-коду?

При написанні оптимізованої функції ftol я знайшов дуже дивна поведінка в GCC 4.6.1. Дозвольте мені спочатку показати вам код (для ясності я зазначив відмінності): fast_trunc_one, C: int fast_trunc_one (int i) {int mantissa, exponent, sign, r; ...
заданий 20 Квітня. '12 о 19:59
10
відповідей

Як скомпілювати Tensorflow з інструкціями SSE4.2 і AVX?

Це повідомлення, отримане від запуску script, щоб перевірити, чи працює Tensorflow: I tensorflow / stream_executor / dso_loader.cc: 125] successfully opened CUDA library libcublas.so.8.0 locally I tensorflow / stream_executor / dso_loader.cc: 125] successf .. .
заданий 23 дек. '16 в 2:21
2
відповідей

Межі типу Nat в Shapeless

У аморфному, тип Nat є спосіб кодування натуральних чисел на рівні типу. Це використовується, наприклад, для списків фіксованого розміру. Ви навіть можете виконувати обчислення на рівні типу, наприклад. додайте список елементів N ...
заданий 23 Січня. '14 о 2:15
5
відповідей

Чому покращений оптимізатор GCC 6 порушує практичний код на С ++?

GCC 6 має нову функцію оптимізатора: передбачається, що this завжди не є нульовим і оптимізує на основі цього. Поширення діапазону значень тепер передбачає, що цей покажчик функцій-членів С ++ не дорівнює нулю. Це усуває ...
заданий 27 Квітня. '16 о 17:45
2
відповідей

Чому лямбда краще оптимізуються компілятором, ніж прості функції?

У своїй книзі The C ++ Standard Library (Second Edition) Микола Йосуттіс стверджує, що lambdas краще оптимізується компілятором, ніж прості функції. Крім того, компілятори С ++ оптимізують lambdas краще, ніж вони роблять звичайні функції. (Країн ...
заданий 05 дек. '12 о 14:38
5
відповідей

Як побачити, які прапори -march = native будуть активовані?

Я компілює свій додаток на С ++ за допомогою GCC 4.3. Замість того, щоб вручну вибирати прапори оптимізації, я використовую -march = native, який теоретично повинен додати всі прапори оптимізації, що застосовуються до апаратних засобів, які я комп ...
заданий 29 березня '11 о 12:14
3
відповідей

Використання цього покажчика викликає дивну деоптімізацію в гарячому циклі

Нещодавно я зіткнувся з дивною деоптімізаціей (або, скоріше, упущеною можливістю оптимізації). Розглянемо цю функцію для ефективної розпакування масивів трехбітових цілих чисел в 8-бітові цілі числа. Він розпаковує 16 ints в кожній ітерації ц ...
заданий 10 Жовтня. '14 об 11:38
11
відповідей

Ефективність передчасного повернення в функції

Це ситуація, з якої я часто зустрічаюся як недосвідчений програміст, і мені цікаво, зокрема, за амбітний, швидкий проект, який я намагаюся оптимізувати. Для основних C-подібних мов (C, objC, С ++, Java, С # і т.д.) І їх звичайних Компільо ...
заданий 25 Жовтня. '11 в 7:26
6
відповідей

Чому не може (чи ні) компілятор оптимізувати передбачуваний цикл додавання в множення?

Це питання, який прийшов на розум, коли читав блискучу відповідь Mysticial на питання: чому швидше обробляти відсортований масив, ніж несортоване масив? Контекст для задіяних типів: const unsigned arraySize = 32768; int data [arrayS ...
заданий 30 червня '12 о 20:48