Aplikacja internetowa vs zwykła - wydajność

0

Załóżmy, że chcę napisać program cechujący się złożonościa operacji matematycznych. Do takich zadań należą między innymi łamanie szyfrów, emulacja komputerów i skomplikowanych urządzeń elektronicznych, skomplikowane przetwarzanie audio i video.

Popularnym testem wydajności w systemie Windows jest uruchomienie kalkulatora i obliczanie silni z dużej liczby i mierzenie czasu wykonywania ten operacji.

Duże aplikacje (jak np. wyszukiwarka Google) działają na naprawde porządnych komputerach kosztujących majątek. Dowodem na to jest fakt, że przeszukanie i przejrzenie miliardów plików trwa zaledwie ułamek sekundy, na zwykłym kompie z najlepszymi nośnikami SSD będącymi macierzami RAID-0 trwałoby to znacznie, ale to znacznie dłużej.

A więc jak napiszę program w C# lub w Javie, taki test, że jest przycisk "Start" i jak się to kliknie, to program wykonuje różne operacje matematyczne i na plikach, które trwają powiedzmy 2 godziny i wyświetla dokładny czas wykonywania operacji.

A jakbym identyczny program napisał w PHP, ASP, ASP.NET, CGI lub w jeszcze innej technologii, ale z zakresu tylko takich, które polegają na wykonywaniu programu na serwerze i przeprowadził test, to jaki byłby wynik? Czy podobny, czy znacznie różniący sie i na korzyść której wersji programu-testera?

Dużo ambitniejszą wersją testu byłoby opracowanie emulatora lub wykorzystanie gotowego emulatora. Istotne jest to, żeby emulator działał tak, że procesor ma być jak najszybszy. Z tego względu do tego nie nadają się emulatory Atari i Commodore (te maszyny miały konkretny procesor i emulator musi trzymać się tej szybkości), a emulatory PC i Mac nadawałyby się doskonale.

Dwoma z takich emulatorów PC są Bochs i QEmu. Oba są wieloplatformowe i z otwartym kodem źródłowym. Nie ulega wątpliwości, że taki emulator dziala wielokrotnie wolniej, niz prawdziwy komputer, a z drugiej strony, tego typu emulatory nie stosują sztywno okreslonej prędkości procesora. Gdyby napisać identyczny emulator (jedyna różnica, to użyty język, sama budowa programu, klasy, metody, zmienne, stałe byłyby identyczne) w PHP lub ASP.NET, uruchomić go na wynajmowanym serwerze oferowanym, jako super szybki i wydajny (najlepiej serwer tej klasy, jaki mają największe portale internetowe, a Google, to już byłoby najlepiej) i porównać wydajność pierwowzoru i odpowiednika internetowego, to czy różnica byłaby znaczna? Na korzyść której wersji programu?

0

A za komputer lokalny do odpalania wersji zwykłej w celu pomiarach wydajności, byłby komputer PC z procesorem 4-rdzeniowym 3GHz i 2GB RAM.

0

Zauważ, że PC masz zazwyczaj tylko dla siebie, podczas gdy aplikacje www obsługują wielu klientów jednocześnie.

Google działa szybko nie dlatego, że przeszukuje te pliki na potężnym sprzęcie* w momencie wyszukiwania, tylko indeksuje sobie w tle, na farmie i potem przeszukuje tylko te spreparowane indeksy - które są odpowiednio zoptymalizowane.
*) Nie jednym, a setkach komputerów o porównywalnej mocy obliczeniowej do PC. Cała zaleta w równoległym obrabianiu danych. Ilość rdzeni nie ma najmniejszego znaczenia, dopóki nie zrównoleglisz tych obliczeń.

0

Aplikacja internetowa jest tylko tyle wolniejsza niż zwykła, ile potrzeba czasu na transmisję danych przez internet. Nie biorę pod uwagę tutaj aplikacji w php bo to jest język interpretowany i one wykonują się kilkanaście razy wolniej niż kompilowane.

// janusz paweł drugi == Mariusz Jędrzejowski - deus

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