Описание тега strength-reduction
Замена дорогостоящих операций на более дешевые. Классический пример: x = n * i в цикле становится x += n.
2
ответа
Как я могу уменьшить силу деления на 2^n + 1?
Мне нужно выполнить несколько целочисленных делений в горячем пути моего кода. Я уже определил с помощью профилирования и подсчета циклов, что целочисленные деления стоят мне. Я надеюсь, что смогу что-то сделать, чтобы разделить дивизии на что-то бо…
25 окт '10 в 17:32
1
ответ
Как умножить регистр на 37, используя только две последовательные инструкции в x86?
Скажем,%edi содержит x, и я хочу получить 37*x, используя только 2 последовательные инструкции по обучению, как бы мне поступить? Например, чтобы получить 45x вы бы сделали leal (%edi, %edi, 8), %edi leal (%edi, %edi, 4), %eax (to be returned) Я не …
29 сен '17 в 01:44
5
ответов
Добавить против мул (IA32-Assembly)
Я знаю, что добавить быстрее по сравнению с многофункциональным. Я хочу знать, как использовать add вместо mul в следующем коде, чтобы сделать его более эффективным. Образец кода: mov eax, [ebp + 8] #eax = x1 mov ecx, [ebp + 12] #ecx = x2 mov edx, […
14 сен '10 в 05:15
2
ответа
Почему эта программа не оптимизирована?
Рассмотрим следующую простую программу (адаптированную из этого вопроса): #include <cstdlib> int main(int argc, char** argv) { int mul1[10] = { 4, 1, 8, 6, 3, 2, 5, 8, 6, 7 }; // sum = 50 int mul2[10] = { 4, 1, 8, 6, 7, 9, 5, 1, 2, 3 }; // sum…
10 июн '15 в 08:28
2
ответа
Уменьшите этот цикл до уравнения
Эта функция (написана на C для удобства, но это не важно для вопроса) определяет размер массива. Я уверен, что это можно преобразовать в цепочку if-else или даже в уравнение, но я не достаточно умен, чтобы понять, как это сделать. (Я попытался запис…
24 янв '14 в 19:00
1
ответ
Индексы легче векторизовать, чем указатели?
Есть ли какой-нибудь пример (например, на https://godbolt.org/), где CLang генерирует худший код, когда алгоритм выражается итерациями указателя вместо индексов массива? Например, в одном случае он может векторизоваться / разворачиваться, а в другом…
30 дек '19 в 00:08
2
ответа
Снижение прочности при делении с плавающей запятой вручную
В одном из наших последних заданий по компьютерным наукам в этом семестре мы должны применить снижение прочности к некоторым фрагментам кода. Большинство из них были прямолинейными, особенно с изучением вывода компилятора. Но одну из них я не смогу …
16 июн '22 в 19:13