1.Jak przeklada sie uzywanie wstawek asemblerowych do wydajnosci programu, chodzi mi o obliczenia matematyczne?
Jeżeli musisz wykonać złożone obliczenia i to wielokrotnie, to często lepiej jest napisać coś w assemblerze. Jednak Delphi bardzo dobrze optymalizuje kod, więc w większości przypadków możesz pozostawić to zadanie dla Delphi.
2.Czy oplaca sie rozbic np:. ((X*(20Y)-(5+(X2)-18)div(15*2))
na instrukcje asm ?
Tak prostych obliczeń nie ma sensu rozbijać na instrukcje asm. Możesz za to spróbować tak przekształcić wyrażenie, żeby wykonywano jak najmniej mnożeń i dzieleń. Np:
(X*(Y*20-2)-23) div 30
3 Czemu po inkrementacji delphi (inc();)liczby w petli kilkadziesiat tysiecy razy, wykonuje sie ona kilkukrotnie szybciej od jej odpowiednika w asm (INC X,n)? Petla jest zwykla for a wstawka asm.
A to już nie wiem dlaczego tak ci wychodzi. Może nieekonomicznie piszesz w asm. Ja jak testowałem to różnice mieściły się w granicach błędu. Oto kod Delphi:
var
i, j: Cardinal;
begin
j := 0;
for i := 0 to $FFFFFFF do
Inc(j);
A tak Delphi zamienia to na asm:
mov eax, $10000000
inc ebx
dec eax
jnz -$04
--
Jest jeszcze jeden błąd ... :)
--------Oficjalny kanał----------
Service for programmers w IRC: #4programmers, warszawa.ircnet.pl (POLNet)