News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests

Main Menu

Sorting strings

Started by RuiLoureiro, May 29, 2014, 06:15:48 AM

Previous topic - Next topic

RuiLoureiro

#45
Hi
    Now, i am testing this new 2 procedures
    (versions A...E)
    Could you post your results, please ?
    Thanks

These are my results.
       
Quote
ALIGNED
-----------------------------------------------------
Intel(R) Pentium(R) 4 CPU 3.40GHz (SSE3)
-----------------------------------------------------
***** Time table *****

12 milliseconds, MOVEAtoB_XZZA-  53 bytes- copy lenght DWORDS+MOVZX
12 milliseconds, MOVEAtoB_XZZE53 bytes- copy lenght DWORDS+MOVZX
12 milliseconds, MOVEAtoB_XZZF-  53 bytes- copy lenght DWORDS+MOVZX
12 milliseconds, MOVEAtoB_XZC-   53 bytes- copy lenght DWORDS+MOVZX
12 milliseconds, MOVEAtoB_XZZC-  53 bytes- copy lenght DWORDS+MOVZX
12 milliseconds, MOVEAtoB_XZA-   53 bytes- copy lenght DWORDS+MOVZX
12 milliseconds, MOVEAtoB_XZZD-  53 bytes- copy lenght DWORDS+MOVZX
12 milliseconds, MOVEAtoB_XZD-   53 bytes- copy lenght DWORDS+MOVZX
12 milliseconds, MOVEAtoB_XZZB-  53 bytes- copy lenght DWORDS+MOVZX
12 milliseconds, MOVEAtoB_XZE-   53 bytes- copy lenght DWORDS+MOVZX
12 milliseconds, MOVEAtoB_XZB-   53 bytes- copy lenght DWORDS+MOVZX

29 milliseconds, MOVEAtoB_XZZF- 103 bytes- copy lenght DWORDS+MOVZX
29 milliseconds, MOVEAtoB_XZZE- 103 bytes- copy lenght DWORDS+MOVZX
29 milliseconds, MOVEAtoB_XZE-  103 bytes- copy lenght DWORDS+MOVZX
29 milliseconds, MOVEAtoB_XZB-  103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZA-  103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZZA- 103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZZD- 103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZD-  103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZZC- 103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZC-  103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZZB- 103 bytes- copy lenght DWORDS+MOVZX

44 milliseconds, MOVEAtoB_XZB-  203 bytes- copy lenght DWORDS+MOVZX
44 milliseconds, MOVEAtoB_XZE-  203 bytes- copy lenght DWORDS+MOVZX
44 milliseconds, MOVEAtoB_XZZB- 203 bytes- copy lenght DWORDS+MOVZX
45 milliseconds, MOVEAtoB_XZZF- 203 bytes- copy lenght DWORDS+MOVZX
45 milliseconds, MOVEAtoB_XZZA- 203 bytes- copy lenght DWORDS+MOVZX
45 milliseconds, MOVEAtoB_XZD-  203 bytes- copy lenght DWORDS+MOVZX
45 milliseconds, MOVEAtoB_XZZC- 203 bytes- copy lenght DWORDS+MOVZX
46 milliseconds, MOVEAtoB_XZA-  203 bytes- copy lenght DWORDS+MOVZX
46 milliseconds, MOVEAtoB_XZZD- 203 bytes- copy lenght DWORDS+MOVZX
47 milliseconds, MOVEAtoB_XZC-  203 bytes- copy lenght DWORDS+MOVZX
47 milliseconds, MOVEAtoB_XZZE- 203 bytes- copy lenght DWORDS+MOVZX

97 milliseconds, MOVEAtoB_XZZB- 503 bytes- copy lenght DWORDS+MOVZX
97 milliseconds, MOVEAtoB_XZE-  503 bytes- copy lenght DWORDS+MOVZX
97 milliseconds, MOVEAtoB_XZZC- 503 bytes- copy lenght DWORDS+MOVZX
98 milliseconds, MOVEAtoB_XZZE- 503 bytes- copy lenght DWORDS+MOVZX
98 milliseconds, MOVEAtoB_XZB-  503 bytes- copy lenght DWORDS+MOVZX
98 milliseconds, MOVEAtoB_XZD-  503 bytes- copy lenght DWORDS+MOVZX
98 milliseconds, MOVEAtoB_XZC-  503 bytes- copy lenght DWORDS+MOVZX
98 milliseconds, MOVEAtoB_XZZA- 503 bytes- copy lenght DWORDS+MOVZX
98 milliseconds, MOVEAtoB_XZZF- 503 bytes- copy lenght DWORDS+MOVZX
99 milliseconds, MOVEAtoB_XZZD- 503 bytes- copy lenght DWORDS+MOVZX
100 milliseconds, MOVEAtoB_XZA-  503 bytes- copy lenght DWORDS+MOVZX

179 milliseconds, MOVEAtoB_XZD- 1027 bytes- copy lenght DWORDS+MOVZX
179 milliseconds, MOVEAtoB_XZB- 1027 bytes- copy lenght DWORDS+MOVZX
179 milliseconds, MOVEAtoB_XZA- 1027 bytes- copy lenght DWORDS+MOVZX
179 milliseconds, MOVEAtoB_XZC- 1027 bytes- copy lenght DWORDS+MOVZX
180 milliseconds, MOVEAtoB_XZZD-1027 bytes- copy lenght DWORDS+MOVZX
180 milliseconds, MOVEAtoB_XZZF-1027 bytes- copy lenght DWORDS+MOVZX
181 milliseconds, MOVEAtoB_XZZC-1027 bytes- copy lenght DWORDS+MOVZX
184 milliseconds, MOVEAtoB_XZE- 1027 bytes- copy lenght DWORDS+MOVZX
184 milliseconds, MOVEAtoB_XZZB-1027 bytes- copy lenght DWORDS+MOVZX
186 milliseconds, MOVEAtoB_XZZA-1027 bytes- copy lenght DWORDS+MOVZX
203 milliseconds, MOVEAtoB_XZZE-1027 bytes- copy lenght DWORDS+MOVZX
********** END III **********

Quote
NOT ALIGNED
-----------------------------------------------------
Intel(R) Pentium(R) 4 CPU 3.40GHz (SSE3)
-----------------------------------------------------
***** Time table *****

15 milliseconds, MOVEAtoB_XZZE-  53 bytes- copy lenght DWORDS+MOVZX
15 milliseconds, MOVEAtoB_XZB-   53 bytes- copy lenght DWORDS+MOVZX
15 milliseconds, MOVEAtoB_XZZF-  53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZD-   53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZA-   53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZC-   53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZZD-  53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZZA-  53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZZB-  53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZZC-  53 bytes- copy lenght DWORDS+MOVZX
25 milliseconds, MOVEAtoB_XZE-   53 bytes- copy lenght DWORDS+MOVZX

29 milliseconds, MOVEAtoB_XZZF- 103 bytes- copy lenght DWORDS+MOVZX
29 milliseconds, MOVEAtoB_XZZE- 103 bytes- copy lenght DWORDS+MOVZX
29 milliseconds, MOVEAtoB_XZE-  103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZA-  103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZD-  103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZZB- 103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZZA- 103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZC-  103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZZD- 103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZB-  103 bytes- copy lenght DWORDS+MOVZX
32 milliseconds, MOVEAtoB_XZZC- 103 bytes- copy lenght DWORDS+MOVZX

48 milliseconds, MOVEAtoB_XZB-  203 bytes- copy lenght DWORDS+MOVZX
49 milliseconds, MOVEAtoB_XZA-  203 bytes- copy lenght DWORDS+MOVZX
49 milliseconds, MOVEAtoB_XZE203 bytes- copy lenght DWORDS+MOVZX
49 milliseconds, MOVEAtoB_XZZE- 203 bytes- copy lenght DWORDS+MOVZX
49 milliseconds, MOVEAtoB_XZZF- 203 bytes- copy lenght DWORDS+MOVZX
50 milliseconds, MOVEAtoB_XZZD- 203 bytes- copy lenght DWORDS+MOVZX
50 milliseconds, MOVEAtoB_XZZB- 203 bytes- copy lenght DWORDS+MOVZX
51 milliseconds, MOVEAtoB_XZC-  203 bytes- copy lenght DWORDS+MOVZX
51 milliseconds, MOVEAtoB_XZD-  203 bytes- copy lenght DWORDS+MOVZX
51 milliseconds, MOVEAtoB_XZZC- 203 bytes- copy lenght DWORDS+MOVZX
52 milliseconds, MOVEAtoB_XZZA- 203 bytes- copy lenght DWORDS+MOVZX

