Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.07.05;
Скачать: CL | DM;

Вниз

Насколько побитовые операции быстрее простого деления?   Найти похожие ветки 

 
TStas ©   (2009-05-05 17:21) [40]

> AlexDan Да нет, не простыми. Нужно программку несложную написать, которая будет тупыми переборами число решений для неких уравнений искать. Я ух уже несколько написал, просто в данном случае можно хорошую оптимизацию сделать, вот и нужно узнать, сколько тиков занимают следующие операции:
1) Присвоение Х1 := Х2
2) Сравнение В := Х1 = Х2;
3) Умножение Х1 := Х1 * Х2;
4) Сложение Х1 := Х1 + Х2;
5) Взятие по можулю Х1 := Х1 мод Р;
6) Вычитание Х1 := Х1 - Х2;
Чтобы понять, где нужно оптимизировать, а где не нужно. Если мод занимает примерно 70 тиков, то ясно, что писать If X1 >= P then x1 := x1 mod P нужно, а если and занимает 1 тик, то добавлять проверку ненужно.
Вроде, вычитание должно больше тиков, чем сложение занимать, ведь вычитание - это сложение с обратным, но, может, в процессор уже что-то встроено.


 
MBo ©   (2009-05-05 17:29) [41]

В большинстве случаев нужно сначала подумать о "тупых переборах", а уж в последнюю очередь о тиках операции mod


 
Jeer ©   (2009-05-05 17:38) [42]


> нужно сначала подумать о "тупых переборах"


Золотые слова :)


 
депутатъ   (2009-05-07 14:06) [43]

раз уж пошла такая пьянка, то фрагмент кода
int a; a = rand(); a %= 29;
gcc компилирует так:
1. с опциями -O0 -mtune=i386:
call _rand
movl %eax, -4(%ebp)
movl -4(%ebp), %edx
movl $29, -8(%ebp)
movl %edx, %eax
cltd
idivl -8(%ebp)
movl %edx, -4(%ebp)


2. с опциями -O0 -mtune=pentium4:
call _rand
movl %eax, -4(%ebp)
movl -4(%ebp), %ecx
movl $-1925330167, %eax
imull %ecx
leal (%edx, %ecx), %eax
movl %eax, %edx
sarl $4, %edx
movl %ecx, %eax
sarl $31, %eax
subl %eax, %edx
movl %edx, %eax
sall $3, %eax
subl %edx, %eax
sall $2, %eax
addl %edx, %eax
subl %eax, %ecx
movl %ecx, %eax
movl %eax, -4(%ebp)


это к вопросу о времени выполнения инструкции div.



Страницы: 1 2 вся ветка

Текущий архив: 2009.07.05;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.01 c
2-1242561252
Mer
2009-05-17 15:54
2009.07.05
Насколько приемлемо делать два конструктора


2-1242462330
snake-as
2009-05-16 12:25
2009.07.05
Распечатать файл с форматированием и таблицами


15-1240910214
БарЛог
2009-04-28 13:16
2009.07.05
Где хранятся записи о последнем запуске программ?


10-1158657335
Krants
2006-09-19 13:15
2009.07.05
"Selection.End(xlDown).Select" в Excel


15-1240818026
12
2009-04-27 11:40
2009.07.05
tsql, sql express. Как ускорить этот запрос.