Re: filling big array of double



Aleksandr Sharahov wrote:
Hi Henri,

You can try unroll loop as below
--
regards
Aleksandr

procedure FillDouble(var Dest; Count: integer; Value: double); register;
asm
   neg   edx
   jge   @ret
   shl   edx, 3
   sub   eax, edx
   mov   ecx, [ebp+8]
   mov   ebp, [ebp+12]
@loop:
   mov   [eax+edx], ecx
   mov   [eax+edx+4], ebp
   cmp   edx, -8
   jge   @ret
   mov   [eax+edx+8], ecx
   mov   [eax+edx+12], ebp
   add   edx, 16
   jl    @loop
@ret:
   end;


previous one seem faster.
I'm reading "Coding for Speed in Delphi" document from denis.
It don't seem possible to improve much more "floating point" move operation.

Thanks

Henri
.



Relevant Pages