ПрограммированиеФорумОбщее

Быстрое [s]взятие квадратного корня из целого 64-битного числа[/s] нахождение расстояния между двумя целочисленными точками. (5 стр)

Страницы: 1 2 3 4 5
#60
19:51, 29 апр 2011
//Предпологаю что A и B не выравняны никак и являються 8-ми байтными областями памяти
//Т.к. непомню calling conversion x86 пишу под х64:
//[RCX] - адрес А; [RDX] - адрес B; [RAX] - Result (нижние 32 бита)
Function Dist(Const A, B: Int32_Vec2): Int32; Assembler; NoStackFrame;
Asm
 CVTDQ2PD XMM0, [RCX]
 CVTDQ2PD XMM1, [RDX]
 SUBPD XMM0, XMM1

 //DPPD XMM0, XMM0, 000110001b
 //Заменим на то что ниже (а вот теперь уже достаточно SSE2)
 MULPD XMM0, XMM0
 MOVAPD XMM1, XMM0
 UNPCKHPD XMM1, XMM1
 ADDSD XMM0, XMM1  

 SQRTSD XMM0, XMM0
 CVTSD2SI EAX, XMM0
End;   
#61
20:37, 29 апр 2011

Bishop
> выравняны
конечно, весь пост заслуживает внимания с точки зрения альтернативного взгляда на грамматику, но это слово особенно доставило

извини, ТС, по сабжу сказать нечего

#62
21:54, 29 апр 2011

Suslik
Я писал это с больной головой еще и ночью, потом копировал пост просто. Думаю суть кода понятна несмотря на грамм-ошибки

#63
22:17, 29 апр 2011

я бы табличку завел

#64
10:37, 30 апр 2011

rAmpArk
> я бы табличку завел
Четырехмерную?

#65
13:45, 30 апр 2011

Iskander
> Четырехмерную?

И с логарифмической шкалой, чтобы один поиск индекса занимал больше, чем вся моя функция 12угольника.

#66
14:15, 30 апр 2011

Bishop
SSE-вариант по скорости заметно (раза в 2) сливает приближённым, использующим чисто целочисленные возможности чистого ЦПУ.

Мне кажется, что просто разыменование указателя сильно его тормозит.

Страницы: 1 2 3 4 5
ПрограммированиеФорумОбщее

Тема в архиве.