-
21. Data: 2009-08-04 07:56:21
Temat: Re: Jak się nauczyć Javy?
Od: mgk <m...@w...pl>
Dobra. Dokladnie jeszcze zajrzalem do moich wynikow.
Udalo mi sie w Javie te piłki odbijające sie tak zoptymalizowac ze w
Javie wynik predkosci byl nawet lepszy niz w C++ (ale to moze dlatego
ze mam Visual Express a nie proffesional i moze nie robi wszystkich
optymalizacji).
Tylko ze wtedy to juz javy po mojej optymalizacji ten kod nie
przypominal. Ani jednego new :)
A przy takiej normalnej optymalizacji to Java pare procent gorzej.
10-20%.
-
22. Data: 2009-08-04 08:48:15
Temat: Re: Jak się nauczyć Javy?
Od: mgk <m...@w...pl>
> Trochę szkoda, że zarówno program wymieniony przez Ciebie, jak i program, o
> którym wspomniał Michał Kleczek, nie są dla mnie użyteczne - trudno mi więc
> porównać prędkość działania, z tym czego sam używam i jest napisane w C lub
> C++. Miałem nadzieję, że ktoś wskaże program typu czytnik grup dyskusyjnych
> czy przeglądarka PDF, albo jakaś (niekoniecznie w pełni funkcjonalna)
> przeglądarka internetowa, oparta o silnik napisany w Javie...
> Spróbuję jednak znaleźć chwilę czasu, aby potestować i wyrobić sobie opinię
> o tych programach, o których napisaliście.
No tak... Przegladarka internetowa to rewelacyjny benchmark.......
Tylko ze w przegladarce czekam na siec, a nie na program / cpu.
Takze zaden to benchmark.
Benchmark to moglby byc jakis algorytm wykonywany tylko przez
procesor. Taki jak ja np zrobilem (Fizyka, czy generacja ruchow w
szachach). Moze byc tez kompresja, czy inne obliczenia.
A nie przegladarka... Co mialo by pokazac napisanie przegladarki w
Javie? Ma to mierzyc predkosc Javy?
-
23. Data: 2009-08-04 09:33:42
Temat: Re: Jak się nauczyć Javy?
Od: Wojciech Jaczewski <w...@o...pl>
mgk wrote:
> No tak... Przegladarka internetowa to rewelacyjny benchmark.......
> Tylko ze w przegladarce czekam na siec, a nie na program / cpu.
> Takze zaden to benchmark.
Można ją testować także na rozbudowanych stronach znajdujących się na dysku,
niekoniecznie tych w sieci.
-
24. Data: 2009-08-04 10:00:45
Temat: Re: Jak się nauczyć Javy?
Od: Wojciech Jaczewski <w...@o...pl>
mgk wrote:
> Benchmark to moglby byc jakis algorytm wykonywany tylko przez
> procesor. Taki jak ja np zrobilem (Fizyka, czy generacja ruchow w
> szachach). Moze byc tez kompresja, czy inne obliczenia.
> A nie przegladarka... Co mialo by pokazac napisanie przegladarki w
> Javie? Ma to mierzyc predkosc Javy?
Mnie też ciekawi efekt braku możliwości jawnego używania wskaźników w Javie,
przez co w niektórych przypadkach programiści C/C++ wybiorą inne
rozwiązanie, niż programiści Javy. Nie wiem który z podstawowych
benchmarków obciążających procesor mógłby coś takiego pokazać, natomiast
moim zdaniem jest spora szansa, że pokaże to rozbudowany program
desktopowy.
W to, że średnio Java będzie wolniejsza od C/C++ o jakieś 10-15% to wierzę,
natomiast znajdzie się ileś zastosowań, gdzie nie będzie szans zbliżyć się
Javowym programem do tego, co można osiągnąć w C/C++ - właśnie z powodu
ograniczeń, jakie postawili twórcy Javy.
-
25. Data: 2009-08-04 10:54:55
Temat: Re: Jak się nauczyć Javy?
Od: mgk <m...@w...pl>
On 4 Sie, 11:33, Wojciech Jaczewski <w...@o...pl> wrote:
> mgk wrote:
> > No tak... Przegladarka internetowa to rewelacyjny benchmark.......
> > Tylko ze w przegladarce czekam na siec, a nie na program / cpu.
> > Takze zaden to benchmark.
>
> Można ją testować także na rozbudowanych stronach znajdujących się na dysku,
> niekoniecznie tych w sieci.
To dysk twardy bedzie gardlem...
Testy nie powinny wychodzic po za cpu i ram.
Przeciez co nas obchodzi czy strona sparsuje sie w 0,1s czy w 0.2s ?
Co innego jak ktos np renderuje cos w 3D Studio i mu sie to renderuje
pare dni. Albo kompresuje film. Albo cos sie szyfruje, czy pakuje.
-
26. Data: 2009-08-04 11:00:16
Temat: Re: Jak się nauczyć Javy?
Od: mgk <m...@w...pl>
>
> Mnie też ciekawi efekt braku możliwości jawnego używania wskaźników w Javie,
> przez co w niektórych przypadkach programiści C/C++ wybiorą inne
> rozwiązanie, niż programiści Javy. Nie wiem który z podstawowych
Nie rozumiem. Wskazniki w Javie tak wlasciwie w praktyce to sa.
Nazywaja sie referencje. (tylko nie pisac mi tu wojny na grupie :) ).
Roznica jest tylko taka, ze na referencjach nie masz arytmetyki takiej
jak w C++. ALe w C++ nie uzywalo sie jej odkat powstaly iteratory.
Natomiast testowalem kiedys wydajnosc iteratorow w Javie vs C++. Te w
Javie sa troche wolniejsze, ale nie jest to jakies znaczne
spowolnienie.
A i jest jeszcze jedna roznica. W Javie nie mozesz utworzyc obiektu na
stosie. Musisz przez alokacje (new).
Ale "new" w Javie jest szybsze niz w C++ bo java ma jakis swoj memory
manager. W C++ w niektorych grach pisano wlasne memory managery
wlasnie aby przyspieszyc operacje new. Jasne ze nie jest tak szybkie
jak utworzenie obiektu na stosie, ale znow nie jest to jakos bardzo
szczegolne.
nawet jesli taka operacja trwa 2 razy dluzej niz w C++ to nie jest to
operacja ktora podczas wykonywania programu zajmuje 99% czasu.
-
27. Data: 2009-08-04 15:12:17
Temat: Re: Jak się nauczyć Javy?
Od: Maciej Sobczak <s...@g...com>
On 4 Sie, 12:54, mgk <m...@w...pl> wrote:
> Testy nie powinny wychodzic po za cpu i ram.
Niekoniecznie. Normalne systemy używają również innych rzeczy, więc
dlaczego je eliminować z testów? Chociażby takie I/O.
Przykład:
Biblioteka komunikacyjna oparta o nieblokujące I/O. Dwa programy w C++
komunikują się przez sieć (pomiędzy dwoma komputerami) z prędkością
45k komunikatów na sekundę po jednym połączeniu. Dwa programy w Javie
osiągają na tym samym sprzęcie 14k.
Protokół transmisji, format serializacji i treść komunikatów
oczywiście takie same.
Różny był kod tych programów, ale to był też test wydajności użytych i
dostępnych w danym języku idiomów i technik.
To, że pętla na integerach kręci się w Javie tak szybko jak w C++ nie
odzwierciedla złożoności realnych systemów i dlatego benchmarki
algorytmiczne niewiele wnoszą.
--
Maciej Sobczak * www.msobczak.com * www.inspirel.com
-
28. Data: 2009-08-05 07:19:22
Temat: Re: Jak się nauczyć Javy?
Od: mgk <m...@w...pl>
> Biblioteka komunikacyjna oparta o nieblokujące I/O. Dwa programy w C++
...
>To, że pętla na integerach kręci się w Javie tak szybko jak w C++ nie
odzwierciedla złożoności realnych systemów i dlatego benchmarki
algorytmiczne niewiele wnoszą.
No tak. Ale wtedy nie mierzysz predkosci z jaka sie wykonuje kod w
danym jezyku, a predkosc karty sieciowej, IO, itp...
Czyli nie otrzymasz jakos bardzo rozniacych sie wynikow.
Przeciez program w Javie, czy C++ tyle samo czasu bedzie czekal na
karte sieciowa. Wiec bezsensu.
Nie powinna to byc 1 petla, a wiekszy program w ktorym sa wszelkie
jezykowe mechanizmy. Dlatego np fizyka odbijajacych sie pilek ktora ja
kiedys zrobilem, albo generator ruchow w szachach sadze ze sa dobrymi
testami (bynajmniej nie jest to zadna petla krecacych sie intow).
-
29. Data: 2009-08-05 07:20:21
Temat: Re: Jak się nauczyć Javy?
Od: shio <s...@b...eu.org>
On Mon, 3 Aug 2009, Wojciech Jaczewski wrote:
>> Oracle SQL Developer chyba spelni wymaganie nietrywialnosci? pozatym w
>> miare szybki, no i sliczny:) (a przy tym darmowy)
>
> Trochę szkoda, że zarówno program wymieniony przez Ciebie, jak i program, o
> którym wspomniał Michał Kleczek, nie są dla mnie użyteczne - trudno mi więc
> porównać prędkość działania, z tym czego sam używam i jest napisane w C lub
> C++. Miałem nadzieję, że ktoś wskaże program typu czytnik grup dyskusyjnych
> czy przeglądarka PDF, albo jakaś (niekoniecznie w pełni funkcjonalna)
> przeglądarka internetowa, oparta o silnik napisany w Javie...
Oracle SQL Developer mozna porownac z napisanym w C++ PL/SQL Developerem
:)
Jesli chodzi o przegladarke to np. Lobo, w calosci javowa, szkoda, ze az
nadto spelnia wymaganie "niekoniecznie w pelni funkcjonalna", wlasciwie
nie da sie jej normalnie uzywac... ale IMHO jest szybka;)
Albo inny przyklad do porownania openproj i MS project.
Ja mysle, ze tych programow troche jest, mozna poszukac czegos z dopiskiem "pure
java"
-
30. Data: 2009-08-05 07:36:35
Temat: Re: Jak się nauczyć Javy?
Od: Paweł Kierski <n...@p...net>
mgk wrote:
>> Biblioteka komunikacyjna oparta o nieblokujące I/O. Dwa programy w C++
> ...
>> To, że pętla na integerach kręci się w Javie tak szybko jak w C++ nie
>> odzwierciedla złożoności realnych systemów i dlatego benchmarki
>> algorytmiczne niewiele wnoszą.
>
>
> No tak. Ale wtedy nie mierzysz predkosci z jaka sie wykonuje kod w
> danym jezyku, a predkosc karty sieciowej, IO, itp...
> Czyli nie otrzymasz jakos bardzo rozniacych sie wynikow.
> Przeciez program w Javie, czy C++ tyle samo czasu bedzie czekal na
> karte sieciowa. Wiec bezsensu.
O ile Maciej podał faktyczne wyniki, to znaczy, że program w Javie
jednak działał wolniej. Gdyby wąskim gardłem była tylko karta sieciowa,
to wyniki byłyby bardzo zbliżone. Kwestia, czy to bariera języka (np.
współpracy z I/O), czy po prostu źle napisany program pozostaje otwarta.
> Nie powinna to byc 1 petla, a wiekszy program w ktorym sa wszelkie
> jezykowe mechanizmy. Dlatego np fizyka odbijajacych sie pilek ktora ja
> kiedys zrobilem, albo generator ruchow w szachach sadze ze sa dobrymi
> testami (bynajmniej nie jest to zadna petla krecacych sie intow).
To nadal są głównie zabawy z CPU. Nie twierdzę, że taki benchmark jest
bez sensu, a tylko, że trzeba wiedzieć, co się porównuje.
--
Paweł Kierski
n...@p...net