Вопросы с тегом '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 в 20: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) не оптимизирован и фактически вызовет библиотечную функцию pow, что значительно замедляет производи...
21 июн. '11 в 18:49
10

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

Я искал самый быстрый способ для больших массивов данных popcount. Я столкнулся с очень странным эффектом: изменение переменной цикла от unsigned до uint64_t привело к снижению производительности на 50% на моем ПК. Контрольный показатель #include...
01 авг. '14 в 10:33
9

Быстрая бета-версия: сортировка массивов

Я реализовывал алгоритм в Swift Beta и заметил, что производительность была очень плохой. Покопавшись глубже, я понял, что одним из узких мест является нечто такое же простое, как сортировка массивов. Соответствующая часть здесь: let n = 1000000 var...
07 июн. '14 в 23:53
11

Как скомпилировать Tensorflow с инструкциями SSE4.2 и AVX?

Это сообщение получено от запуска скрипта, чтобы проверить, работает ли 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] successfull...
22 дек. '16 в 23:21
3

Почему мы используем ключевое слово volatile в С++?

Возможный дубликат: С++: когда волатильный ключевой слово когда-либо помогал вам? Я никогда не использовал его, но мне интересно, почему люди его используют? Что он делает? Я искал форум, я нашел его только на С# или в Java.
14 дек. '10 в 9: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 в 6: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 в 16:59
6

Как увидеть, какие флаги -march = native будут активированы?

Я компилирую свое приложение на С++ с помощью GCC 4.3. Вместо того, чтобы вручную выбирать флаги оптимизации, я использую -march=native, который теоретически должен добавить все флаги оптимизации, применимые к аппаратным средствам, которые я компили...
29 мар. '11 в 9:14
2

Пределы типа Nat в Shapeless

В бесформенном, тип Nat представляет собой способ кодирования натуральных чисел на уровне типа. Это используется, например, для списков фиксированного размера. Вы даже можете выполнять вычисления на уровне типа, например. добавьте список элементов N...
22 янв. '14 в 23:15
5

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

GCC 6 имеет новую функцию оптимизатора: предполагается, что this всегда не является нулевым и оптимизирует на основе этого. Распространение диапазона значений теперь предполагает, что этот указатель функций-членов С++ не равен нулю. Это устраняет...
27 апр. '16 в 14:45
2

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

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

Использование этого указателя вызывает странную деоптимизацию в горячем цикле

Недавно я столкнулся с странной деоптимизацией (или, скорее, упущенной возможностью оптимизации). Рассмотрим эту функцию для эффективной распаковки массивов трехбитовых целых чисел в 8-битные целые числа. Он распаковывает 16 ints в каждой итерации ц...
10 окт. '14 в 8:38
11

Эффективность преждевременного возврата в функции

Это ситуация, с которой я часто встречаюсь как неопытный программист, и мне интересно, в частности, за амбициозный, быстрый проект, который я пытаюсь оптимизировать. Для основных C-подобных языков (C, objC, С++, Java, С# и т.д.) И их обычных компилят...
25 окт. '11 в 4:26
6

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

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