O resultado foi igual ;-)
Sergio Oliveira Jr. wrote:
> Java tem dessas coisas...
>
> O javac tem uma opção -O que otimiza o bytecode. Já tentou isso ???
>
> []'s
>
> Sergio
>
>
>> From: Sven van ´t Veer <[EMAIL PROTECTED]>
>> Reply-To: [EMAIL PROTECTED]
>> To: [EMAIL PROTECTED]
>> Subject: [java-list] Engraçado : QuickSort em Java & Optimalizacão em
>> Java
>> Date: Thu, 03 May 2001 09:30:57 -0300
>>
>> Em relação de QuickSort, mandei uma modificação do metodo swap ontem:
>> private void swap(int a[], int i, int j){
>> a[i] ^= a[j];
>> a[j] ^= a[i];
>> a[i] ^= a[j];
>> }
>> em vez de:
>> private void swap(int a[], int i, int j){
>> int T = a[i];
>> a[i] = a[j];
>> a[j] = T;
>> }
>>
>> O primeiro exemplo em C/C++ é muito mais rapido que o segundo (em
>> assembler são 6 a 8 operações a menos). Ai fez um teste em Java e o
>> resultado é exatamente o oposto, quase o dobro de linhas em byecode.
>>
>> Veja abaixo: (swaptemp utiliza a variavel temporaria T)
>> private void swaptemp(int a[], int i, int j)
>> {
>> // 0 0:aload_1
>> // 1 1:iload_2
>> // 2 2:iaload
>> // 3 3:istore 4
>> // 4 5:aload_1
>> // 5 6:iload_2
>> // 6 7:aload_1
>> // 7 8:iload_3
>> // 8 9:iaload
>> // 9 10:iastore
>> // 10 11:aload_1
>> // 11 12:iload_3
>> // 12 13:iload 4
>> // 13 15:iastore
>> // 14 16:return
>> }
>>
>> private void swap(int a[], int i, int j)
>> {
>> // 0 0:aload_1
>> // 1 1:iload_2
>> // 2 2:dup2
>> // 3 3:iaload
>> // 4 4:aload_1
>> // 5 5:iload_3
>> // 6 6:iaload
>> // 7 7:ixor
>> // 8 8:iastore
>> // 9 9:aload_1
>> // 10 10:iload_3
>> // 11 11:dup2
>> // 12 12:iaload
>> // 13 13:aload_1
>> // 14 14:iload_2
>> // 15 15:iaload
>> // 16 16:ixor
>> // 17 17:iastore
>> // 18 18:aload_1
>> // 19 19:iload_2
>> // 20 20:dup2
>> // 21 21:iaload
>> // 22 22:aload_1
>> // 23 23:iload_3
>> // 24 24:iaload
>> // 25 25:ixor
>> // 26 26:iastore
>> // 27 27:return
>> }
>> }
>>
>> com este resultado na mão fize um terceiro teste:
>> private void swap2(int a[], int i, int j){
>> a[i] = a[i] ^ a[j];
>> a[j] = a[j] ^ a[i];
>> a[i] = a[i] ^ a[j];
>> }
>>
>> Isso é igual a :
>> private void swap(int a[], int i, int j){
>> a[i] ^= a[j];
>> a[j] ^= a[i];
>> a[i] ^= a[j];
>> }
>> e porém deveria gerar os mesmos bytecodes, mas o resultado é pior ainda:
>> private void swap2(int a[], int i, int j)
>> {
>> // 0 0:aload_1
>> // 1 1:iload_2
>> // 2 2:aload_1
>> // 3 3:iload_2
>> // 4 4:iaload
>> // 5 5:aload_1
>> // 6 6:iload_3
>> // 7 7:iaload
>> // 8 8:ixor
>> // 9 9:iastore
>> // 10 10:aload_1
>> // 11 11:iload_3
>> // 12 12:aload_1
>> // 13 13:iload_3
>> // 14 14:iaload
>> // 15 15:aload_1
>> // 16 16:iload_2
>> // 17 17:iaload
>> // 18 18:ixor
>> // 19 19:iastore
>> // 20 20:aload_1
>> // 21 21:iload_2
>> // 22 22:aload_1
>> // 23 23:iload_2
>> // 24 24:iaload
>> // 25 25:aload_1
>> // 26 26:iload_3
>> // 27 27:iaload
>> // 28 28:ixor
>> // 29 29:iastore
>> // 30 30:return
>> }
>>
>> Será que java não pode fazer otimalizações ??
>>
>> sven
>>
>>
>> ------------------------------ LISTA SOUJAVA
>> ----------------------------
>> http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
>> dúvidas mais comuns: http://www.soujava.org.br/faq.htm
>> regras da lista: http://www.soujava.org.br/regras.htm
>> para sair da lista: envie email para
>> [EMAIL PROTECTED]
>> -------------------------------------------------------------------------
>>
>>
>
> _________________________________________________________________________
> Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.
>
>
> ------------------------------ LISTA SOUJAVA
> ---------------------------- http://www.soujava.org.br - Sociedade
> de Usuários Java da Sucesu-SP dúvidas mais comuns:
> http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> para sair da lista: envie email para
> [EMAIL PROTECTED]
> -------------------------------------------------------------------------
>
>
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------