Вопросы по теме 'compiler-optimization'
изменяемый квалификатор и переупорядочение компилятора
Компилятор не может исключить или изменить порядок чтения / записи в переменные с указанием volatile .
Но как насчет случаев, когда присутствуют другие переменные, которые могут или не могут быть volatile -квалифицированными?
Сценарий 1...
5798 просмотров
schedule
05.10.2023
Короткое замыкание логических операндов без побочных эффектов
Для вознаграждения: Как можно отключить это поведение в каждом конкретном случае, не отключая и не снижая уровень оптимизации?
Следующее условное выражение было скомпилировано на MinGW GCC 3.4.5, где a — это тип signed long , а m — тип...
913 просмотров
schedule
28.01.2024
оптимизация компилятором возвращаемого значения в VS 2010
используя VS 2010 с полной оптимизацией /Ox, посмотрите на следующие два вызова функций:
static string test1(const string& input)
{
return input;
}
static void test2(const string& input, string& output)
{
output = input;
}...
667 просмотров
schedule
03.08.2022
Оптимизация компилятора, потокобезопасность?
У меня вопрос относительно оптимизаций, которые потенциально может сделать компилятор.
Приведенный ниже код говорит сам за себя (это пример):
typedef struct test
{
short i;
} s_test;
int function1(char *bin)
{
s_test foo;...
891 просмотров
schedule
22.12.2023
Промежуточная генерация кода для моего компилятора Fortran: DAG или четверки
Я пишу мини-компилятор Fortran с использованием Flex и Bison. На данный момент я закончил лексический и синтаксический анализ. Я занимаюсь семантическим анализом проверки типов и теперь должен выбрать IR. Моя целевая машина - MIPS. Поэтому я хочу...
464 просмотров
schedule
01.09.2022
Существует ли эквивалент флага -ffast-math для компилятора Visual Studio C++?
Я работаю с компилятором C++ по умолчанию (думаю, он называется «компилятор Visual Studio C++»), который поставляется с Visual Studio 2013 с флагом /Ox ( Полная оптимизация ). Из-за побочных эффектов с плавающей запятой я должен отключить флаг...
5923 просмотров
schedule
24.03.2024
Возможно ли (как) дать директивы компилятору внутри кода c/c++
Я хотел бы, чтобы мой исходный код давал определенные директивы компилятора (такие как удаление символов, оптимизация скорости, размеры кадров стека и т. д.).
Точно так же, как #pragma comment(lib, "Mylibrary.lib") дает команду компоновщику...
139 просмотров
schedule
19.08.2022
Расширение компилятора для оценки сложной функции (с известными входными значениями) во время компиляции, вне досягаемости `constexpr`
Взгляните на этот пример . Попытка использовать constexpr для получения оценки времени компиляции будет крайне сложной, если не невозможной.
Однако при вызове функции все аргументы известны во время компиляции. Теоретически (при наличии...
238 просмотров
schedule
04.07.2022
Большинство компиляторов преобразуют % 2 в битовое сравнение? Это действительно быстрее?
В программировании часто нужно проверять, является ли число нечетным или четным. Для этого мы обычно используем:
n % 2 == 0
Однако я понимаю, что оператор '%' фактически выполняет деление и возвращает остаток; поэтому в случае выше было...
395 просмотров
schedule
11.11.2023
Есть ли способ отключить оптимизацию циклов как при компиляции C++, так и при компиляции Rust?
Я ищу флаг компилятора, который позволит мне предотвратить оптимизацию компилятором цикла в коде следующим образом:
void func() {
std::unique_ptr<int> up1(new int(0)), up2;
up2 = move(up1);
for(int i = 0; i < 1000000000; i++)...
294 просмотров
schedule
26.01.2024
Уменьшение размера отладочных символов (исполняемый файл раздувается до 4 ГБ)
Таким образом, основная проблема заключается в том, что размер моего встроенного исполняемого файла составляет 4 ГБ с включенными символами отладки (от 75 МБ до 300 МБ без символов отладки и с различными уровнями оптимизации). Как я могу...
2378 просмотров
schedule
10.10.2023
C# Псевдоним атрибута (например, встроенный намек)
Некоторое время я хотел сократить "встроенный" атрибут (no- using -pollution) от абсурдности: [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)] до, ну, [InlineHint] или...
826 просмотров
schedule
16.03.2024
GCC - неверная оптимизация при использовании сигналов POSIX
#include <stdlib.h>
#include <stdio.h>
#include <signal.h>
int current = 0;
void sigint_handle(int sig) {
printf("sigint: %d\n", current);
}
int main()
{
sigset(SIGINT, sigint_handle);
while (1) {
current++;...
53 просмотров
schedule
15.03.2024
Как заставить IAR использовать нужные инструкции Cortex-M0+ (для этой функции оптимизация будет отключена)
Мне нужно заставить IAR tp использовать определенную инструкцию Cortex-M0+ в какой-то части моего кода при написании кода на C.
Пожалуйста, не предлагайте чистые функции ассемблера или встроенный ассемблер и т. д.
Мне удалось сделать это для 51...
162 просмотров
schedule
14.10.2022
Почему p1007r0 std::assume_aligned устраняет необходимость в эпилоге?
Мое понимание заключается в том, что векторизация кода работает примерно так:
Для данных в массиве ниже первого адреса в массиве, который кратен 128 (или 256, или любым другим инструкциям SIMD), выполняется медленная поэлементная обработка....
296 просмотров
schedule
04.10.2022
Неверное двойное преобразование компилятором AIX 13.1.3 для c++
Мы приводим данные из массива char* к функции do double, как в следующей функции:
double getDouble(const char* szData, const size_t dataLength)
{
double res = 0;
if(dataLength == 8)
{
ub8 doubleData = *(ub8*)(szData);...
123 просмотров
schedule
20.10.2023
неспособность оптимизировать, казалось бы, очевидный инвариант цикла (но квалификатор volatile сделал волшебство)
Ссылка на Godbolt: https://godbolt.org/g/Hv6MAL
typedef int cell;
cell y;
const cell *phys_addr = (const cell*)0x12340;
int main() {
for (int i = 0; i < 20; i++) {
for (int j = 0; j < 30; j++) {
for (int k = 0; k...
110 просмотров
schedule
13.03.2024
Почему это мертвое хранилище unique_ptr нельзя устранить?
#include <memory>
#include <vector>
using namespace std;
vector<unique_ptr<int>> e;
void f(unique_ptr<int> u) {
e.emplace_back(move(u));
}
Для Clang и GCC , приведенный выше фрагмент кода генерирует что-то...
127 просмотров
schedule
20.03.2024
В GCC, что такое оптимизация дерева по сравнению с оптимизацией RTL?
Когда я сообщаю об ошибке в GCC по поводу пропущенной оптимизации, я всегда не понимаю, следует ли мне подавать ее в разделе «rtl-оптимизация» или «оптимизация дерева». Я просмотрел страницу компонентов на GCC bugzilla, и это не так. там толком не...
125 просмотров
schedule
09.11.2022
Как убедиться, что часть кода оптимизирована?
tl;dr : можно ли как-то гарантировать (например, написав модульный тест), что некоторые вещи будут оптимизированы, например. целые петли?
Обычный подход, чтобы убедиться, что что-то не включено в производственную сборку, состоит в том, чтобы...
533 просмотров
schedule
07.03.2024