|
Informatyka UJ forum Rocznik 2005 - czyli najlepsze forum w sieci
|
Zobacz poprzedni temat :: Zobacz następny temat |
Jak inkrementujesz zmienne? |
i := i + 1 |
|
22% |
[ 7 ] |
inc(i) |
|
77% |
[ 24 ] |
|
Wszystkich Głosów : 31 |
|
Autor |
Wiadomość |
Saimi
pijak
Dołączył: 22 Lis 2005
Posty: 149
Przeczytał: 0 tematów
Skąd: Kraków
|
Wysłany: Czw 23:04, 30 Mar 2006 Temat postu: [Pascal] i := i + 1 vs. inc(i) |
|
|
Jak to w końcu jest? Która z tych operacji wykonuje się szybciej? Czy może nie ma to znaczenia, bo kompilator jest na tyle inteligentny, ze po prostu zrobi tak, żeby było najbardziej wydajnie? Słyszałem sprzeczne informacje na ten temat...
|
|
Powrót do góry |
|
|
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Jak inkrementujesz zmienne? |
i := i + 1 |
|
22% |
[ 7 ] |
inc(i) |
|
77% |
[ 24 ] |
|
Wszystkich Głosów : 31 |
|
Autor |
Wiadomość |
jagm
zielony żul
Dołączył: 01 Lut 2006
Posty: 1421
Przeczytał: 0 tematów
|
Wysłany: Czw 23:17, 30 Mar 2006 Temat postu: |
|
|
Zrób sobie while'a mierząc czas, w którym najpierw będziesz miał inc(i), później zrób z i:=i+1 to się przekonasz :] Mi kiedyś wyszło, że inc jest szybszy, ale nieznacznie, więc raczej nie ma to większego wpływu.
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Jak inkrementujesz zmienne? |
i := i + 1 |
|
22% |
[ 7 ] |
inc(i) |
|
77% |
[ 24 ] |
|
Wszystkich Głosów : 31 |
|
Autor |
Wiadomość |
Madras
Omylny Admin
Dołączył: 09 Lis 2005
Posty: 2021
Przeczytał: 0 tematów
Skąd: Z Pokoju :]
|
Wysłany: Czw 23:38, 30 Mar 2006 Temat postu: |
|
|
Prosty test pokazał, że inc(i) i i:=i+1 działają tak samo szybko, zapewne ten drugi zapis jest w trakcie kompilacji sprowadzany do pierwszego. Aczkolwiek i tak warto używać inc'a - przy nazwach o długości > 1 oszczędzamy na klawiaturze ;). No i pamiętajcie, że inc jest przeładowany - i:=i+j można zapisać jako inc(i,j), jest też analogiczna procedura dec.
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Jak inkrementujesz zmienne? |
i := i + 1 |
|
22% |
[ 7 ] |
inc(i) |
|
77% |
[ 24 ] |
|
Wszystkich Głosów : 31 |
|
Autor |
Wiadomość |
flower
alkoholik
Dołączył: 18 Lis 2005
Posty: 481
Przeczytał: 0 tematów
Skąd: Kraków
|
Wysłany: Pią 9:55, 31 Mar 2006 Temat postu: |
|
|
takie testy to se mozna... :twisted:, prawda jest taka ze to zalezy od kompilatora, delphi w obu przypadkach robi z tego zwykle inc w asemblerze.
Kod: |
Unit1.pas.29: inc(i);
004520F0 43 inc ebx
Unit1.pas.30: i := i + 1;
004520F1 43 inc ebx
|
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Jak inkrementujesz zmienne? |
i := i + 1 |
|
22% |
[ 7 ] |
inc(i) |
|
77% |
[ 24 ] |
|
Wszystkich Głosów : 31 |
|
Autor |
Wiadomość |
oinopion
żul
Dołączył: 28 Lis 2005
Posty: 858
Przeczytał: 0 tematów
Skąd: Kraków
|
Wysłany: Pią 14:47, 31 Mar 2006 Temat postu: |
|
|
Prawda jest taka, że fpc ma kilka usprawnień, takich jak przekształcanie 'x div 2' na shr, więc pewnie sprawdza czy w 'i:= i+ 1' nie można czegoś zoptymalizować. BTW Te testy przeprowadzaliście z włączoną optymalizacją czy bez?
|
|
Powrót do góry |
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
|