99 milliseconds, MOVEAtoB_XZD-  503 bytes- copy lenght DWORDS+MOVZX
99 milliseconds, MOVEAtoB_XZZF- 503 bytes- copy lenght DWORDS+MOVZX
99 milliseconds, MOVEAtoB_XZZC- 503 bytes- copy lenght DWORDS+MOVZX
99 milliseconds, MOVEAtoB_XZA-  503 bytes- copy lenght DWORDS+MOVZX
99 milliseconds, MOVEAtoB_XZC-  503 bytes- copy lenght DWORDS+MOVZX
99 milliseconds, MOVEAtoB_XZB-  503 bytes- copy lenght DWORDS+MOVZX
100 milliseconds, MOVEAtoB_XZZB- 503 bytes- copy lenght DWORDS+MOVZX
100 milliseconds, MOVEAtoB_XZZD- 503 bytes- copy lenght DWORDS+MOVZX
100 milliseconds, MOVEAtoB_XZZE- 503 bytes- copy lenght DWORDS+MOVZX
100 milliseconds, MOVEAtoB_XZZA- 503 bytes- copy lenght DWORDS+MOVZX
102 milliseconds, MOVEAtoB_XZE-  503 bytes- copy lenght DWORDS+MOVZX

185 milliseconds, MOVEAtoB_XZD- 1027 bytes- copy lenght DWORDS+MOVZX
186 milliseconds, MOVEAtoB_XZB- 1027 bytes- copy lenght DWORDS+MOVZX
186 milliseconds, MOVEAtoB_XZE- 1027 bytes- copy lenght DWORDS+MOVZX
186 milliseconds, MOVEAtoB_XZA- 1027 bytes- copy lenght DWORDS+MOVZX
187 milliseconds, MOVEAtoB_XZC- 1027 bytes- copy lenght DWORDS+MOVZX
189 milliseconds, MOVEAtoB_XZZA-1027 bytes- copy lenght DWORDS+MOVZX
190 milliseconds, MOVEAtoB_XZZB-1027 bytes- copy lenght DWORDS+MOVZX
191 milliseconds, MOVEAtoB_XZZC-1027 bytes- copy lenght DWORDS+MOVZX
191 milliseconds, MOVEAtoB_XZZE-1027 bytes- copy lenght DWORDS+MOVZX
192 milliseconds, MOVEAtoB_XZZF-1027 bytes- copy lenght DWORDS+MOVZX
193 milliseconds, MOVEAtoB_XZZD-1027 bytes- copy lenght DWORDS+MOVZX
********** END III **********

nidud

#46
deleted

Gunther

Hi Rui,

the attached archive contains the results.

Gunther
You have to know the facts before you can distort them.

RuiLoureiro

#48
 :biggrin:
Hi
    Thank you ninud
    and
    thank you also Gunther  :t

---------------
contradictions
---------------
When we read each procedure, we have no doubts,
the best are: XZE, XZZE or XZZF
(they are perfect solutions -for all cases).

But when we read the results,
the best seems to be XZZA, XZZB or XZZC!

one conclusion: XZZ seems to be better than XZ
but i need to study this results with more time
(but not from my results).

XZ  uses:    mov  eax, [esi+edx*4]
XZZ uses:   mov  eax, [esi+edx]

------------------------
Results from ninud
------------------------
Quote
ALIGNED
------------------------------------------------------
AMD Athlon(tm) II X2 245 Processor (SSE3)
------------------------------------------------------
***** Time table *****

***>> CASES 1,2,3,4 AND 13 bytes WERE REMOVED <<<<****

13 milliseconds, MOVEAtoB_XZZD-  53 bytes- copy lenght DWORDS+MOVZX
13 milliseconds, MOVEAtoB_XZZC-  53 bytes- copy lenght DWORDS+MOVZX
14 milliseconds, MOVEAtoB_XZZA-  53 bytes- copy lenght DWORDS+MOVZX  <<<--
14 milliseconds, MOVEAtoB_XZB-   53 bytes- copy lenght DWORDS+MOVZX
14 milliseconds, MOVEAtoB_XZZB-  53 bytes- copy lenght DWORDS+MOVZX
17 milliseconds, MOVEAtoB_XZE-   53 bytes- copy lenght DWORDS+MOVZX
17 milliseconds, MOVEAtoB_XZZE-  53 bytes- copy lenght DWORDS+MOVZX
17 milliseconds, MOVEAtoB_XZZF-  53 bytes- copy lenght DWORDS+MOVZX
18 milliseconds, MOVEAtoB_XZA-   53 bytes- copy lenght DWORDS+MOVZX
18 milliseconds, MOVEAtoB_XZC-   53 bytes- copy lenght DWORDS+MOVZX
18 milliseconds, MOVEAtoB_XZD-   53 bytes- copy lenght DWORDS+MOVZX

23 milliseconds, MOVEAtoB_XZA-  103 bytes- copy lenght DWORDS+MOVZX
23 milliseconds, MOVEAtoB_XZZD- 103 bytes- copy lenght DWORDS+MOVZX
23 milliseconds, MOVEAtoB_XZZA- 103 bytes- copy lenght DWORDS+MOVZX  <<<--
23 milliseconds, MOVEAtoB_XZZC- 103 bytes- copy lenght DWORDS+MOVZX
23 milliseconds, MOVEAtoB_XZZB- 103 bytes- copy lenght DWORDS+MOVZX
23 milliseconds, MOVEAtoB_XZZF- 103 bytes- copy lenght DWORDS+MOVZX
23 milliseconds, MOVEAtoB_XZC-  103 bytes- copy lenght DWORDS+MOVZX
24 milliseconds, MOVEAtoB_XZB-  103 bytes- copy lenght DWORDS+MOVZX
24 milliseconds, MOVEAtoB_XZD-  103 bytes- copy lenght DWORDS+MOVZX
25 milliseconds, MOVEAtoB_XZE-  103 bytes- copy lenght DWORDS+MOVZX
26 milliseconds, MOVEAtoB_XZZE- 103 bytes- copy lenght DWORDS+MOVZX

41 milliseconds, MOVEAtoB_XZB-  203 bytes- copy lenght DWORDS+MOVZX
41 milliseconds, MOVEAtoB_XZZD- 203 bytes- copy lenght DWORDS+MOVZX
41 milliseconds, MOVEAtoB_XZZB- 203 bytes- copy lenght DWORDS+MOVZX
41 milliseconds, MOVEAtoB_XZZC- 203 bytes- copy lenght DWORDS+MOVZX
41 milliseconds, MOVEAtoB_XZZA- 203 bytes- copy lenght DWORDS+MOVZX  <<<--
56 milliseconds, MOVEAtoB_XZZF- 203 bytes- copy lenght DWORDS+MOVZX
57 milliseconds, MOVEAtoB_XZE-  203 bytes- copy lenght DWORDS+MOVZX
57 milliseconds, MOVEAtoB_XZC-  203 bytes- copy lenght DWORDS+MOVZX
57 milliseconds, MOVEAtoB_XZZE- 203 bytes- copy lenght DWORDS+MOVZX
58 milliseconds, MOVEAtoB_XZA-  203 bytes- copy lenght DWORDS+MOVZX
58 milliseconds, MOVEAtoB_XZD-  203 bytes- copy lenght DWORDS+MOVZX

92 milliseconds, MOVEAtoB_XZZF- 503 bytes- copy lenght DWORDS+MOVZX
92 milliseconds, MOVEAtoB_XZZD- 503 bytes- copy lenght DWORDS+MOVZX
92 milliseconds, MOVEAtoB_XZC-  503 bytes- copy lenght DWORDS+MOVZX
92 milliseconds, MOVEAtoB_XZZA- 503 bytes- copy lenght DWORDS+MOVZX  <<<--
92 milliseconds, MOVEAtoB_XZD-  503 bytes- copy lenght DWORDS+MOVZX
92 milliseconds, MOVEAtoB_XZB-  503 bytes- copy lenght DWORDS+MOVZX
92 milliseconds, MOVEAtoB_XZZB- 503 bytes- copy lenght DWORDS+MOVZX
92 milliseconds, MOVEAtoB_XZA-  503 bytes- copy lenght DWORDS+MOVZX
93 milliseconds, MOVEAtoB_XZZC- 503 bytes- copy lenght DWORDS+MOVZX
94 milliseconds, MOVEAtoB_XZE-  503 bytes- copy lenght DWORDS+MOVZX
95 milliseconds, MOVEAtoB_XZZE- 503 bytes- copy lenght DWORDS+MOVZX

