On 8/2/2013 12:57 AM, Rainer Schuetze wrote:
http://www.digitalmars.com/download/freecompiler.html

Although my laptop got quite a bit faster overnight (I guess it was throttled
for some reason yesterday), relative results don't change:

std.algorithm -main -unittest

dmc85?: 12.5 sec
dmc857: 12.5 sec
msc: 7 sec

BTW: I usually use VS2008, but now also tried VS2010 - no difference.

The two dmc times shouldn't be the same. I see a definite improvement. Disassemble aav.obj, and look at the function aaGetRvalue. It should look like this:

?_aaGetRvalue@@YAPAXPAUAA@@PAX@Z:
                push    EBX
                mov     EBX,0Ch[ESP]
                push    ESI
                cmp     dword ptr 0Ch[ESP],0
                je      L184
                mov     EAX,0Ch[ESP]
                mov     ECX,4[EAX]
                cmp     ECX,4
                jne     L139
                mov     ESI,EBX
                and     ESI,3
                jmp short       L166
L139:           cmp     ECX,01Fh
                jne     L15E
======== note this section does not have a div instruction in it ==============
                mov     EAX,EBX
                mov     EDX,08421085h
                mov     ECX,EBX
                mul     EDX
                mov     EAX,ECX
                sub     EAX,EDX
                shr     EAX,1
                lea     EDX,[EAX][EDX]
                shr     EDX,4
                imul    EAX,EDX,01Fh
                sub     ECX,EAX
                mov     ESI,ECX
==========================================================================
                jmp short       L166
L15E:           mov     EAX,EBX
                xor     EDX,EDX
                div     ECX
                mov     ESI,EDX
L166:           mov     ECX,0Ch[ESP]
                mov     ECX,[ECX]
                mov     EDX,[ESI*4][ECX]
                test    EDX,EDX
                je      L184
L173:           cmp     4[EDX],EBX
                jne     L17E
                mov     EAX,8[EDX]
                pop     ESI
                pop     EBX
                ret
L17E:           mov     EDX,[EDX]
                test    EDX,EDX
                jne     L173
L184:           pop     ESI
                xor     EAX,EAX
                pop     EBX
                ret

Reply via email to