kfgz Opublikowano 1 Maja 2007 Zgłoś Opublikowano 1 Maja 2007 (edytowane) Witam, Dużo osób twierdzi, że aplikacje pisane w Javie działają wolno. Pewnie mają rację ale czy zawsze? Postanowiłem to sprawdzić doświadczalnie porównując dwie identyczne aplikacje do znajdowania liczb pierwszych. Jedną napisałem w C, a drugą w Javie. Oczywiście test nie jest do końca miarodajny ze względu na prostotę użytego kodu :/ Java: public class prime { static int Liczba, Licznik = 1, d = 3, g = 20000000, Krok = 2, Dzielnik; public static void main(String[] args) { for (Liczba = d; Liczba <= g; Liczba += Krok) { Dzielnik = 3; while ((Dzielnik * Dzielnik <= Liczba) & (Liczba % Dzielnik > 0)) Dzielnik += Krok; if (Dzielnik * Dzielnik > Liczba) Licznik++; } } } C: int main() { unsigned int Liczba, Licznik = 1, d = 3, g = 20000000, Krok = 2, Dzielnik; for (Liczba = d; Liczba <= g; Liczba += Krok) { Dzielnik = 3; while (Dzielnik * Dzielnik <= Liczba && Liczba % Dzielnik) Dzielnik += Krok; if (Dzielnik * Dzielnik > Liczba) Licznik++; } return 0; } Czasy wykonywania aplikacji na AXP1700+ (win xp + sp2): C - 87 sekund Java (vm) - 90 sekund Java (gcj - exec) - 105 sekund Trochę się zdziwiłem, że aplikacja w wirtualnej maszynie wykonywana jest szybciej od aplikacji skompilowanej do kodu maszynowego (gcj). Po cichu liczyłem, że będzie odwrotnie, a tu zonk. Kod w C kompilowałem w GCC 3.4.2. bez żadnych optymalizacji. EDIT: Kod w javie kompilowałem w jdk 1.5.0 update 9, a uruchamiałem na 1.6.0. Edytowane 1 Maja 2007 przez Dj_AnT Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 1 Maja 2007 Zgłoś Opublikowano 1 Maja 2007 A teraz wyobraźcie sobie taki program P2P, który tworzy jednoczesnie kilka/kilkanaście/kilkadziesiąt połączeć TCP/IP i jednocześnie wysyła i odbiera różne fragmenty pliku mającego nawet 4GB i więcej. Czy nadal chcecie pisać programy w Javie? ;) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 1 Maja 2007 Zgłoś Opublikowano 1 Maja 2007 (edytowane) przedstawiłeś algorytm, który jest krótki i ciągle powtarza jeden kawałek kodu... Porównaj sobie lepiej środowisko graficzne napisane w Javuni z takim napisanym w C/C++... Programy napisane w javie od razu poznać po tym, że dziewnie się odrysowują okienka na ekranie :).. dziwnie powoli... Edytowane 1 Maja 2007 przez PelzaK Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 1 Maja 2007 Zgłoś Opublikowano 1 Maja 2007 Widać jak bebechy wyłażą podczas 1 uruchomienia [: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Megabyte Opublikowano 1 Maja 2007 Zgłoś Opublikowano 1 Maja 2007 Trochę się zdziwiłem, że aplikacja w wirtualnej maszynie wykonywana jest szybciej od aplikacji skompilowanej do kodu maszynowego (gcj). Po cichu liczyłem, że będzie odwrotnie, a tu zonk. Kod w C kompilowałem w GCC 3.4.2. bez żadnych optymalizacji.EDIT: Kod w javie kompilowałem w jdk 1.5.0 update 9, a uruchamiałem na 1.6.0. Testowanie kodu bez optymalizacji nie ma wielkiego sensu, liczy się szybkość gotowego programu, który jest kompilowany z optymalizacjami. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
thuGG Opublikowano 1 Maja 2007 Zgłoś Opublikowano 1 Maja 2007 (edytowane) Ale panowie, nie ma sie co sprzeczac o to, wiadomo Java jest wolniejsza nic C/C++. @PelzaK Mi tam bardzo przyjemnie pisze sie w NetBeans i Eclipse, fakt sa wolniejsze niz srodowiska napisane w C++, ale nie tak, zeby psuc przyjemnosc z korzystania z nich (a sa bardzo przyjemne). @ULISSES Prosze nie powtarzaj tu stereotypu, ze Java do niczego sie nie nadaje i jest o kand d..y potłuc, tylko dlatego, ze jest wolniejsza od C, siła Javy to przede wszystkim Java EE czyli to co stoi po stronie serwera. Cale Java EE ma ogromne uznanie na swiecie i pisze sie w tym bardzo powazne i rozbudowane systemy enterprise. EDIT: Poprawiony nick, sorry. Edytowane 2 Maja 2007 przez thuGG Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
kfgz Opublikowano 1 Maja 2007 Zgłoś Opublikowano 1 Maja 2007 (edytowane) Testowanie kodu bez optymalizacji nie ma wielkiego sensu, liczy się szybkość gotowego programu, który jest kompilowany z optymalizacjami.Po dodaniu optymalizacji w gcc (-O3), czas wykonywania kodu skrócił się do 70 sekund. Edytowane 1 Maja 2007 przez Dj_AnT Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Yacho Opublikowano 1 Maja 2007 Zgłoś Opublikowano 1 Maja 2007 (edytowane) przedstawiłeś algorytm, który jest krótki i ciągle powtarza jeden kawałek kodu... Porównaj sobie lepiej środowisko graficzne napisane w Javuni z takim napisanym w C/C++... Programy napisane w javie od razu poznać po tym, że dziewnie się odrysowują okienka na ekranie :).. dziwnie powoli... nie baredzo jest co porownywac gdyz C nie oferuje tak dobrej biblioteki gui jak Swing - porownywanie tez nie ma sensu gdyz wlasnie wieloplatformowosc ma tu duze zanczenie - to jakby porownywac ciezarowke z dragsterem bo i to i to samochod... Porownywanie na prostych algorytmach ma ten plus ze tu wieloplatformowosc javy gra o wiele mniejsza role... EDIT : tak dobrze napisalem :P Java ma o wiele lepsze narzedzia do tworzenia GUI niz C :P Edytowane 1 Maja 2007 przez Yacho Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 1 Maja 2007 Zgłoś Opublikowano 1 Maja 2007 @PelZaKgrrrrr Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
argaven Opublikowano 2 Maja 2007 Zgłoś Opublikowano 2 Maja 2007 Java była pisana z myślą o środowisku uruchomieni owym, czyli w jej przypadku wirtualnej maszynie Javy. Nie ma najmniejszych szans, żeby była szybsza od jakiegokolwiek języka kompilowanego. Natomiast pozostaje pytanie o ile jest wolniejsza np. od C/C++, czy przy normalny użytkowaniu oprogramowania jest to uciążliwa różnica? Nie mówię tutaj o aplikacjach przetwarzających jakieś skomplikowane algorytmy obliczeniowe, a o różnego rodzaju programach wykorzystujących Swing. Moim zdaniem różnica nie jest dla większości użytkowników posiadających przeciętnie wydajne komputery zauważalna, a niektóre aplikacje napisane w Javie są po prostu ładne, wygodne i można je uruchomić zarówno pod Windowsem jak i Linuxem, co dla niektórych jest zdecydowanym plusem. Poza tym jest po prostu potężnym językiem, posiadającym standardowo sporo gotowych bibliotek, a pracuje się z nim bardzo przyjemnie. Ja osobiście korzystam z NetBeans pod Linuxem i na prawdę nie narzekam na jego wydajność, a jest to moje ulubione IDE do programowania. Dzięki Javie można pisać potężne oprogramowanie integrujące zarówno aplikacje przetwarzane po stronie serwera jaki i te uruchamiane po stronie klienta itd. Dużo można by się tutaj rozwodzić. Moim zdaniem porównywanie Javy z C, a przede wszystkim z C++ nie ma sensu. Wiadomo nikt nie będzie pisał oprogramowania np. na potrzeby automatyki w Javie, ale może spokojnie, szybko napisać jakaś aplikację z rozbudowanym GUI. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 2 Maja 2007 Zgłoś Opublikowano 2 Maja 2007 Netbeans pod linuxem działa szybciej niż pod winshitem albo mi się zdaje. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Haquim Opublikowano 3 Maja 2007 Zgłoś Opublikowano 3 Maja 2007 Wiadomo nikt nie będzie pisał oprogramowania np. na potrzeby automatyki w Javie, ale może spokojnie, szybko napisać jakaś aplikację z rozbudowanym GUI.SAP twierdzi inaczej SAP dla przemysłu Javy zgodnie z instrukcją suna nie należy używać do : oprogramowania elektrowni atomowych i systemów czasu rzeczywistego . Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...