182 milliseconds, MOVEAtoB_XZZA-1027 bytes- copy lenght DWORDS+MOVZX <<<-
182 milliseconds, MOVEAtoB_XZB- 1027 bytes- copy lenght DWORDS+MOVZX
182 milliseconds, MOVEAtoB_XZZB-1027 bytes- copy lenght DWORDS+MOVZX
182 milliseconds, MOVEAtoB_XZZD-1027 bytes- copy lenght DWORDS+MOVZX
183 milliseconds, MOVEAtoB_XZZC-1027 bytes- copy lenght DWORDS+MOVZX
269 milliseconds, MOVEAtoB_XZE- 1027 bytes- copy lenght DWORDS+MOVZX
269 milliseconds, MOVEAtoB_XZC- 1027 bytes- copy lenght DWORDS+MOVZX
269 milliseconds, MOVEAtoB_XZZF-1027 bytes- copy lenght DWORDS+MOVZX
270 milliseconds, MOVEAtoB_XZD- 1027 bytes- copy lenght DWORDS+MOVZX
270 milliseconds, MOVEAtoB_XZZE-1027 bytes- copy lenght DWORDS+MOVZX
270 milliseconds, MOVEAtoB_XZA- 1027 bytes- copy lenght DWORDS+MOVZX
********** END III **********

Quote
NOT ALIGNED
-------------------------------------------------------
AMD Athlon(tm) II X2 245 Processor (SSE3)
-------------------------------------------------------
***** Time table *****

***>> CASES 1,2,3,4 AND 13 bytes WERE REMOVED <<<<****
 
14 milliseconds, MOVEAtoB_XZZB-  53 bytes- copy lenght DWORDS+MOVZX
14 milliseconds, MOVEAtoB_XZZC-  53 bytes- copy lenght DWORDS+MOVZX
14 milliseconds, MOVEAtoB_XZZD-  53 bytes- copy lenght DWORDS+MOVZX
14 milliseconds, MOVEAtoB_XZZA53 bytes- copy lenght DWORDS+MOVZX   <<<-
14 milliseconds, MOVEAtoB_XZB-   53 bytes- copy lenght DWORDS+MOVZX
17 milliseconds, MOVEAtoB_XZZF-  53 bytes- copy lenght DWORDS+MOVZX
17 milliseconds, MOVEAtoB_XZE-   53 bytes- copy lenght DWORDS+MOVZX
17 milliseconds, MOVEAtoB_XZA-   53 bytes- copy lenght DWORDS+MOVZX
17 milliseconds, MOVEAtoB_XZZE-  53 bytes- copy lenght DWORDS+MOVZX
18 milliseconds, MOVEAtoB_XZC-   53 bytes- copy lenght DWORDS+MOVZX
18 milliseconds, MOVEAtoB_XZD-   53 bytes- copy lenght DWORDS+MOVZX

23 milliseconds, MOVEAtoB_XZZC- 103 bytes- copy lenght DWORDS+MOVZX
23 milliseconds, MOVEAtoB_XZZB- 103 bytes- copy lenght DWORDS+MOVZX
23 milliseconds, MOVEAtoB_XZA-  103 bytes- copy lenght DWORDS+MOVZX
23 milliseconds, MOVEAtoB_XZD-  103 bytes- copy lenght DWORDS+MOVZX
23 milliseconds, MOVEAtoB_XZB-  103 bytes- copy lenght DWORDS+MOVZX
23 milliseconds, MOVEAtoB_XZC-  103 bytes- copy lenght DWORDS+MOVZX
23 milliseconds, MOVEAtoB_XZZF- 103 bytes- copy lenght DWORDS+MOVZX
23 milliseconds, MOVEAtoB_XZZD- 103 bytes- copy lenght DWORDS+MOVZX
23 milliseconds, MOVEAtoB_XZZA- 103 bytes- copy lenght DWORDS+MOVZX <<<--
25 milliseconds, MOVEAtoB_XZZE- 103 bytes- copy lenght DWORDS+MOVZX
25 milliseconds, MOVEAtoB_XZE-  103 bytes- copy lenght DWORDS+MOVZX

41 milliseconds, MOVEAtoB_XZB-  203 bytes- copy lenght DWORDS+MOVZX
41 milliseconds, MOVEAtoB_XZZD- 203 bytes- copy lenght DWORDS+MOVZX
41 milliseconds, MOVEAtoB_XZZB- 203 bytes- copy lenght DWORDS+MOVZX
41 milliseconds, MOVEAtoB_XZZC- 203 bytes- copy lenght DWORDS+MOVZX
41 milliseconds, MOVEAtoB_XZZA- 203 bytes- copy lenght DWORDS+MOVZX <<<--
56 milliseconds, MOVEAtoB_XZZF- 203 bytes- copy lenght DWORDS+MOVZX
57 milliseconds, MOVEAtoB_XZD-  203 bytes- copy lenght DWORDS+MOVZX
57 milliseconds, MOVEAtoB_XZE-  203 bytes- copy lenght DWORDS+MOVZX
57 milliseconds, MOVEAtoB_XZA-  203 bytes- copy lenght DWORDS+MOVZX
57 milliseconds, MOVEAtoB_XZC-  203 bytes- copy lenght DWORDS+MOVZX
57 milliseconds, MOVEAtoB_XZZE- 203 bytes- copy lenght DWORDS+MOVZX

92 milliseconds, MOVEAtoB_XZZB- 503 bytes- copy lenght DWORDS+MOVZX
92 milliseconds, MOVEAtoB_XZC-  503 bytes- copy lenght DWORDS+MOVZX
92 milliseconds, MOVEAtoB_XZZC- 503 bytes- copy lenght DWORDS+MOVZX
92 milliseconds, MOVEAtoB_XZA-  503 bytes- copy lenght DWORDS+MOVZX
92 milliseconds, MOVEAtoB_XZZF- 503 bytes- copy lenght DWORDS+MOVZX
92 milliseconds, MOVEAtoB_XZZD- 503 bytes- copy lenght DWORDS+MOVZX
93 milliseconds, MOVEAtoB_XZB-  503 bytes- copy lenght DWORDS+MOVZX
94 milliseconds, MOVEAtoB_XZZA- 503 bytes- copy lenght DWORDS+MOVZX  <<<-
94 milliseconds, MOVEAtoB_XZZE- 503 bytes- copy lenght DWORDS+MOVZX
99 milliseconds, MOVEAtoB_XZD-  503 bytes- copy lenght DWORDS+MOVZX
105 milliseconds, MOVEAtoB_XZE-  503 bytes- copy lenght DWORDS+MOVZX

182 milliseconds, MOVEAtoB_XZZA-1027 bytes- copy lenght DWORDS+MOVZX<<<-
182 milliseconds, MOVEAtoB_XZB- 1027 bytes- copy lenght DWORDS+MOVZX
182 milliseconds, MOVEAtoB_XZZB-1027 bytes- copy lenght DWORDS+MOVZX
182 milliseconds, MOVEAtoB_XZZD-1027 bytes- copy lenght DWORDS+MOVZX
183 milliseconds, MOVEAtoB_XZZC-1027 bytes- copy lenght DWORDS+MOVZX
269 milliseconds, MOVEAtoB_XZZF-1027 bytes- copy lenght DWORDS+MOVZX
269 milliseconds, MOVEAtoB_XZE- 1027 bytes- copy lenght DWORDS+MOVZX
270 milliseconds, MOVEAtoB_XZC- 1027 bytes- copy lenght DWORDS+MOVZX
270 milliseconds, MOVEAtoB_XZD- 1027 bytes- copy lenght DWORDS+MOVZX
270 milliseconds, MOVEAtoB_XZA- 1027 bytes- copy lenght DWORDS+MOVZX
270 milliseconds, MOVEAtoB_XZZE-1027 bytes- copy lenght DWORDS+MOVZX
********** END III **********

-----------------------------
Results from Gunther:
-----------------------------
Quote
ALIGNED
--------------------------------------------------------------
Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz (SSE4)
--------------------------------------------------------------
***** Time table *****

***>> CASES 1,2,3,4 AND 13 bytes WERE REMOVED <<<<****
 
  7 milliseconds, MOVEAtoB_XZZB-  53 bytes- copy lenght DWORDS+MOVZX
  7 milliseconds, MOVEAtoB_XZZC-  53 bytes- copy lenght DWORDS+MOVZX
  7 milliseconds, MOVEAtoB_XZZD-  53 bytes- copy lenght DWORDS+MOVZX
  7 milliseconds, MOVEAtoB_XZZA-  53 bytes- copy lenght DWORDS+MOVZX    <<<--
  7 milliseconds, MOVEAtoB_XZB-   53 bytes- copy lenght DWORDS+MOVZX
