Szybkosc dzialan Delphi

0

Witam ostatnio napisalem banalny programik w delphi. Ma on za zadaie liczyc do 5k.

uzywalem inc zamiast add zeby zmiejszyc szybkosc wykonywania, jednak moj najszybszy wynik to 3,5 sec, przy czym w c++ czy tez javie zajmuje to 144ms. Moze im ktos wytlumaczyc dlaczego?

0

Może na początek pokaż kody programów? W tej chwili nie wiadomo nawet czy to programy konsolowe czy w okienkach.

0

var
i:integer;
begin
for i:=0 to 5000 do
begin
inc(i);
writeln(i);
end;

kodow w javie i c++ nie ma bo pisal je moj kolega. zapwniam ze sa napisane normalnie tak jak ten bez zadnych super wydziwian

0

Kod jest błędny, bo albo używasz for-a i licznik inkrementuje się sam, albo while lub until i licznik inkrementujesz ręcznie.

0

Ale to nie tłumaczy dlaczego kod działa wolno. W każdym przebiegu pętli i rośnie o 2, więc powinno być szybciej.

0

rośnie o 1
Inc(I) przez kompilator prawdopodobnie zostało wycięte.

Kwestia pomiaru, to zależy czy było to mierzone QueryperformanceCounter we wszystkich przypadkach. Czuję to fuszerkę. Delphi nie powinno odbiegać od C++

0

są kompilatory które nie przepuszczą tego inc

0

writeln w delphi to strasznie skopane bydle.
Potrafi pisać do plików, do drukarki, na ekran, ma nieograniczoną ilość parametrów, rozróżnia formatowania itp.
Jak chcesz porównywać same pętle to porównuj pętle a nie funkcje wypisujące coś na ekran.

0

Tak jakby printf/cout i warianty tego nie potrafiły… ale prawdą jest, że przy tych 5000 iteracji czas wykonywania samej pętli jest pomijalnie mały. 99,999% mierzonego czasu zajmuje wyświetlanie liczb.

Dla porównania, program (po wyrzuceniu inc(i)) skompilowany Free Pascalem wykonuje mi się w oknie pod Windows XP poniżej sekundy, a około pięciu sekund na pełnym ekranie. A to oznacza, że winny jest nawet nie writeln, tylko skopana obsługa konsoli w Windows…
Ten sam program z przekierowanym wyjściem do pliku wykonuje się „natychmiast” (zdecydowanie krócej niż 144ms).

uzywalem inc zamiast add zeby zmiejszyc szybkosc wykonywania,
Bez znaczenia. Samo działanie wykonuje się miliony, jeśli nie miliardy razy szybciej niż wyświetlanie wyników na ekranie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1