Описание тега compiler-optimization
Оптимизация компилятора включает в себя адаптацию компилятора для уменьшения времени выполнения или размера объекта или того и другого. Это может быть выполнено с использованием аргументов компилятора (например, CFLAGS, LDFLAGS), плагинов компилятора (например, DEHYDRA) или прямых модификаций компилятора (например, изменения исходного кода).
3
ответа
Насколько дорого компилятору обрабатывать заголовок с защитой от включения?
Чтобы ускорить компиляцию большого исходного файла, имеет ли смысл сокращать количество заголовков, используемых в модуле перевода, или же затраты на компиляцию кода намного превышают время, необходимое для обработки include-guarded заголовок? Если …
13 июл '11 в 23:21
1
ответ
Компиляторы C/C++, такие как GCC, обычно оптимизируют по модулю с постоянной степенью 2?
Допустим, у меня есть что-то вроде: #define SIZE 32 /* ... */ unsigned x; /* ... */ x %= SIZE; Будет ли x % 32 как правило, сводится к x & 31 большинством C/C++ компиляторов, таких как GCC?
17 мар '14 в 03:28
1
ответ
Почему мой оптимизированный IL дважды хранит одно и то же значение в переменной save?
Исходный код представляет собой цикл for следующим образом: public class ForLoop { public static void Main() { var count = 0; for (var i = 0; i < 10; i = i++) { count++; } } } Я скомпилировал его с включенной оптимизацией (csc /o+ ForLoop.cs), но…
14 мар '15 в 20:23
3
ответа
Почему лямбды могут быть лучше оптимизированы компилятором, чем обычные функции?
В своей книге The C++ Standard Library (Second Edition) Николай Йосуттис утверждает, что компилятор может лучше оптимизировать лямбда-выражения, чем простые функции. Кроме того, компиляторы C++ оптимизируют лямбда-выражения лучше, чем обычные функци…
05 дек '12 в 11:38
4
ответа
Добавление против производительности ORing
Я видел, как люди используют сложение, где побитовое ИЛИ было бы более концептуально подходящим, потому что они считают, что это быстрее. Это правда? Если да, все ли современные компиляторы знают этот трюк?
04 апр '11 в 01:23
0
ответов
Может ли C++ const вызывать методы с помощью оптимизатора?
Этот isocpp.org FAQ по константности гласит: (...) давайте уточним, изменяет ли метод логическое состояние объекта. Если вы находитесь за пределами класса - вы обычный пользователь, каждый эксперимент, который вы можете выполнить (каждый метод или …
26 ноя '18 в 22:18
2
ответа
Некоторый указатель на понимание исходного кода GCC
Я учусь на оптимизации GCC для многоядерных процессоров. Я пытался пройтись по исходному коду, это трудно понять, так как мне нужно добавить некоторый код в бэкэнд. Может кто-нибудь предложить какой-нибудь хороший ресурс, который объясняет поток код…
23 мар '10 в 23:21
2
ответа
C++ O3 оптимизация прерывает работу цикла while
У меня есть этот простой код, который ищет файл для "данных" шаг за шагом, используя fseek в wcm файле pcm: FILE * waveFile; waveFile = fopen ( this->fileLocation.c_str ( ), "rb" ); // ... some other code here between, then ... // int seekTo = 0;…
13 май '16 в 11:29
1
ответ
Java: разница между компилятором Java Hotspot и клиентским компилятором
Сегодня, когда я читал о Escape Analysis в JVM от http://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html. В этом они обсуждают Java Hotspot Server Compiler, Я запутался что Server Compiler на Яве. Я был также Google…
30 мар '15 в 09:39
0
ответов
Какие различия между оптимизатором GCC и clang приводят к тому, что этот код не оптимизируется?
Если я скомпилирую следующий код: #include <boost/range/irange.hpp> template<class Integer> auto iota(Integer last) { return boost::irange(0, last); } template<class Integer, class StepSize> auto iota(Integer last, StepSize step_si…
27 янв '17 в 18:37
1
ответ
Почему компилятор gcc ведет себя по-разному в этих двух случаях?
У меня есть два одинаковых цикла while, и мне любопытно, почему компилятор C ведет себя по-разному в каждом случае. Подробности: Компилятор: x86-64 gcc 8.2 Опции: -O3 void use() { int* ptr; while (*ptr == 6); } Assembly: use: cmp DWORD PTR ds:0, 6 j…
23 ноя '18 в 11:25
1
ответ
GCC Оптимизирует предложение if, которое нельзя оптимизировать
Я создал небольшой код, показывающий ошибку, с которой я столкнулся #include<stdlib.h> #include<stdio.h> int test(char * flag) { char flagger = *flag; printf("test value %d", (int) flagger); if (flagger != 0x82) { exit(3); } else { retur…
21 фев '17 в 13:23
1
ответ
g++: оптимизация -march=haswell и более новые изменения числовой результат
Я работал над оптимизацией производительности и, конечно, проводил регрессионные тесты, когда заметил, что g++, похоже, меняет результаты в зависимости от выбранной оптимизации. До сих пор я думал, что -O2 -march=[whatever] должны давать одинаковые …
27 июл '17 в 14:10
1
ответ
stdafx.h для всех заголовочных файлов или только для соответствующих
При использовании оптимизированной компиляции Microsoft -stdafx.h - это идея, что все включения должны когда-либо встречаться только в этом файле. Или это просто компиляция интенсивных компонентов? Если придерживаться принципа " все ", смогу ли я до…
04 янв '16 в 22:58
1
ответ
Ошибки valgrind при сборке с встраиванием, сделанные g++5 - ошибка в valgrind или g++5?
Точные версии g++ и valgrind: g++-5 (Ubuntu 5.2.1-23ubuntu1~12.04) 5.2.1 20151031 valgrind-3.7.0 Я не стал вдаваться в то, какой именно флаг делает это (finline-small-functions/findirect-inlining/finline-functions/finline-functions-вызвано-единожды …
27 фев '16 в 14:48
1
ответ
Зачем GCC включать оптимизацию в O2/O3, когда он явно говорит, что это замедлит работу программы?
Цитируется по https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html: -falign-этикетки -falign-метки = п Выровняйте все цели ветвления с границей степени двух, пропуская до n байтов, как -falign-functions. Эта опция может легко сделать код медленн…
08 июл '17 в 20:07
1
ответ
Существуют ли какие-либо компиляторы / интерпретаторы, которые оптимизируют операции, которые не выполняются на месте?
Я часто наблюдаю подобные ошибки, когда оцениваю работы (и иногда делаю их сам): % any vectorized language, such as MATLAB/Octave/R that supports logical indexing Y = rand(1,10); % random numbers drawn uniformly from the interval [0,1] in a 1x10 vec…
01 дек '13 в 00:56
0
ответов
Является ли член временного также временным?
Учитывая функцию как: Foo MakeFoo(const std::string& name); мы могли бы ожидать, что следующее будет построено, предполагая, что конструктор перемещения определен для Fooпотому что RHS является временным: auto foo = MakeFoo("foo 1"); То же самое…
16 апр '18 в 18:58
1
ответ
C++ const оптимизация компилятора
Скажем, у меня есть следующий код: int foo () { int const x = 0; return x; } Разрешено ли компилятору перемещать x в глобальную область? Как насчет следующего сценария? Можно res2 варьироваться в зависимости от оптимизаций? std::set<int const *&g…
23 янв '13 в 01:04
3
ответа
Локализуйте параметры компиляции g++ в коде
Я ищу простой способ локализовать определенные опции компиляции g++ (g++-4.9) для определенных строк кода или, по крайней мере, целевых функций. Я в целом заинтересован, но и конкретно -fast-math, -ffinite-math-only а также -fno-signed-zeros опции. …
28 авг '15 в 15:55