10 milliseconds, MOVEAtoB_XZA-   53 bytes- copy lenght DWORDS+MOVZX
10 milliseconds, MOVEAtoB_XZZF-  53 bytes- copy lenght DWORDS+MOVZX
10 milliseconds, MOVEAtoB_XZD-   53 bytes- copy lenght DWORDS+MOVZX
10 milliseconds, MOVEAtoB_XZE-   53 bytes- copy lenght DWORDS+MOVZX
10 milliseconds, MOVEAtoB_XZC-   53 bytes- copy lenght DWORDS+MOVZX
10 milliseconds, MOVEAtoB_XZZE-  53 bytes- copy lenght DWORDS+MOVZX

14 milliseconds, MOVEAtoB_XZC-  103 bytes- copy lenght DWORDS+MOVZX
          <<<- all equal--

31 milliseconds, MOVEAtoB_XZZB- 203 bytes- copy lenght DWORDS+MOVZX
31 milliseconds, MOVEAtoB_XZB-  203 bytes- copy lenght DWORDS+MOVZX
31 milliseconds, MOVEAtoB_XZZD- 203 bytes- copy lenght DWORDS+MOVZX
31 milliseconds, MOVEAtoB_XZZA- 203 bytes- copy lenght DWORDS+MOVZX <<<--
32 milliseconds, MOVEAtoB_XZZC- 203 bytes- copy lenght DWORDS+MOVZX
40 milliseconds, MOVEAtoB_XZZE- 203 bytes- copy lenght DWORDS+MOVZX
40 milliseconds, MOVEAtoB_XZZF- 203 bytes- copy lenght DWORDS+MOVZX
40 milliseconds, MOVEAtoB_XZE-  203 bytes- copy lenght DWORDS+MOVZX
41 milliseconds, MOVEAtoB_XZD-  203 bytes- copy lenght DWORDS+MOVZX
41 milliseconds, MOVEAtoB_XZA-  203 bytes- copy lenght DWORDS+MOVZX
41 milliseconds, MOVEAtoB_XZC-  203 bytes- copy lenght DWORDS+MOVZX

70 milliseconds, MOVEAtoB_XZZD- 503 bytes- copy lenght DWORDS+MOVZX
                 <<<- all equal--
71 milliseconds, MOVEAtoB_XZB-  503 bytes- copy lenght DWORDS+MOVZX

137 milliseconds, MOVEAtoB_XZZB-1027 bytes- copy lenght DWORDS+MOVZX
138 milliseconds, MOVEAtoB_XZZA-1027 bytes- copy lenght DWORDS+MOVZX <<<-
138 milliseconds, MOVEAtoB_XZB- 1027 bytes- copy lenght DWORDS+MOVZX
138 milliseconds, MOVEAtoB_XZZC-1027 bytes- copy lenght DWORDS+MOVZX
138 milliseconds, MOVEAtoB_XZZD-1027 bytes- copy lenght DWORDS+MOVZX
146 milliseconds, MOVEAtoB_XZZF-1027 bytes- copy lenght DWORDS+MOVZX
146 milliseconds, MOVEAtoB_XZE- 1027 bytes- copy lenght DWORDS+MOVZX
146 milliseconds, MOVEAtoB_XZZE-1027 bytes- copy lenght DWORDS+MOVZX
147 milliseconds, MOVEAtoB_XZC- 1027 bytes- copy lenght DWORDS+MOVZX
147 milliseconds, MOVEAtoB_XZD- 1027 bytes- copy lenght DWORDS+MOVZX
147 milliseconds, MOVEAtoB_XZA- 1027 bytes- copy lenght DWORDS+MOVZX
********** END III **********

Quote
NOT ALIGNED
--------------------------------------------------------------
Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz (SSE4)
-------------------------------------------------------------
***** Time table *****
   
  7 milliseconds, MOVEAtoB_XZZB-  53 bytes- copy lenght DWORDS+MOVZX
  7 milliseconds, MOVEAtoB_XZZC-  53 bytes- copy lenght DWORDS+MOVZX
  7 milliseconds, MOVEAtoB_XZZD-  53 bytes- copy lenght DWORDS+MOVZX
  7 milliseconds, MOVEAtoB_XZZA53 bytes- copy lenght DWORDS+MOVZX  <<<---
  7 milliseconds, MOVEAtoB_XZB-   53 bytes- copy lenght DWORDS+MOVZX
10 milliseconds, MOVEAtoB_XZA-   53 bytes- copy lenght DWORDS+MOVZX
10 milliseconds, MOVEAtoB_XZZF-  53 bytes- copy lenght DWORDS+MOVZX
10 milliseconds, MOVEAtoB_XZD-   53 bytes- copy lenght DWORDS+MOVZX
10 milliseconds, MOVEAtoB_XZE-   53 bytes- copy lenght DWORDS+MOVZX
10 milliseconds, MOVEAtoB_XZC-   53 bytes- copy lenght DWORDS+MOVZX
10 milliseconds, MOVEAtoB_XZZE-  53 bytes- copy lenght DWORDS+MOVZX

14 milliseconds, MOVEAtoB_XZC-  103 bytes- copy lenght DWORDS+MOVZX
    <<<- all equal--

31 milliseconds, MOVEAtoB_XZB-  203 bytes- copy lenght DWORDS+MOVZX
31 milliseconds, MOVEAtoB_XZZD- 203 bytes- copy lenght DWORDS+MOVZX
31 milliseconds, MOVEAtoB_XZZC- 203 bytes- copy lenght DWORDS+MOVZX
32 milliseconds, MOVEAtoB_XZZA- 203 bytes- copy lenght DWORDS+MOVZX <<<--
32 milliseconds, MOVEAtoB_XZZB- 203 bytes- copy lenght DWORDS+MOVZX
40 milliseconds, MOVEAtoB_XZZE- 203 bytes- copy lenght DWORDS+MOVZX
40 milliseconds, MOVEAtoB_XZZF- 203 bytes- copy lenght DWORDS+MOVZX
40 milliseconds, MOVEAtoB_XZE-  203 bytes- copy lenght DWORDS+MOVZX
41 milliseconds, MOVEAtoB_XZD-  203 bytes- copy lenght DWORDS+MOVZX
41 milliseconds, MOVEAtoB_XZA-  203 bytes- copy lenght DWORDS+MOVZX
41 milliseconds, MOVEAtoB_XZC-  203 bytes- copy lenght DWORDS+MOVZX

70 milliseconds, MOVEAtoB_XZE-  503 bytes- copy lenght DWORDS+MOVZX
          <<<- all equal--

137 milliseconds, MOVEAtoB_XZZC-1027 bytes- copy lenght DWORDS+MOVZX
138 milliseconds, MOVEAtoB_XZZA-1027 bytes- copy lenght DWORDS+MOVZX<<<--
138 milliseconds, MOVEAtoB_XZB- 1027 bytes- copy lenght DWORDS+MOVZX
138 milliseconds, MOVEAtoB_XZZB-1027 bytes- copy lenght DWORDS+MOVZX
138 milliseconds, MOVEAtoB_XZZD-1027 bytes- copy lenght DWORDS+MOVZX
146 milliseconds, MOVEAtoB_XZZF-1027 bytes- copy lenght DWORDS+MOVZX
146 milliseconds, MOVEAtoB_XZE- 1027 bytes- copy lenght DWORDS+MOVZX
146 milliseconds, MOVEAtoB_XZZE-1027 bytes- copy lenght DWORDS+MOVZX
147 milliseconds, MOVEAtoB_XZC- 1027 bytes- copy lenght DWORDS+MOVZX
147 milliseconds, MOVEAtoB_XZD- 1027 bytes- copy lenght DWORDS+MOVZX
147 milliseconds, MOVEAtoB_XZA- 1027 bytes- copy lenght DWORDS+MOVZX
********** END III **********

FORTRANS

Hi,

   Do you want results from older processors?

HTH,

Steve N.

RuiLoureiro

#50
Thanks you Steve,  :t

The same conclusion as before:
XZZA, XZZB, XZZC are better !!!

---------------------------------
Results from   FORTRANS
---------------------------------
Quote
NOT ALIGNED
------------------------------------------
???? (SSE1)
------------------------------------------
***** Time table *****

***>> CASES 1,2,3,4 AND 13 bytes WERE REMOVED <<<<****
 
  91 milliseconds, MOVEAtoB_XZZB-  53 bytes- copy lenght DWORDS+MOVZX
  91 milliseconds, MOVEAtoB_XZZF-  53 bytes- copy lenght DWORDS+MOVZX
  92 milliseconds, MOVEAtoB_XZZC-  53 bytes- copy lenght DWORDS+MOVZX
  92 milliseconds, MOVEAtoB_XZE-   53 bytes- copy lenght DWORDS+MOVZX
  92 milliseconds, MOVEAtoB_XZZA53 bytes- copy lenght DWORDS+MOVZX
  93 milliseconds, MOVEAtoB_XZZD-  53 bytes- copy lenght DWORDS+MOVZX
  93 milliseconds, MOVEAtoB_XZZE-  53 bytes- copy lenght DWORDS+MOVZX
  99 milliseconds, MOVEAtoB_XZB-   53 bytes- copy lenght DWORDS+MOVZX
