Forum Informatyka UJ forum Strona Główna Informatyka UJ forum
Rocznik 2005 - czyli najlepsze forum w sieci
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

[Pascal] i := i + 1 vs. inc(i)

 
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Programowanie
Zobacz poprzedni temat :: Zobacz następny temat  

Jak inkrementujesz zmienne?
i := i + 1
22%
 22%  [ 7 ]
inc(i)
77%
 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

PostWysł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 profil autora
Zobacz poprzedni temat :: Zobacz następny temat  

Jak inkrementujesz zmienne?
i := i + 1
22%
 22%  [ 7 ]
inc(i)
77%
 77%  [ 24 ]
Wszystkich Głosów : 31

Autor Wiadomość
jagm
zielony żul



Dołączył: 01 Lut 2006
Posty: 1421
Przeczytał: 0 tematów


PostWysł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 profil autora
Zobacz poprzedni temat :: Zobacz następny temat  

Jak inkrementujesz zmienne?
i := i + 1
22%
 22%  [ 7 ]
inc(i)
77%
 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 :]

PostWysł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 profil autora
Zobacz poprzedni temat :: Zobacz następny temat  

Jak inkrementujesz zmienne?
i := i + 1
22%
 22%  [ 7 ]
inc(i)
77%
 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

PostWysł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 profil autora
Zobacz poprzedni temat :: Zobacz następny temat  

Jak inkrementujesz zmienne?
i := i + 1
22%
 22%  [ 7 ]
inc(i)
77%
 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

PostWysł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
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Programowanie Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
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
Regulamin