Optimalization of "QuickSortSwap"

7 views
Skip to first unread message

kor...@gmail.com

unread,
Nov 21, 2005, 12:53:45 AM11/21/05
to Templated c++ data structures and algorithms
<english>
This is for me one of interresting things for me. How to optimalize the
code below? That's part of my QuickSortSwap() function. This function
is called many times in my implementation of QuickSort so i need most
effective implementation of this function. In this case is class T ==
unsigned int. The equivalent assembler code is generated for case that
T == unsigned int. One more time, i am asking: "Do you have any
suggestions how to optimalize the function bellow?". Btw, I am using
microsoft visual c++ 6.0.
</english>

<czech>
Tohle je prvni priklad co by se mohlo nachazet v tehle googlegroup. Jak
optimalizovat kod zmineny nize? V podstate je to cast tzv. funkce
QuickSortSwap(), kterou mnohokrat volam ve sve implementaci QuickSortu,
takze mi jde o to, aby byla co nejvice efektivni. V tomto pripade je
datovy typ T == unsigned int. Ptam se jeste jednou : "Mate nejake
napady, jak optimalizovat, kod zmineny nize?". Mimochodem ja osobne
pouzivam microsoft visual c++ 6.0.
</czech>

void inline QuickSortSwap(const unsigned int p, const unsigned int x,
const unsigned int b) {
......non interresting code is skipped.....
866: T* t = storage[b];
004085AD mov eax,dword ptr [ebp-4]
004085B0 mov ecx,dword ptr [eax+0Ch]
004085B3 mov edx,dword ptr [ebp+10h]
004085B6 mov eax,dword ptr [ecx+edx*4]
004085B9 mov dword ptr [ebp-8],eax

867: storage[b] = storage[x];
004085BC mov ecx,dword ptr [ebp-4]
004085BF mov edx,dword ptr [ecx+0Ch]
004085C2 mov eax,dword ptr [ebp-4]
004085C5 mov ecx,dword ptr [eax+0Ch]
004085C8 mov eax,dword ptr [ebp+10h]
004085CB mov esi,dword ptr [ebp+0Ch]
004085CE mov edx,dword ptr [edx+esi*4]
004085D1 mov dword ptr [ecx+eax*4],edx

868: storage[x] = storage[p];
004085D4 mov eax,dword ptr [ebp-4]
004085D7 mov ecx,dword ptr [eax+0Ch]
004085DA mov edx,dword ptr [ebp-4]
004085DD mov eax,dword ptr [edx+0Ch]
004085E0 mov edx,dword ptr [ebp+0Ch]
004085E3 mov esi,dword ptr [ebp+8]
004085E6 mov ecx,dword ptr [ecx+esi*4]
004085E9 mov dword ptr [eax+edx*4],ecx

869: storage[p] = t;
004085EC mov edx,dword ptr [ebp-4]
004085EF mov eax,dword ptr [edx+0Ch]
004085F2 mov ecx,dword ptr [ebp+8]
004085F5 mov edx,dword ptr [ebp-8]
004085F8 mov dword ptr [eax+ecx*4],edx
......non interresting code is skipped.....
}

Reply all
Reply to author
Forward
0 new messages