100 milliseconds, MOVEAtoB_XZD-   53 bytes- copy lenght DWORDS+MOVZX
101 milliseconds, MOVEAtoB_XZA-   53 bytes- copy lenght DWORDS+MOVZX
101 milliseconds, MOVEAtoB_XZC-   53 bytes- copy lenght DWORDS+MOVZX

108 milliseconds, MOVEAtoB_XZZD- 103 bytes- copy lenght DWORDS+MOVZX
108 milliseconds, MOVEAtoB_XZZC- 103 bytes- copy lenght DWORDS+MOVZX
108 milliseconds, MOVEAtoB_XZZA- 103 bytes- copy lenght DWORDS+MOVZX
116 milliseconds, MOVEAtoB_XZZB- 103 bytes- copy lenght DWORDS+MOVZX
126 milliseconds, MOVEAtoB_XZZF- 103 bytes- copy lenght DWORDS+MOVZX
126 milliseconds, MOVEAtoB_XZE-  103 bytes- copy lenght DWORDS+MOVZX
127 milliseconds, MOVEAtoB_XZZE- 103 bytes- copy lenght DWORDS+MOVZX
136 milliseconds, MOVEAtoB_XZD-  103 bytes- copy lenght DWORDS+MOVZX
136 milliseconds, MOVEAtoB_XZC-  103 bytes- copy lenght DWORDS+MOVZX
136 milliseconds, MOVEAtoB_XZA-  103 bytes- copy lenght DWORDS+MOVZX
139 milliseconds, MOVEAtoB_XZB-  103 bytes- copy lenght DWORDS+MOVZX

171 milliseconds, MOVEAtoB_XZZC- 203 bytes- copy lenght DWORDS+MOVZX
171 milliseconds, MOVEAtoB_XZZA- 203 bytes- copy lenght DWORDS+MOVZX
172 milliseconds, MOVEAtoB_XZZD- 203 bytes- copy lenght DWORDS+MOVZX
179 milliseconds, MOVEAtoB_XZZB- 203 bytes- copy lenght DWORDS+MOVZX
219 milliseconds, MOVEAtoB_XZE-  203 bytes- copy lenght DWORDS+MOVZX
222 milliseconds, MOVEAtoB_XZZE- 203 bytes- copy lenght DWORDS+MOVZX
222 milliseconds, MOVEAtoB_XZZF- 203 bytes- copy lenght DWORDS+MOVZX
230 milliseconds, MOVEAtoB_XZA-  203 bytes- copy lenght DWORDS+MOVZX
230 milliseconds, MOVEAtoB_XZD-  203 bytes- copy lenght DWORDS+MOVZX
231 milliseconds, MOVEAtoB_XZC-  203 bytes- copy lenght DWORDS+MOVZX
233 milliseconds, MOVEAtoB_XZB-  203 bytes- copy lenght DWORDS+MOVZX

361 milliseconds, MOVEAtoB_XZZD- 503 bytes- copy lenght DWORDS+MOVZX
361 milliseconds, MOVEAtoB_XZZC- 503 bytes- copy lenght DWORDS+MOVZX
362 milliseconds, MOVEAtoB_XZZB- 503 bytes- copy lenght DWORDS+MOVZX
362 milliseconds, MOVEAtoB_XZZA- 503 bytes- copy lenght DWORDS+MOVZX
504 milliseconds, MOVEAtoB_XZZF- 503 bytes- copy lenght DWORDS+MOVZX
504 milliseconds, MOVEAtoB_XZE-  503 bytes- copy lenght DWORDS+MOVZX
505 milliseconds, MOVEAtoB_XZZE- 503 bytes- copy lenght DWORDS+MOVZX
514 milliseconds, MOVEAtoB_XZA-  503 bytes- copy lenght DWORDS+MOVZX
514 milliseconds, MOVEAtoB_XZD-  503 bytes- copy lenght DWORDS+MOVZX
514 milliseconds, MOVEAtoB_XZC-  503 bytes- copy lenght DWORDS+MOVZX
523 milliseconds, MOVEAtoB_XZB-  503 bytes- copy lenght DWORDS+MOVZX

690 milliseconds, MOVEAtoB_XZZD-1027 bytes- copy lenght DWORDS+MOVZX
690 milliseconds, MOVEAtoB_XZZC-1027 bytes- copy lenght DWORDS+MOVZX
691 milliseconds, MOVEAtoB_XZZA-1027 bytes- copy lenght DWORDS+MOVZX
699 milliseconds, MOVEAtoB_XZZB-1027 bytes- copy lenght DWORDS+MOVZX
998 milliseconds, MOVEAtoB_XZZF-1027 bytes- copy lenght DWORDS+MOVZX
998 milliseconds, MOVEAtoB_XZZE-1027 bytes- copy lenght DWORDS+MOVZX
999 milliseconds, MOVEAtoB_XZE- 1027 bytes- copy lenght DWORDS+MOVZX
1010 milliseconds, MOVEAtoB_XZD- 1027 bytes- copy lenght DWORDS+MOVZX
1010 milliseconds, MOVEAtoB_XZC- 1027 bytes- copy lenght DWORDS+MOVZX
1010 milliseconds, MOVEAtoB_XZA- 1027 bytes- copy lenght DWORDS+MOVZX
1012 milliseconds, MOVEAtoB_XZB- 1027 bytes- copy lenght DWORDS+MOVZX
********** END III **********

guga

Rui

here are mine results
Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of alcoholic levels in your blood.

My Code Sites:
http://rosasm.freeforums.org
http://winasm.tripod.com

RuiLoureiro

Olá guga!
                   obrigado ! :t

The same conclusion:
XZZA, XZZB, XZZC are better as before !
XZZC seems to be better.

But when we read each procedure, we have no doubts,
the best are: XZE, XZZE or XZZF
(note: all these procedures were written by me)

------------------------
Results from  guga
------------------------

Quote
NOT ALIGNED

---------------------------------------------------------------
Intel(R) Core(TM) i7 CPU  870  @ 2.93GHz (SSE4)
---------------------------------------------------------------
***** Time table *****

***>> CASES 1,2,3,4 AND 13 bytes WERE REMOVED <<<<****

  8 milliseconds, MOVEAtoB_XZZD-  53 bytes- copy lenght DWORDS+MOVZX
  8 milliseconds, MOVEAtoB_XZZC-  53 bytes- copy lenght DWORDS+MOVZX
  9 milliseconds, MOVEAtoB_XZZA53 bytes- copy lenght DWORDS+MOVZX
  9 milliseconds, MOVEAtoB_XZB-   53 bytes- copy lenght DWORDS+MOVZX
  9 milliseconds, MOVEAtoB_XZZB-  53 bytes- copy lenght DWORDS+MOVZX
10 milliseconds, MOVEAtoB_XZZF-  53 bytes- copy lenght DWORDS+MOVZX
10 milliseconds, MOVEAtoB_XZE-   53 bytes- copy lenght DWORDS+MOVZX
11 milliseconds, MOVEAtoB_XZA-   53 bytes- copy lenght DWORDS+MOVZX
11 milliseconds, MOVEAtoB_XZC-   53 bytes- copy lenght DWORDS+MOVZX
11 milliseconds, MOVEAtoB_XZZE-  53 bytes- copy lenght DWORDS+MOVZX
12 milliseconds, MOVEAtoB_XZD-   53 bytes- copy lenght DWORDS+MOVZX

16 milliseconds, MOVEAtoB_XZC-  103 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZZC- 103 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZZB- 103 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZB-  103 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZE-  103 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZA-  103 bytes- copy lenght DWORDS+MOVZX
17 milliseconds, MOVEAtoB_XZZA- 103 bytes- copy lenght DWORDS+MOVZX
17 milliseconds, MOVEAtoB_XZZD- 103 bytes- copy lenght DWORDS+MOVZX
17 milliseconds, MOVEAtoB_XZD-  103 bytes- copy lenght DWORDS+MOVZX
17 milliseconds, MOVEAtoB_XZZF- 103 bytes- copy lenght DWORDS+MOVZX
17 milliseconds, MOVEAtoB_XZZE- 103 bytes- copy lenght DWORDS+MOVZX

