Описание тега constantfolding
Сворачивание констант связано с оптимизацией компилятора, используемой многими современными компиляторами. Сворачивание констант - это процесс распознавания и оценки статического выражения при компиляции, а не их вычисление во время выполнения.
2
ответа
Насколько эффективно постоянное сворачивание в компиляторе C?
Мой вопрос может быть слишком простым, но я не нашел ответа, извините за это. если у меня есть такой код: ... #define N 6 ... float a, b; ... a = 2.0 * 3 * N * b; ... затем, после компиляции, этот код станет чем-то вроде этого? ... a = 36.0 * b; ...…
12 сен '12 в 09:13
5
ответов
Складывать утверждения в классе C++?
Итак, в ситуации неклассного типа я могу сделать что-то вроде этого: int val_to_check = 0; int some_func(int param) { assert(val_to_check == 0); return param*param+param; } int main() { printf("Val: %i\n", some_func(rand())); return 0; } Если val_to…
28 сен '09 в 01:40
2
ответа
log(10.0) может компилироваться, но log(0.0) не может?
Для следующего исходного кода C: #include <math.h> int main(void) { double x; x = log(0.0); return 0; } Когда я собираю с gcc -lm, Я получил: /tmp/ccxxANVH.o: In function `main': a.c:(.text+0xd): undefined reference to `log' collect2: error: l…
18 июн '14 в 20:35
2
ответа
Компилятор Голанга использует постоянное свертывание?
Просто интересно, использует ли компилятор "go" какую-либо оптимизацию, например, постоянное свертывание. https://en.wikipedia.org/wiki/Constant_folding искал в Google, но не смог найти ответ, который я ищу.
24 окт '17 в 21:46
0
ответов
Babel 6 и константы складывания / распространения
Может ли кто-нибудь предложить правильный способ устранения констант из кода в производственном режиме? Я уже тестировал babel-plugin-constant-fold и babel-plugin-dead-code-elvention, но они оба работают только с babel 5, а не с babel 6. Пример: con…
18 май '16 в 15:07
1
ответ
Оптимизация постоянного сворачивания / распространения с барьерами памяти
Некоторое время я читал, чтобы лучше понять, что происходит при многопоточном программировании с современным (многоядерным) процессором. Однако, когда я читал это, я заметил код ниже в разделе "Явные барьеры компилятора", который не использует volat…
29 апр '15 в 11:31
3
ответа
JVM выполняет постоянное свертывание во время выполнения?
Если у меня есть две постоянные, известные во время компиляции, компилятор Java свернет их. final static int foo = 2; final static int bar = 17; int myVariable; int myFunction(){ return foo*bar + myVariable; } Во время выполнения myFunction вернет 3…
04 янв '14 в 02:12
1
ответ
C++ константа, складывающая цикл для простых чисел
Взглянув на предыдущие вопросы 1, 2, мне стало интересно, могу ли я заставить компилятор выполнить постоянное свертывание для следующего кода, который печатает простые числа. #include <iostream> using namespace std; inline bool is_prime(int n)…
17 фев '18 в 08:28
1
ответ
Почему бы избежать постоянного сворачивания в Java? Когда?
Я видел некоторые коды в slf4j, как показано ниже. Я не знаю, почему избегать постоянного складывания здесь. Нужно ли это делать? или просто лучшая практика. какая польза от этого? Благодарю. /** * Declare the version of the SLF4J API this implement…
15 янв '11 в 18:00
1
ответ
Рекурсивно применять шаблоны к результирующему дереву в XSLT (постоянное свертывание)
Я пытаюсь применить константное свертывание к представлениям XML простых числовых выражений. Свертывание констант - это процесс замены константных (под) выражений их буквальным значением. Часть постоянного свертывания заменяет каждую двоичную операц…
28 дек '11 в 15:27
1
ответ
Избегайте включения типов, чтобы обеспечить постоянное сворачивание
Я пытаюсь найти иерархию классов, которая позволяет реализовать заполнители для регистров процессора и операций над ним. Это также должно позволить складывать константы во время выполнения. Для простоты я рассмотрю только одну операцию, здесь умноже…
03 мар '13 в 00:02
1
ответ
Есть ли способ отключить постоянную оптимизацию сворачивания в GHC?
Мне нужно скомпилировать некоторый исходный код на Haskell с оптимизацией GHC -O1, но с отключенной постоянной оптимизацией сворачивания. Однако я не смог найти флаг оптимизации для переключения константного свертывания в руководстве по GHC. Возможн…
14 мар '16 в 20:41
3
ответа
Что такое постоянное сворачивание в компиляторе Java?
Возможный дубликат: есть ли концепция под названием "Constant Folding" в Java? Привет, я наткнулся на строку Java-компилятор использует нечто, известное как Constant Folding. Что это? и как это влияет?
15 фев '10 в 05:34
2
ответа
Как работает O=Deparse, и есть ли в Perl и сворачивать константы?
Мне интересно, делает -MO=Deparse показать вам все оптимизации Perl, и почему это не сворачивается в Perl 5.10? $ perl -MO=Deparse -e'[qw/foo bar baz/]->[0]' ['foo', 'bar', 'baz']->[0]; -e syntax OK Некоторые на IRC думали, что O=Deparse может…
24 авг '10 в 21:32
2
ответа
Массив переменной длины, сложенный в постоянный массив
const int buf_length = 255; char buf[ buf_length + 1 ]; snprintf(buf, buf_length, "%d Next on [%s] %s:", channel, station_channel(channel), station_name(channel)); strncat(buf, "(", buf_length - strlen (buf)); strncat(buf, station_country( xmltv ), …
26 авг '13 в 01:05
1
ответ
Компилятор не сворачивает константу для класса маскирования
Для встроенного проекта я использую вспомогательные классы для флагов и масок. По неизвестным причинам код класса маски некорректно сложен, как ожидалось. Минимальная реализация маски показана ниже: template<typename Enum, typename MaskValue> …
12 май '18 в 20:58
3
ответа
Почему 0,1 + 0,2 == 0,3 в D?
assert(0.1 + 0.2 != 0.3); // shall be true моя любимая проверка, что язык использует собственную арифметику с плавающей точкой. C++ #include <cstdio> int main() { printf("%d\n", (0.1 + 0.2 != 0.3)); return 0; } Выход: 1 http://ideone.com/ErBMd…
29 июл '11 в 14:03
4
ответа
gcc комплексное постоянное складывание
Похоже, что у gcc есть некоторое ограничение на сложное постоянное сворачивание. Вот пример: static inline unsigned int DJBHash(const char *str) { int i; unsigned int hash = 5381; for(i = 0; i < strlen(str); i++) { hash = ((hash << 5) + has…
01 окт '13 в 15:34
2
ответа
Минимально гарантированное постоянное складывание в C
Вопрос Мне любопытно, есть ли какие-либо гарантии о постоянном сворачивании, выполняемом в C. Где я посмотрел Эта ссылка на сайте, репутация которого мне неизвестна, делает необоснованный комментарий: Все компиляторы C могут складывать целочисленные…
08 апр '16 в 08:01
0
ответов
Компилировать исходники Python без постоянной оптимизации сворачивания
У меня есть фрагмент Python следующим образом 5 + 6 * 8 Компиляция этого в AST дает: >>> ast.dump(compile('5+6*8', '', 'eval', ast.PyCF_ONLY_AST)) Expression(body=BinOp(left=Num(n=5), op=Add(), right=BinOp(left=Num(n=6), op=Mult(), right=Nu…
06 янв '17 в 10:57