Вопросы по теме 'compiler-optimization'
Можно ли реализовать побитовые операторы с помощью целочисленной арифметики?
Я столкнулся с довольно своеобразной проблемой. Я работаю над компилятором для архитектуры, которая не поддерживает побитовые операции. Однако он обрабатывает знаковую 16-битную целочисленную арифметику, и мне было интересно, можно ли реализовать...
20497 просмотров
schedule
27.11.2022
Развертка цикла и производительность кэша данных
Влияет ли развертывание цикла на производительность кэша данных? Это связано с домашним заданием, которое у меня есть, которое требует, чтобы я имитировал код на simplescalar sim-cache, чтобы проверить влияние разбиения цикла, доступа к памяти во...
1114 просмотров
schedule
16.11.2023
Как сделать CAF не CAF в Haskell?
Как мне превратить постоянную аппликативную форму в не постоянную аппликативную форму, чтобы она не сохранялась на протяжении всего срока действия программы?
Я пробовал этот подход:
-- | Dummy parameter to avoid creating a CAF
twoTrues :: ()...
2475 просмотров
schedule
19.11.2022
Будет ли компилятор разворачивать этот цикл?
Я создаю многомерный вектор (математический вектор), в котором я разрешаю основные математические операции +,-,/,*,=. Шаблон принимает два параметра: один — это тип (int, float и т. д.), а другой — размер вектора. В настоящее время я применяю...
5511 просмотров
schedule
05.03.2024
Как можно ускорить этот Java-код?
Я пытаюсь оценить, насколько быстро Java может выполнить простую задачу: прочитать огромный файл в память, а затем выполнить какие-то бессмысленные вычисления с данными. Учитываются все типы оптимизации. Будь то переписывание кода по-другому или...
792 просмотров
schedule
22.10.2023
Почему поэлементное сложение в отдельных циклах намного быстрее, чем в комбинированном?
Предположим, что 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...
245946 просмотров
schedule
11.04.2024
отчет о сбое с использованием оптимизации, отличной от -o0, после обновления xcode 4.5
Сегодня я обновился до Xcode 4.5 и больше не могу создавать функциональную сборку своего приложения. У меня не было проблем с созданием релиза с предыдущей версией Xcode.
Я заметил, что он не падает, когда я запускаю его непосредственно на моем...
1070 просмотров
schedule
24.10.2022
С++: установить логическое значение, только если оно не установлено
У меня есть код в моем приложении C++, который обычно делает это:
bool myFlag = false;
while (/*some finite condition unrelated to myFlag*/) {
if (...) {
// statements, unrelated to myFlag
} else {
// set myFlag to true,...
15226 просмотров
schedule
22.02.2024
Будут ли компиляторы автоматически применять семантику перемещения в методе установки?
Я хочу знать, разрешено ли компилятору автоматически использовать конструктор перемещения для wstring в следующем методе установки (без явного вызова std::move):
void SetString(std::wstring str)
{
m_str = str; // Will str be moved into m_str...
759 просмотров
schedule
23.02.2024
Как быстрее всего проверить, делится ли данное число на 15?
Деление в процессоре занимает много времени, поэтому я хочу спросить, как быстрее всего проверить, делится ли число на какое-то другое число, в моем случае мне нужно проверить, делится ли число на 15.
Также я просматривал Интернет и нашел забавные...
32397 просмотров
schedule
04.01.2024
Изменение кода GCC. Как проверить добавление новых функций?
Я изучаю компиляторы и хочу внести собственные изменения в парсер и лексер GCC. Есть ли какой-либо инструмент для тестирования или какой-либо другой доступный способ, который позволяет мне изменить код gcc и соответственно протестировать его.
Я...
135 просмотров
schedule
29.09.2022
Расчет длины массива кеша Java в циклах
Допустим, у меня есть массив, который я хотел бы перебрать:
int[] someArray = {1,2,3,4}
for (int i = 0; i < someArray.length; i++) {
// do stuff
}
Будет ли эта длина массива вычисляться с каждой итерацией или будет оптимизирована для...
1482 просмотров
schedule
17.10.2022
Глобальные переменные без указателей в LLVM
Я пишу проход функции и хотел бы добавить глобальную переменную типа int на этапе инициализации для использования в фактической работе прохода.
До сих пор у меня есть
bool doInitialization(Module &M) {
LLVMContext &c =...
1183 просмотров
schedule
30.09.2022
Как не указывать точный порядок оценки аргумента функции помогает компилятору C & C++ генерировать оптимизированный код?
#include <iostream>
int foo() {
std::cout<<"foo() is called\n";
return 9;
}
int bar() {
std::cout<<"bar() is called\n";
return 18;
}
int main() {
std::cout<<foo()<<' '<<bar()<<'...
270 просмотров
schedule
31.10.2023
Законно ли оптимизировать распределение памяти?
Дана программа:
#include <cstdlib>
#include <memory>
bool test() {
int* ptr = (int *)malloc(sizeof(int));
bool result = ptr != nullptr;
free(ptr);
return result;
}
bool test2() noexcept {
int * ptr;
try {
ptr = new...
55 просмотров
schedule
19.10.2022
Есть ли способ установить Pandas с PyPy?
Я пытаюсь запустить некоторый код, используя PyPy , чтобы ускорить его. В моем коде используются кадры данных Pandas , поэтому я пытаюсь найти способ установить пакет...
К сожалению, я не могу найти способ сделать это... поиск в Интернете дает...
10321 просмотров
schedule
21.09.2022
Почему автовекторизация gcc не работает с матрицей свертки больше 3x3?
Я реализовал следующую программу для матрицы свертки
#include <stdio.h>
#include <time.h>
#define NUM_LOOP 1000
#define N 128 //input or output dimention 1
#define M N //input or output dimention 2
#define P 5 //convolution...
430 просмотров
schedule
07.03.2024
Почему он показывает puts при дизассемблировании, независимо от того, использую ли я printf или puts?
Я новичок в программировании и хотел спросить, почему я получаю тот же результат с другим кодом. На самом деле я читаю книгу, и пример в книге с printf (также на ассемблере). В этом случае он говорит <printf@plt> . Код ассемблера в книге...
389 просмотров
schedule
03.12.2023
Разрешают ли ссылки const rvalue дополнительную оптимизацию для компилятора?
Модификатор const для параметра функции в C++ означает, что эта функция не может изменить значение параметра, но не гарантирует, что оно не может быть изменено кем-то другим во время выполнения функции. Таким образом, компилятор не может выполнять...
395 просмотров
schedule
09.11.2022
Как именно sunkaddr используется в LLVM IR?
Как и для чего используется sunkaddr в LLVM IR. Я вижу, что он используется для векторизованного доступа к массиву в цикле for. Это регистр или операнд памяти?? И где я могу найти больше информации о sunkaddr.
54 просмотров
schedule
29.01.2024