30 milliseconds, MOVEAtoB_XZZD- 203 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZZC- 203 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZZA- 203 bytes- copy lenght DWORDS+MOVZX
31 milliseconds, MOVEAtoB_XZZB- 203 bytes- copy lenght DWORDS+MOVZX
31 milliseconds, MOVEAtoB_XZB-  203 bytes- copy lenght DWORDS+MOVZX
43 milliseconds, MOVEAtoB_XZZF- 203 bytes- copy lenght DWORDS+MOVZX
43 milliseconds, MOVEAtoB_XZE-  203 bytes- copy lenght DWORDS+MOVZX
45 milliseconds, MOVEAtoB_XZZE- 203 bytes- copy lenght DWORDS+MOVZX
45 milliseconds, MOVEAtoB_XZC-  203 bytes- copy lenght DWORDS+MOVZX
45 milliseconds, MOVEAtoB_XZD-  203 bytes- copy lenght DWORDS+MOVZX
47 milliseconds, MOVEAtoB_XZA-  203 bytes- copy lenght DWORDS+MOVZX

77 milliseconds, MOVEAtoB_XZZC- 503 bytes- copy lenght DWORDS+MOVZX
77 milliseconds, MOVEAtoB_XZZA- 503 bytes- copy lenght DWORDS+MOVZX
78 milliseconds, MOVEAtoB_XZZB- 503 bytes- copy lenght DWORDS+MOVZX
78 milliseconds, MOVEAtoB_XZZD- 503 bytes- copy lenght DWORDS+MOVZX
78 milliseconds, MOVEAtoB_XZZE- 503 bytes- copy lenght DWORDS+MOVZX
78 milliseconds, MOVEAtoB_XZE-  503 bytes- copy lenght DWORDS+MOVZX
79 milliseconds, MOVEAtoB_XZC-  503 bytes- copy lenght DWORDS+MOVZX
79 milliseconds, MOVEAtoB_XZZF- 503 bytes- copy lenght DWORDS+MOVZX
79 milliseconds, MOVEAtoB_XZD-  503 bytes- copy lenght DWORDS+MOVZX
79 milliseconds, MOVEAtoB_XZB-  503 bytes- copy lenght DWORDS+MOVZX
80 milliseconds, MOVEAtoB_XZA-  503 bytes- copy lenght DWORDS+MOVZX

152 milliseconds, MOVEAtoB_XZZC-1027 bytes- copy lenght DWORDS+MOVZX
152 milliseconds, MOVEAtoB_XZZA-1027 bytes- copy lenght DWORDS+MOVZX
153 milliseconds, MOVEAtoB_XZZD-1027 bytes- copy lenght DWORDS+MOVZX
153 milliseconds, MOVEAtoB_XZZB-1027 bytes- copy lenght DWORDS+MOVZX
153 milliseconds, MOVEAtoB_XZB- 1027 bytes- copy lenght DWORDS+MOVZX
154 milliseconds, MOVEAtoB_XZZF-1027 bytes- copy lenght DWORDS+MOVZX
154 milliseconds, MOVEAtoB_XZD- 1027 bytes- copy lenght DWORDS+MOVZX
154 milliseconds, MOVEAtoB_XZE- 1027 bytes- copy lenght DWORDS+MOVZX
155 milliseconds, MOVEAtoB_XZA- 1027 bytes- copy lenght DWORDS+MOVZX
155 milliseconds, MOVEAtoB_XZZE-1027 bytes- copy lenght DWORDS+MOVZX
156 milliseconds, MOVEAtoB_XZC- 1027 bytes- copy lenght DWORDS+MOVZX
********** END III **********

Gunther

Hi Rui,

it seems that you've found the right way.  :t

Gunther
You have to know the facts before you can distort them.

guga

Oi rui.

de nada !  :t

Se precisar de mais testes, me avise, ok ?

Abs
Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of alcoholic levels in your blood.

My Code Sites:
http://rosasm.freeforums.org
http://winasm.tripod.com

RuiLoureiro

Gunther,
              It seems !

oi guga!
               ok !
--------------------------------------------------------
:biggrin:
Hi
          I replaced 2 intructions by only one
          in some procedures.
          Could you run it now again ?

Quote
NOT ALIGNED
-----------------------------------------------------
Intel(R) Pentium(R) 4 CPU 3.40GHz (SSE3)
-----------------------------------------------------
***** Time table *****


  5 milliseconds, MOVEAtoB_XZZF-  13 bytes- copy lenght DWORDS+MOVZX
  5 milliseconds, MOVEAtoB_XZZE13 bytes- copy lenght DWORDS+MOVZX
  5 milliseconds, MOVEAtoB_XZE-   13 bytes- copy lenght DWORDS+MOVZX
  6 milliseconds, MOVEAtoB_XZZC-  13 bytes- copy lenght DWORDS+MOVZX
  6 milliseconds, MOVEAtoB_XZZB-  13 bytes- copy lenght DWORDS+MOVZX
  6 milliseconds, MOVEAtoB_XZZA-  13 bytes- copy lenght DWORDS+MOVZX
  6 milliseconds, MOVEAtoB_XZZD-  13 bytes- copy lenght DWORDS+MOVZX
  6 milliseconds, MOVEAtoB_XZD-   13 bytes- copy lenght DWORDS+MOVZX
  6 milliseconds, MOVEAtoB_XZC-   13 bytes- copy lenght DWORDS+MOVZX
  6 milliseconds, MOVEAtoB_XZB-   13 bytes- copy lenght DWORDS+MOVZX
  6 milliseconds, MOVEAtoB_XZA-   13 bytes- copy lenght DWORDS+MOVZX
 
16 milliseconds, MOVEAtoB_XZZE53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZE-   53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZZC-  53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZD-   53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZZF-  53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZC-   53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZZB-  53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZB-   53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZZD-  53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZA-   53 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZZA-  53 bytes- copy lenght DWORDS+MOVZX

29 milliseconds, MOVEAtoB_XZZF- 103 bytes- copy lenght DWORDS+MOVZX
29 milliseconds, MOVEAtoB_XZE-  103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZZC- 103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZZB- 103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZA-  103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZZE- 103 bytes- copy lenght DWORDS+MOVZX
30 milliseconds, MOVEAtoB_XZD-  103 bytes- copy lenght DWORDS+MOVZX
31 milliseconds, MOVEAtoB_XZZD- 103 bytes- copy lenght DWORDS+MOVZX
31 milliseconds, MOVEAtoB_XZZA- 103 bytes- copy lenght DWORDS+MOVZX
31 milliseconds, MOVEAtoB_XZB-  103 bytes- copy lenght DWORDS+MOVZX
31 milliseconds, MOVEAtoB_XZC-  103 bytes- copy lenght DWORDS+MOVZX

49 milliseconds, MOVEAtoB_XZZF- 203 bytes- copy lenght DWORDS+MOVZX
50 milliseconds, MOVEAtoB_XZZC- 203 bytes- copy lenght DWORDS+MOVZX
50 milliseconds, MOVEAtoB_XZA-  203 bytes- copy lenght DWORDS+MOVZX
50 milliseconds, MOVEAtoB_XZZB- 203 bytes- copy lenght DWORDS+MOVZX
50 milliseconds, MOVEAtoB_XZE-  203 bytes- copy lenght DWORDS+MOVZX
50 milliseconds, MOVEAtoB_XZD-  203 bytes- copy lenght DWORDS+MOVZX
51 milliseconds, MOVEAtoB_XZB-  203 bytes- copy lenght DWORDS+MOVZX
51 milliseconds, MOVEAtoB_XZZA- 203 bytes- copy lenght DWORDS+MOVZX
51 milliseconds, MOVEAtoB_XZZE- 203 bytes- copy lenght DWORDS+MOVZX
51 milliseconds, MOVEAtoB_XZC-  203 bytes- copy lenght DWORDS+MOVZX
52 milliseconds, MOVEAtoB_XZZD- 203 bytes- copy lenght DWORDS+MOVZX

99 milliseconds, MOVEAtoB_XZZD- 503 bytes- copy lenght DWORDS+MOVZX
99 milliseconds, MOVEAtoB_XZZC- 503 bytes- copy lenght DWORDS+MOVZX
99 milliseconds, MOVEAtoB_XZZA- 503 bytes- copy lenght DWORDS+MOVZX
99 milliseconds, MOVEAtoB_XZC-  503 bytes- copy lenght DWORDS+MOVZX
100 milliseconds, MOVEAtoB_XZZE- 503 bytes- copy lenght DWORDS+MOVZX
100 milliseconds, MOVEAtoB_XZB-  503 bytes- copy lenght DWORDS+MOVZX
100 milliseconds, MOVEAtoB_XZZF- 503 bytes- copy lenght DWORDS+MOVZX
100 milliseconds, MOVEAtoB_XZA-  503 bytes- copy lenght DWORDS+MOVZX
102 milliseconds, MOVEAtoB_XZE-  503 bytes- copy lenght DWORDS+MOVZX
108 milliseconds, MOVEAtoB_XZD-  503 bytes- copy lenght DWORDS+MOVZX
116 milliseconds, MOVEAtoB_XZZB- 503 bytes- copy lenght DWORDS+MOVZX

