🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #252

Re: optymalizacja

#252
From: tosamo
Date: Wed, 17 May 2006 16:15
105 lines
4194 bytes
Użytkownik "Bogdan (bogdro)" <bogdan@bogdan.pl> napisał w wiadomości 
news:e4ffrk$he5$1@nemesis.news.tpi.pl...
> tosamo napisał(a):
>> Witam
>>
>> Pisze sobie porgramik w masm32 (wersja 6.11 chyba). Do tej pory pisalem
>> glownie w c i pascalu wiec na poczatku
>> program w asm wygladal jak dokladna kalka z jezykow wyzszego rzedu i 
>> dzialal
>> jakies 3 razy wolniej niz
>> pascal i delphi. Potem zaczalem optymalizowac i wyszlo na to, ze kazda
>> optymalizacja zwalnia dzialanie programu
>> o kilka(dziesiat) %.
>
> Optymalizacja numer 3: jeśli obie powyższe dają niewystarczające
> wyniki, sięgaj po assemblera.

To ma byc na zaliczenie z jezykow asemblerowych wiec musi byc w asm.
Ciekawe co powie wykladowca jak zobaczy ze w asm wyszlo 5 razy wolniej niz w 
c
i 4 razy wolniej niz w delphi.

>> Na przyklad:
>>
>>   {..}
>>     ;
>>     mov ebx,eax
>>     mov DWORD PTR [Buffers],eax ; A = temp
>
> Też możliwe, że przez movsd. Ror na pamięci też nie wymiata, ale
> przynajmniej jest Direct Path.
> Tą drugą wersję można jeszcze przyspieszyć moim zdaniem, używając
> różnych rejestrów.

Moze i mozna. I tak postanowilem pojsc inna droga i zupelnie wywalilem
te kopiowanie.

>> Albo na przyklad mam cos takiego :
>>
>>     mov al,byte ptr [esi+ecx]
>>     mov byte ptr [edi+ebx],al
>>     inc ecx
>>     inc ebx
>>     inc [Message_Block_Index]           << TO JEST WAZNE
>>     ;
>>     add [Length_Low],8
>>     jnz sha1_input8 ;
>>     inc [Length_High] ;
>>     jnz sha1_input8
>>     mov [Corrupted],1
>>
>> Zmienna Message_Block_Index to zwykla zmienna DD w sekcji .data. Nie jest 
>> do
>> niczego juz potrzebna bo zamiast niej
>> zapisuje dane w rejestrach. Usuwam ta linie i program zwalnia o 5% !
>> Oczywiscie dziala bez zmiena tylko wolniej.
>
> Wstaw ze 5-10 NOPów, może pomoże. Chodzi o to, że poprzednie
> instrukcje się muszą wykonać, nowe - zostać zdekodowane. Tak *mi* się
> wydaje. Poza tym, należy unikać używania rejestrów cząstkowych o ile
> się da.

Ten fragment to akurat dokladna kopia z c. Postaram sie to jeszcze 
zoptymalizowac.
Zrobie kopiowanie calych blokow po 4 bajty i znowu bede mial o 50% wolniej.

> Należy rozdzielać instrukcje zależne.

Ale o co chodzi ?

>>  {..}
>>     lodsd
>
> Instrukcje łańcuchowe są powolne.

A ja caly czas zylem w przeswiadczeniu, ze to najszybszy sposob na 
kopiowanie
pamieci. W takim razie co bedzie szybsze ?

Takie cos ?

mov eax,dword ptr [esi]
inc esi

>> Czy ktos mi to wyjasni albo chociaz powie gdzie mozna jakies konkrety na 
>> ten
>> temat przeczytac ?
>
> Ja swoje informacje biorę z podręczników optymalizacyjnych AMD:
> http://www.amd.com/us-en/Processors/DevelopWithAMD/0,,30_2252_739_7044,00.html

Zobacze.

> Niedawno jeden kolega na alt.pl.asm próbował łamać MD5. Może
> połączycie siły? To, że w SHA1 i MD5 odkryto jakieś dziurki nie
> oznacza od razu, że w jakimś rozsądnym czasie znajdziecie kolizje.

Ja nie probuje lamac sha. Musze tylko zrobic zeby bylo chociaz o kilka % 
szybsze niz
przyklad w c i bedzie ok. Juz mi wyszlo, ze dla duzych blokow danych jest 
szybszy tylko
z malymi sobie nie radzi.

Dzieki za odpowiedz. 
Technical Details
Message-ID: <e4fi7h$q1b$1@inews.gazeta.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
References: <e4f5nl$rj4$1@inews.gazeta.pl> <e4ffrk$he5$1@nemesis.news.tpi.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: "tosamo" <tosamo@o2.pl>
Newsgroups: pl.comp.lang.asm
Subject: Re: optymalizacja
Date: Wed, 17 May 2006 18:15:41 +0200
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 107
Message-ID: <e4fi7h$q1b$1@inews.gazeta.pl>
References: <e4f5nl$rj4$1@inews.gazeta.pl> <e4ffrk$he5$1@nemesis.news.tpi.pl>
NNTP-Posting-Host: aalp237.neoplus.adsl.tpnet.pl
X-Trace: inews.gazeta.pl 1147882545 26667 83.5.45.237 (17 May 2006 16:15:45 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Wed, 17 May 2006 16:15:45 +0000 (UTC)
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.1830
X-Priority: 3
X-RFC2646: Format=Flowed; Original
X-Newsreader: Microsoft Outlook Express 6.00.3790.1830
X-User: etet100
X-MSMail-Priority: Normal
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit