Вопросы с тегом 'compiler-optimization'

Оптимизация компилятора включает в себя адаптацию компилятора для сокращения времени выполнения или размера объекта или обоих. Это может быть выполнено с использованием аргументов компилятора (например, CFLAGS, LDFLAGS), плагинов компилятора (например, DEHYDRA) или прямых изменений в компиляторе (таких как изменение исходного кода).
12
ответов

Почему GCC не оптимизирует a * a * a * a * a * a to (a * a * a) * (a * a * a)?

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

Почему в отдельных циклах стигментные добавления намного быстрее, чем в комбинированном цикле?

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

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

Я искал самый быстрый способ для больших массивов данных popcount. Я столкнулся с очень странным эффектом: изменение переменной цикла от unsigned до uint64_t привело к снижению производительности на 50% на моем ПК. Контрольный показатель #include...
задан 01 авг. '14 в 13:33
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
2
ответов

Почему лямбды лучше оптимизируются компилятором, чем простые функции?

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

Почему улучшенный оптимизатор GCC 6 нарушает практический код на С++?

GCC 6 имеет новую функцию оптимизатора: предполагается, что this всегда не является нулевым и оптимизирует на основе этого. Распространение диапазона значений теперь предполагает, что этот указатель функций-членов С++ не равен нулю. Это устраняет...
задан 27 апр. '16 в 17:45
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
3
ответов

Почему код активно пытается предотвратить оптимизацию хвостового вызова?

Название вопроса может быть немного странным, но дело в том, что, насколько я знаю, ничего не говорит о оптимизации хвостового вызова вообще. Однако, просматривая проекты с открытым исходным кодом, я уже сталкивался с несколькими функциями, которые а...
задан 29 мая '12 в 0:46