187 milliseconds, MOVEAtoB_XZA- 1027 bytes- copy lenght DWORDS+MOVZX
187 milliseconds, MOVEAtoB_XZD- 1027 bytes- copy lenght DWORDS+MOVZX
188 milliseconds, MOVEAtoB_XZB- 1027 bytes- copy lenght DWORDS+MOVZX
189 milliseconds, MOVEAtoB_XZC- 1027 bytes- copy lenght DWORDS+MOVZX
189 milliseconds, MOVEAtoB_XZZB-1027 bytes- copy lenght DWORDS+MOVZX
190 milliseconds, MOVEAtoB_XZZF-1027 bytes- copy lenght DWORDS+MOVZX
191 milliseconds, MOVEAtoB_XZZD-1027 bytes- copy lenght DWORDS+MOVZX
192 milliseconds, MOVEAtoB_XZZE-1027 bytes- copy lenght DWORDS+MOVZX
192 milliseconds, MOVEAtoB_XZZA-1027 bytes- copy lenght DWORDS+MOVZX
193 milliseconds, MOVEAtoB_XZZC-1027 bytes- copy lenght DWORDS+MOVZX
197 milliseconds, MOVEAtoB_XZE- 1027 bytes- copy lenght DWORDS+MOVZX
********** END III **********

guga

Better  :t

Btw....The routine you are testing works for aligned and unaligned strings ?
Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of alcoholic levels in your blood.

My Code Sites:
http://rosasm.freeforums.org
http://winasm.tripod.com

RuiLoureiro

Quote from: guga on June 28, 2014, 07:20:17 AM
Better  :t

Btw....The routine you are testing works for aligned and unaligned strings ?
Thank you guga  :t
              For both.

jj2007

Here it is, Rui :icon14:

------------------------------------------
Intel(R) Celeron(R) M CPU        420  @ 1.60GHz (SSE3)
------------------------------------------
***** Time table *****

8 milliseconds, MOVEAtoB_XZZF-  13 bytes- copy lenght DWORDS+MOVZX
8 milliseconds, MOVEAtoB_XZE-  13 bytes- copy lenght DWORDS+MOVZX
9 milliseconds, MOVEAtoB_XZZE-  13 bytes- copy lenght DWORDS+MOVZX
14 milliseconds, MOVEAtoB_XZZC-  13 bytes- copy lenght DWORDS+MOVZX
14 milliseconds, MOVEAtoB_XZZB-  13 bytes- copy lenght DWORDS+MOVZX
14 milliseconds, MOVEAtoB_XZZD-  13 bytes- copy lenght DWORDS+MOVZX
15 milliseconds, MOVEAtoB_XZZA-  13 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZD-  13 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZC-  13 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZB-  13 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZA-  13 bytes- copy lenght DWORDS+MOVZX
26 milliseconds, MOVEAtoB_XZZF-  53 bytes- copy lenght DWORDS+MOVZX
27 milliseconds, MOVEAtoB_XZE-  53 bytes- copy lenght DWORDS+MOVZX
27 milliseconds, MOVEAtoB_XZZE-  53 bytes- copy lenght DWORDS+MOVZX
31 milliseconds, MOVEAtoB_XZZC-  53 bytes- copy lenght DWORDS+MOVZX
31 milliseconds, MOVEAtoB_XZZD-  53 bytes- copy lenght DWORDS+MOVZX
32 milliseconds, MOVEAtoB_XZZB-  53 bytes- copy lenght DWORDS+MOVZX
32 milliseconds, MOVEAtoB_XZB-  53 bytes- copy lenght DWORDS+MOVZX
33 milliseconds, MOVEAtoB_XZZA-  53 bytes- copy lenght DWORDS+MOVZX
33 milliseconds, MOVEAtoB_XZC-  53 bytes- copy lenght DWORDS+MOVZX
33 milliseconds, MOVEAtoB_XZD-  53 bytes- copy lenght DWORDS+MOVZX
34 milliseconds, MOVEAtoB_XZA-  53 bytes- copy lenght DWORDS+MOVZX
43 milliseconds, MOVEAtoB_XZZD- 103 bytes- copy lenght DWORDS+MOVZX
43 milliseconds, MOVEAtoB_XZZC- 103 bytes- copy lenght DWORDS+MOVZX
44 milliseconds, MOVEAtoB_XZZB- 103 bytes- copy lenght DWORDS+MOVZX
46 milliseconds, MOVEAtoB_XZZA- 103 bytes- copy lenght DWORDS+MOVZX
51 milliseconds, MOVEAtoB_XZZF- 103 bytes- copy lenght DWORDS+MOVZX
53 milliseconds, MOVEAtoB_XZZE- 103 bytes- copy lenght DWORDS+MOVZX
53 milliseconds, MOVEAtoB_XZE- 103 bytes- copy lenght DWORDS+MOVZX
56 milliseconds, MOVEAtoB_XZA- 103 bytes- copy lenght DWORDS+MOVZX
56 milliseconds, MOVEAtoB_XZD- 103 bytes- copy lenght DWORDS+MOVZX
56 milliseconds, MOVEAtoB_XZC- 103 bytes- copy lenght DWORDS+MOVZX
57 milliseconds, MOVEAtoB_XZB- 103 bytes- copy lenght DWORDS+MOVZX
74 milliseconds, MOVEAtoB_XZZD- 203 bytes- copy lenght DWORDS+MOVZX
75 milliseconds, MOVEAtoB_XZZB- 203 bytes- copy lenght DWORDS+MOVZX
75 milliseconds, MOVEAtoB_XZZC- 203 bytes- copy lenght DWORDS+MOVZX
79 milliseconds, MOVEAtoB_XZZA- 203 bytes- copy lenght DWORDS+MOVZX
98 milliseconds, MOVEAtoB_XZZF- 203 bytes- copy lenght DWORDS+MOVZX
99 milliseconds, MOVEAtoB_XZZE- 203 bytes- copy lenght DWORDS+MOVZX
100 milliseconds, MOVEAtoB_XZE- 203 bytes- copy lenght DWORDS+MOVZX
101 milliseconds, MOVEAtoB_XZC- 203 bytes- copy lenght DWORDS+MOVZX
101 milliseconds, MOVEAtoB_XZD- 203 bytes- copy lenght DWORDS+MOVZX
103 milliseconds, MOVEAtoB_XZA- 203 bytes- copy lenght DWORDS+MOVZX
103 milliseconds, MOVEAtoB_XZB- 203 bytes- copy lenght DWORDS+MOVZX
174 milliseconds, MOVEAtoB_XZE- 503 bytes- copy lenght DWORDS+MOVZX
174 milliseconds, MOVEAtoB_XZZF- 503 bytes- copy lenght DWORDS+MOVZX
174 milliseconds, MOVEAtoB_XZZE- 503 bytes- copy lenght DWORDS+MOVZX
176 milliseconds, MOVEAtoB_XZZC- 503 bytes- copy lenght DWORDS+MOVZX
176 milliseconds, MOVEAtoB_XZZD- 503 bytes- copy lenght DWORDS+MOVZX
177 milliseconds, MOVEAtoB_XZZA- 503 bytes- copy lenght DWORDS+MOVZX
177 milliseconds, MOVEAtoB_XZA- 503 bytes- copy lenght DWORDS+MOVZX
178 milliseconds, MOVEAtoB_XZD- 503 bytes- copy lenght DWORDS+MOVZX
179 milliseconds, MOVEAtoB_XZC- 503 bytes- copy lenght DWORDS+MOVZX
179 milliseconds, MOVEAtoB_XZZB- 503 bytes- copy lenght DWORDS+MOVZX
181 milliseconds, MOVEAtoB_XZB- 503 bytes- copy lenght DWORDS+MOVZX
338 milliseconds, MOVEAtoB_XZE-1027 bytes- copy lenght DWORDS+MOVZX
338 milliseconds, MOVEAtoB_XZZE-1027 bytes- copy lenght DWORDS+MOVZX
339 milliseconds, MOVEAtoB_XZZF-1027 bytes- copy lenght DWORDS+MOVZX
340 milliseconds, MOVEAtoB_XZA-1027 bytes- copy lenght DWORDS+MOVZX
341 milliseconds, MOVEAtoB_XZZA-1027 bytes- copy lenght DWORDS+MOVZX
341 milliseconds, MOVEAtoB_XZZD-1027 bytes- copy lenght DWORDS+MOVZX
341 milliseconds, MOVEAtoB_XZZC-1027 bytes- copy lenght DWORDS+MOVZX
344 milliseconds, MOVEAtoB_XZD-1027 bytes- copy lenght DWORDS+MOVZX
344 milliseconds, MOVEAtoB_XZC-1027 bytes- copy lenght DWORDS+MOVZX
345 milliseconds, MOVEAtoB_XZZB-1027 bytes- copy lenght DWORDS+MOVZX
346 milliseconds, MOVEAtoB_XZB-1027 bytes- copy lenght DWORDS+MOVZX
********** END III **********

RuiLoureiro

#59
Hi Jochen,
           Thank you for your work !
            :icon14:
-----------------------------------
contradictions are SOLVED ?
-----------------------------------
As i said:
When we read each procedure, we have no doubts,
the best are: XZE, XZZE or XZZF
(they are perfect solutions- for all cases).

note I: XZ  uses:   mov  eax, [esi+edx*4]
           XZZ uses:   mov  eax, [esi+edx]
           ZE   uses:   shr, shl
           ZF   uses:   and

note II: these procedures doesn't use cmp or test instructions
             but only operations and negative counters.

--------------------------
Results from Jochen
--------------------------
Quote
---------------------------------------------------------------
Intel(R) Celeron(R) M CPU 420  @ 1.60GHz (SSE3)
---------------------------------------------------------------
***** Time table *****

  8 milliseconds, MOVEAtoB_XZZF-  13 bytes- copy lenght DWORDS+MOVZX
  8 milliseconds, MOVEAtoB_XZE-   13 bytes- copy lenght DWORDS+MOVZX
  9 milliseconds, MOVEAtoB_XZZE13 bytes- copy lenght DWORDS+MOVZX
14 milliseconds, MOVEAtoB_XZZC-  13 bytes- copy lenght DWORDS+MOVZX
14 milliseconds, MOVEAtoB_XZZB-  13 bytes- copy lenght DWORDS+MOVZX
14 milliseconds, MOVEAtoB_XZZD-  13 bytes- copy lenght DWORDS+MOVZX
15 milliseconds, MOVEAtoB_XZZA-  13 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZD-   13 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZC-   13 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZB-   13 bytes- copy lenght DWORDS+MOVZX
16 milliseconds, MOVEAtoB_XZA-   13 bytes- copy lenght DWORDS+MOVZX

26 milliseconds, MOVEAtoB_XZZF-  53 bytes- copy lenght DWORDS+MOVZX
27 milliseconds, MOVEAtoB_XZE-   53 bytes- copy lenght DWORDS+MOVZX
27 milliseconds, MOVEAtoB_XZZE53 bytes- copy lenght DWORDS+MOVZX
31 milliseconds, MOVEAtoB_XZZC-  53 bytes- copy lenght DWORDS+MOVZX
31 milliseconds, MOVEAtoB_XZZD-  53 bytes- copy lenght DWORDS+MOVZX
32 milliseconds, MOVEAtoB_XZZB-  53 bytes- copy lenght DWORDS+MOVZX
32 milliseconds, MOVEAtoB_XZB-   53 bytes- copy lenght DWORDS+MOVZX
33 milliseconds, MOVEAtoB_XZZA-  53 bytes- copy lenght DWORDS+MOVZX
33 milliseconds, MOVEAtoB_XZC-   53 bytes- copy lenght DWORDS+MOVZX
33 milliseconds, MOVEAtoB_XZD-   53 bytes- copy lenght DWORDS+MOVZX
34 milliseconds, MOVEAtoB_XZA-   53 bytes- copy lenght DWORDS+MOVZX

43 milliseconds, MOVEAtoB_XZZD- 103 bytes- copy lenght DWORDS+MOVZX
43 milliseconds, MOVEAtoB_XZZC- 103 bytes- copy lenght DWORDS+MOVZX
44 milliseconds, MOVEAtoB_XZZB- 103 bytes- copy lenght DWORDS+MOVZX
46 milliseconds, MOVEAtoB_XZZA- 103 bytes- copy lenght DWORDS+MOVZX
51 milliseconds, MOVEAtoB_XZZF- 103 bytes- copy lenght DWORDS+MOVZX
53 milliseconds, MOVEAtoB_XZZE- 103 bytes- copy lenght DWORDS+MOVZX
53 milliseconds, MOVEAtoB_XZE-  103 bytes- copy lenght DWORDS+MOVZX
56 milliseconds, MOVEAtoB_XZA-  103 bytes- copy lenght DWORDS+MOVZX
56 milliseconds, MOVEAtoB_XZD-  103 bytes- copy lenght DWORDS+MOVZX
56 milliseconds, MOVEAtoB_XZC-  103 bytes- copy lenght DWORDS+MOVZX
57 milliseconds, MOVEAtoB_XZB-  103 bytes- copy lenght DWORDS+MOVZX

74 milliseconds, MOVEAtoB_XZZD- 203 bytes- copy lenght DWORDS+MOVZX
75 milliseconds, MOVEAtoB_XZZB- 203 bytes- copy lenght DWORDS+MOVZX
75 milliseconds, MOVEAtoB_XZZC- 203 bytes- copy lenght DWORDS+MOVZX
79 milliseconds, MOVEAtoB_XZZA- 203 bytes- copy lenght DWORDS+MOVZX
98 milliseconds, MOVEAtoB_XZZF- 203 bytes- copy lenght DWORDS+MOVZX
99 milliseconds, MOVEAtoB_XZZE- 203 bytes- copy lenght DWORDS+MOVZX
100 milliseconds, MOVEAtoB_XZE-  203 bytes- copy lenght DWORDS+MOVZX
101 milliseconds, MOVEAtoB_XZC-  203 bytes- copy lenght DWORDS+MOVZX
101 milliseconds, MOVEAtoB_XZD-  203 bytes- copy lenght DWORDS+MOVZX
103 milliseconds, MOVEAtoB_XZA-  203 bytes- copy lenght DWORDS+MOVZX
103 milliseconds, MOVEAtoB_XZB-  203 bytes- copy lenght DWORDS+MOVZX

174 milliseconds, MOVEAtoB_XZE-  503 bytes- copy lenght DWORDS+MOVZX
174 milliseconds, MOVEAtoB_XZZF- 503 bytes- copy lenght DWORDS+MOVZX
174 milliseconds, MOVEAtoB_XZZE- 503 bytes- copy lenght DWORDS+MOVZX
176 milliseconds, MOVEAtoB_XZZC- 503 bytes- copy lenght DWORDS+MOVZX
176 milliseconds, MOVEAtoB_XZZD- 503 bytes- copy lenght DWORDS+MOVZX
177 milliseconds, MOVEAtoB_XZZA- 503 bytes- copy lenght DWORDS+MOVZX
177 milliseconds, MOVEAtoB_XZA-  503 bytes- copy lenght DWORDS+MOVZX
178 milliseconds, MOVEAtoB_XZD-  503 bytes- copy lenght DWORDS+MOVZX
179 milliseconds, MOVEAtoB_XZC-  503 bytes- copy lenght DWORDS+MOVZX
179 milliseconds, MOVEAtoB_XZZB- 503 bytes- copy lenght DWORDS+MOVZX
181 milliseconds, MOVEAtoB_XZB-  503 bytes- copy lenght DWORDS+MOVZX

338 milliseconds, MOVEAtoB_XZE- 1027 bytes- copy lenght DWORDS+MOVZX
338 milliseconds, MOVEAtoB_XZZE-1027 bytes- copy lenght DWORDS+MOVZX
339 milliseconds, MOVEAtoB_XZZF-1027 bytes- copy lenght DWORDS+MOVZX
340 milliseconds, MOVEAtoB_XZA- 1027 bytes- copy lenght DWORDS+MOVZX
341 milliseconds, MOVEAtoB_XZZA-1027 bytes- copy lenght DWORDS+MOVZX
341 milliseconds, MOVEAtoB_XZZD-1027 bytes- copy lenght DWORDS+MOVZX
341 milliseconds, MOVEAtoB_XZZC-1027 bytes- copy lenght DWORDS+MOVZX
344 milliseconds, MOVEAtoB_XZD- 1027 bytes- copy lenght DWORDS+MOVZX
344 milliseconds, MOVEAtoB_XZC- 1027 bytes- copy lenght DWORDS+MOVZX
345 milliseconds, MOVEAtoB_XZZB-1027 bytes- copy lenght DWORDS+MOVZX
346 milliseconds, MOVEAtoB_XZB- 1027 bytes- copy lenght DWORDS+MOVZX
********** END III **********