Dlaczego ludzie mówią, że Ruby jest wolny? [Zamknięte]

184

Lubię Ruby on Rails i używam go do wszystkich moich projektów programistycznych. Kilka lat temu było dużo gadania o Szyny bycia wieprz i pamięć o tym, jak to nie skala bardzo dobrze, ale te sugestie zostały wprowadzone do łóżka przez Gregg Pollack tutaj .

Ostatnio słyszę, jak ludzie mówią, że sama Ruby jest powolna.

  • Dlaczego Ruby jest uważana za powolną?

Nie uważam, aby Ruby była powolna, ale z drugiej strony po prostu używam jej do tworzenia prostych aplikacji CRUD i blogów firmowych. Jakie projekty muszę wykonać, zanim uzmysłowię sobie, że Ruby robi się wolna? A może ta spowolnienie jest czymś, co wpływa na wszystkie języki programowania?

  • Jakie masz opcje jako programista Ruby, jeśli chcesz poradzić sobie z tą „powolnością”?

  • Która wersja Ruby najlepiej pasuje do aplikacji takich jak Przepełnienie stosu, w których prędkość jest krytyczna, a natężenie ruchu jest duże?

Pytania są subiektywne i zdaję sobie sprawę, że konfiguracja architektoniczna (EC2 vs. samodzielne serwery itp.) Robi dużą różnicę, ale chciałbym usłyszeć, co ludzie myślą o powolności Ruby.

Wreszcie, nie mogę znaleźć wielu wiadomości na temat Ruby 2.0 - Rozumiem, że od tego czasu dzieli nas już dobre kilka lat?

stephenmurdoch
źródło
1
możliwy duplikat Co powoduje, że Ruby jest wolna?
Nakilon
youtube.com/… Ruby2.1
Nithin
poza świetnymi odpowiedziami żadna z nich tak naprawdę NIE DLACZEGO. lepsze spostrzeżenia znajdują się w powiązanym pytaniu wspomnianym przez Nakilona
Andre Figueiredo

Odpowiedzi:

184

Dlaczego Ruby jest uważana za powolną?

Ponieważ jeśli uruchomisz typowe testy porównawcze między Ruby i innymi językami, Ruby przegrywa.

Nie uważam, aby Ruby była powolna, ale z drugiej strony po prostu używam jej do tworzenia prostych aplikacji CRUD i blogów firmowych. Jakie projekty muszę wykonać, zanim uzmysłowię sobie, że Ruby robi się wolna? A może ta spowolnienie jest czymś, co wpływa na wszystkie języki programowania?

Ruby prawdopodobnie nie posłużyłby ci dobrze w pisaniu aplikacji do cyfrowego przetwarzania sygnałów w czasie rzeczywistym lub jakiegokolwiek innego systemu kontroli w czasie rzeczywistym. Ruby (przy dzisiejszych maszynach wirtualnych) prawdopodobnie dusiłby się na komputerze o ograniczonych zasobach, takim jak smartfony.

Pamiętaj, że większość przetwarzania w twoich aplikacjach internetowych jest faktycznie wykonywana przez oprogramowanie opracowane w C. np. Apache, Thin, Nginx, SQLite, MySQL, PostgreSQL, wiele bibliotek parsujących, RMagick, TCP / IP itp. To programy C używane przez Ruby . Ruby zapewnia klej i logikę biznesową.

Jakie masz opcje jako programista Ruby, jeśli chcesz poradzić sobie z tą „powolnością”?

Przełącz na szybszy język. Ale to pociąga za sobą koszty. Jest to koszt, który może być tego wart. Jednak w przypadku większości aplikacji internetowych wybór języka nie ma znaczenia, ponieważ ruch jest zbyt mały, aby usprawnić użycie szybszego języka, którego opracowanie kosztuje znacznie więcej.

Która wersja Ruby najlepiej pasuje do aplikacji takich jak Przepełnienie stosu, w których prędkość jest krytyczna, a natężenie ruchu jest duże?

Inni ludzie odpowiedzieli na to pytanie - JRuby, IronRuby, REE sprawią, że Ruby będzie częścią twojej aplikacji działającą szybciej na platformach, na które stać Cię na maszyny wirtualne. A ponieważ często to nie Ruby powoduje spowolnienie, ale architektura systemu komputerowego i architektura aplikacji, możesz robić takie rzeczy, jak replikacja bazy danych, wiele serwerów aplikacji, równoważenie obciążenia z odwrotnymi serwerami proxy, buforowanie HTTP, memcache, Ajax, buforowanie po stronie klienta itp. , Żadna z tych rzeczy nie jest Ruby.

Wreszcie, nie mogę znaleźć wielu wiadomości na temat Ruby 2.0 - Rozumiem, że od tego czasu dzieli nas już dobre kilka lat?

Większość ludzi czeka na Ruby 1.9.1. Sam czekam na Rails 3.1 na Ruby 1.9.1 na JRuby.

Na koniec pamiętaj, że wielu programistów wybiera Ruby, ponieważ sprawia, że ​​programowanie jest przyjemniejsze w porównaniu z innymi językami, a także dlatego, że Ruby with Rails umożliwia wykwalifikowanym programistom bardzo szybkie tworzenie aplikacji.

Jay Godse
źródło
3
po wielu rozważaniach zdecydowałem, że to najlepsza odpowiedź. Dzięki, podoba mi się analogia dotycząca aplikacji do przetwarzania sygnałów. Po tych wszystkich pomocnych odpowiedziach łatwiej jest zobaczyć, o czym rozmawiają ludzie.
stephenmurdoch
1
Tak, byłeś kilka lat wcześniej od Ruby 2, Ruby 2.0.0 Wydany 24 lutego 2013
Morgan
3
Z mojego doświadczenia w korzystaniu z Ruby 2.1 wynika, że ​​jest on o około 25% szybszy niż ta sama aplikacja działająca w Ruby 2.0
Matt Connolly
14
Języki nie są wolne ani szybkie, ich implementacje, interpretatory i kompilatory to
:)
122

Przede wszystkim wolniej w stosunku do czego ? DO? Pyton? Zdobądźmy liczby w grze Computer Language Benchmarks :

Dlaczego Ruby jest uważana za powolną?

Zależy od kogo pytasz. Można powiedzieć, że:

  • Ruby jest językiem interpretowanym, a tłumaczone języki będą zwykle wolniejsze niż skompilowane
  • Ruby używa odśmiecania (chociaż C #, który również używa odśmiecania, wychodzi o dwa rzędy wielkości przed Ruby, Python, PHP itp. W bardziej algorytmicznych, mniejszych testach porównawczych wymagających dużej alokacji pamięci)
  • Wywołania metody Ruby są powolne (chociaż z powodu pisania kaczych są one prawdopodobnie szybsze niż w silnie interpretowanych językach interpretowanych)
  • Ruby (z wyjątkiem JRuby) nie obsługuje prawdziwej wielowątkowości
  • itp.

Ale z drugiej strony powolny w stosunku do czego? Ruby 1.9 jest mniej więcej tak szybki jak Python i PHP (z 3-krotnym współczynnikiem wydajności) w porównaniu do C (który może być nawet do 300x szybszy), więc powyższe (z wyjątkiem rozważań dotyczących wątków, jeśli twoja aplikacja mocno zależy od tego aspektu ) są w dużej mierze akademickie.

Jakie masz opcje jako programista Ruby, jeśli chcesz poradzić sobie z tą „powolnością”?

Pisz dla skalowalności i wrzucaj do niego więcej sprzętu (np. Pamięć)

Która wersja Ruby najlepiej pasuje do aplikacji takich jak Przepełnienie stosu, w których prędkość jest krytyczna, a natężenie ruchu jest duże?

Cóż, REE (w połączeniu z pasażerem ) byłby bardzo dobrym kandydatem.

vladr
źródło
1
Samo odśmiecanie niekoniecznie jest powolne, ale odśmiecanie MRI jest. Jeśli potrzebujesz szybszego Ruby, możesz także spojrzeć na JRuby oraz REE.
Andreas
1
@igouy, Prawda, połowa 2008 roku mogła być ekstremalna. Zaktualizowałem linki, ale one z kolei staną się nieaktualne za kilka miesięcy. :) Tak czy inaczej, sprzęt i niektóre poziomy łat mogły być różne i dodano kilka dodatkowych testów, ale większy obraz rzeczy się nie zmienił.
vladr
11
>> w tym samym rzędzie wielkości << Jest w tym samym rzędzie wielkości, jeśli żyjesz do 7 lub do 69. Czy ta różnica jest nieznaczna?
igouy
10
@igouy, nie wiem o tobie, ale nie jestem programem do mierzenia mojego życia pod względem szybkości wykonywania. Na przykład, zależy mi na szybkości wykonywania, to na przykład czas renderowania odpowiedzi HTTP. Wiem, że nie zauważę różnicy między czasem renderowania 7 ms a 69 ms (szczególnie podczas jazdy z opóźnieniem sieci powyżej 130 ms). Wiem, że zauważę różnicę między 7 ms a 700 ms, i Z pewnością zauważę różnicę między 7 ms a 7 ms - ale nie, nie między 7 ms a 69 ms.
vladr
3
@vladr, a co z 70ms lub 700ms? Czy widzisz tę różnicę?
Paul Draper,
60

Oto, co powiedział twórca Railsów, David Heinemeier Hansson :

Rails [Ruby] jest przeznaczony dla większości aplikacji internetowych Fast Enough. Witryny wykonują miliony dynamicznych wyświetleń strony dziennie. Jeśli skończysz na stronie głównej Yahoo lub Amazon, jest mało prawdopodobne, że gotowe ramy w ŻADNYM języku przyniosą ci wiele dobrego. Prawdopodobnie będziesz musiał rzucić własny. Ale jasne, wolę też wolne cykle procesora. Zdarza mi się bardziej dbać o bezpłatne cykle programistyczne i jestem gotów wymienić te pierwsze na drugie.

tj. rzucanie większej ilości sprzętu lub maszyn w problem jest tańsze niż zatrudnianie większej liczby programistów i używanie szybszego, ale trudniejszego w utrzymaniu języka. W końcu niewiele osób pisze aplikacje internetowe w C.

Ruby 1.9 to znaczna poprawa w stosunku do 1.8. Największe problemy z Ruby 1.8 to jego interpretowana natura (brak kodu bajtowego, brak kompilacji), a wywołania metod, jedna z najczęstszych operacji w Ruby, są szczególnie wolne.

Nie pomaga, że ​​prawie wszystko jest wyszukiwaniem metod w Ruby - dodawanie dwóch liczb, indeksowanie tablicy. Tam, gdzie inne języki ujawniają włamania ( __add__metoda Pythona , przeciążenie Perla.pm) Ruby robi czyste OO we wszystkich przypadkach, a to może zaszkodzić wydajności, jeśli kompilator / interpreter nie jest wystarczająco sprytny.

Gdybym pisał popularną aplikację internetową w Ruby, skupiłbym się na buforowaniu. Buforowanie strony skraca czas przetwarzania tej strony do zera, niezależnie od używanego języka. W przypadku aplikacji internetowych narzut bazy danych i inne operacje we / wy zaczynają mieć znacznie większe znaczenie niż szybkość języka, więc skupiłbym się na ich optymalizacji.

rjh
źródło
7
„W końcu niewiele osób pisze aplikacje internetowe w C.” - Oczywiście, że nie, ale wiele witryn o kluczowym znaczeniu dla wydajności przeniosło się np. Do Scali.
Dario
6
Nie zgadzam się z tym, że „rzucanie w to więcej sprzętem” jest tańsze. Trudno jest przekonać klientów, że powinni płacić więcej za hosting co X miesięcy, ponieważ ich platforma została zaprojektowana z myślą o programistach.
Kevin
9
@Keven: na pewno koszty rozwoju zostałyby zmniejszone? W przeciwnym razie jaki byłby sens używania Ruby?
rjh
4
@Kevin To stwierdzenie jest nieco szerokie. Jeśli będziesz musiał skonfigurować nowy serwer dla każdego około 10% wzrostu ruchu przy około 100 wizytach dziennie, klient miałby oczywiście prawo do złożenia skargi. Jednak realistycznie rzecz biorąc, zazwyczaj trzeba mieć dużo większy ruch na początku i zwiększać go o rząd wielkości, zanim stary sprzęt nie będzie już w stanie sobie z tym poradzić. W tym momencie temat przechodzi w obszar „dobrego problemu z posiadaniem” i prawie nikt nie narzekałby na aktualizację sprzętu. Ponadto żaden „klient” nie prowadzi witryny o tak dużym ruchu bez wiedzy o tego typu rzeczach.
deceze
5
@Kevin - odwróćmy to. „Trudno jest przekonać klientów, że powinni poczekać 3 miesiące na nową funkcję, ponieważ ich platforma została zaprojektowana z myślą o komputerach”. Jeśli ta nowa funkcja drastycznie zwiększy przychody, zapłaci za dodatkowy sprzęt. Poza tym wybranie szybkiego języka od samego początku jest dla wielu aplikacji przedwczesną optymalizacją. Możliwe, że twoje wąskie gardło znajdzie się gdzie indziej: odczyty bazy danych, opóźnienie sieci itp.
Nathan Long
34

Pisanie kodu jest wolne. Czytanie kodu jest wolne. Znajdowanie i naprawianie błędów jest powolne. Dodawanie funkcji i ulepszeń jest powolne. Wszystko, co poprawi poprzednie, to wygrana. Bardzo rzadko występowanie stanowi problem.

Prezydent James K. Polk
źródło
30
@GregS: wydajność wykonania zawsze stanowi problem, jeśli wpływa na użyteczność. To prawda, że ​​skanowanie pliku xml w poszukiwaniu ciągu w ciągu jednej sekundy lub trzech nie ma znaczenia z punktu widzenia liczb, ale kilka sekund różnicy może mieć duże znaczenie w użyteczności, gdy mówimy o aplikacji skierowanej do użytkownika.
Bryan Oakley
5
@Ajax: Nie, założę się, że to twoja zwycięska osobowość.
Prezydent James K. Polk
15
Mój dotychczasowy rekord to oszczędność firmy w wysokości 30 000 USD rocznie w ciągu jednego dnia pracy. Ich inżynierowie zdecydowali, że bardziej czytelne jest, aby algorytm obliczania w chmurze zliczał liczbę zadań wykonanych podczas każdej iteracji, powodując n! zapytania dotyczące zadań o ponad 20 000 jednostek pracy. Zmieniając to, aby sprawdzić, czy 1 element pracy został pozostawiony, umieścił go w n zapytaniach i obniżył rachunek ze 130 USD / dzień do 20 USD / dzień. Leniwi koderzy zarabiają mi pieniądze. Zachęcaj bardziej leniwych programistów.
Ajax
10
Zabawne, że skomentowałeś właśnie teraz ... Przeniosłem się do innej firmy, w której musieliśmy ściągnąć piętnastu programistów z funkcji i zwiększyć wydajność, ponieważ duży amerykański bank odmawia podpisania umowy o wartości wielu milionów dolarów, dopóki system nie poradzą sobie z obciążeniem. Lubią funkcje, które mamy, ale nie szybkość, z jaką działają. Jeśli wystarczająco długo ignorujesz wydajność, nie ma znaczenia, jakie funkcje masz, ponieważ będą one wyjątkowo wolne .
Ajax,
4
Wydajność wykonania jest zawsze problemem, tylko o tym, o czym mówimy. Ile zinterpretowanego kodu możesz uruchomić na telefonie komórkowym, zanim użytkownicy przestaną kupować Twoją aplikację, ponieważ powoduje to zużycie baterii? Jak długo użytkownik będzie czekać na załadowanie strony, zanim zamknie reklamę, pozbawiając Cię przychodów z reklam? Odpowiedz na tego rodzaju pytania, a będziesz wiedzieć, jak ważna jest wydajność wykonania.
Sqeaky
15

Odpowiedź jest prosta: ludzie mówią, że ruby ​​jest wolny, ponieważ jest wolny na podstawie zmierzonych porównań z innymi językami. Pamiętaj jednak, że „wolne” jest względne. Często ruby ​​i inne „wolne” języki są wystarczająco szybkie.

Bryan Oakley
źródło
tak, właśnie o tym myślałem, ludzie mówią, że jest powolny, ale wciąż jest cholernie szybki jak na moje wymagania ...
stephenmurdoch
11
>> nadal jest cholernie szybki jak na moje wymagania << Jest wystarczająco szybki dla wszystkiego, co nie musi być szybkie :-)
igouy
jestem częściowo stronniczy w tej kwestii, może cox jest to przestarzały komentarz. teraz mamy Ruby 2.3, a z doświadczenia Ruby 2.2 wynika, że ​​stos szyn jest ciężki. jeśli potrzebują szybszego frameworka, spróbuj pidrano, opartego na sinatrze, i starali się zrobić jak najbliżej szyny, ale znacznie lżejszy. ale jeszcze nie dotarli do wersji 1.0, jeszcze więcej, ale z mojego testu, działa ładnie i szybko. Pracowałem z aktywnymi płytami Record 5 i pidrano, zapożyczonymi z szyn. Przy 200 jednoczesnych połączeniach otrzymuję odpowiedź 1,5 s bez zapytania o bazę danych, z zasobami z kół łańcuchowych
James Tan
5

Joel on Software - Ruby Performance Revisited całkiem dobrze to wyjaśnia. Może to być przestarzałe ...

Polecam trzymać się go, ponieważ przyzwyczaiłeś się do Ruby on Rails,
jeśli kiedykolwiek napotkasz problem z wydajnością, możesz rozważyć użycie innego języka i frameworka.

W takim przypadku naprawdę polecam C # z ASP.NET MVC 2 , działa bardzo dobrze dla aplikacji CRUD.

Tamara Wijsman
źródło
Dzięki za link, zawsze lubię czytać opinie Joela na różne tematy. Ciekawa uwaga na temat hasła „naklejka na zderzak” DHH ...
stephenmurdoch
Cytat: „ Nie dotyczy to wszystkich, ale kiedy ludzie mówią, że mają problemy z wydajnością w Ruby lub że muszą po prostu być w stanie uruchomić kod szybciej niż rdzeń silnika języka Ruby może to uruchomić, to nie pomaga mieć Ruby opowiada się za śpiewaniem hymnów na temat cykli programistów a cykli procesorów. ”Dobrze powiedziane.
Marc.2377,
3

Powiedziałbym, że Ruby jest powolna, ponieważ nie włożono wiele wysiłku w przyspieszenie tłumacza. To samo dotyczy Pythona. Smalltalk jest tak samo dynamiczny jak Ruby lub Python, ale działa lepiej o wielkość, patrz http://benchmarksgame.alioth.debian.org . Ponieważ Smalltalk został mniej więcej zastąpiony przez Javę i C # (czyli co najmniej 10 lat temu), nie wykonano już żadnych prac związanych z optymalizacją wydajności, a Smalltalk jest wciąż znacznie szybszy niż Ruby i Python. Pracownicy Xerox Parc i OTI / IBM mieli pieniądze, by zapłacić ludziom, którzy pracują nad przyspieszeniem Smalltalk. Nie rozumiem, dlaczego Google nie wydaje pieniędzy na przyspieszenie Pythona, ponieważ są dużym sklepem Python. Zamiast tego wydają pieniądze na rozwój języków takich jak Go ...

OlliP
źródło
Myślę, że dzieje się tak, ponieważ Python ma już swoje miejsce i jest obecnie intensywnie używany. Jeśli potrzebujesz wysokiej wydajności, istnieje wiele bibliotek, z których możesz korzystać lub tkać oraz inne rzeczy, których możesz używać.
Zelphir Kaltstahl
Z tego, co przeczytałem, pewien wysiłek przyniósł już dobre wyniki w Ruby 2.5.
Marc.2377,
2

Przede wszystkim, czy zależy Ci na tym, co inni mówią o języku, który lubisz? Kiedy wykonuje pracę, którą musi wykonać, nic ci nie jest.

OO nie jest najszybszym sposobem na wykonanie kodu, ale pomaga w jego tworzeniu. Inteligentny kod jest zawsze szybszy niż głupi kod i bezużyteczne pętle. Jestem DBA i widzę wiele tych bezużytecznych pętli, upuszczam je, używam lepszego kodu i zapytań, a aplikacja jest szybsza, znacznie szybsza. Czy zależy Ci na ostatniej mikrosekundie? Możesz mieć języki zoptymalizowane pod kątem szybkości, inni po prostu wykonują pracę, którą muszą wykonać i mogą być utrzymywani przez wielu różnych programistów.

To tylko wybór.

Frank Heikens
źródło
2

Oczywiście, mówiąc o szybkości, Ruby traci. Mimo że testy porównawcze sugerują, że Ruby nie jest dużo wolniejszy niż PHP. Ale w zamian otrzymujesz łatwy w utrzymaniu kod DRY, najlepszy ze wszystkich frameworków w różnych językach.

W przypadku małego projektu nie odczuwasz żadnej spowolnienia (mam na myśli, aż do mniej niż 50 000 użytkowników), biorąc pod uwagę, że w kodzie nie są stosowane żadne skomplikowane obliczenia, a jedynie główne nurty.

W przypadku większego projektu płacenie za zasoby się opłaca i jest tańsze niż wynagrodzenie programistów. Ponadto pisanie kodu na RoR okazuje się znacznie szybsze niż jakikolwiek inny.

W 2014 r. Ta różnica prędkości, o której mówisz, jest niewielka dla większości witryn.

Rápli András
źródło
2

Sposób radzenia sobie z wydajnością Ruby w aplikacji internetowej jest taki sam, jak w każdym innym języku programowania:

ARCHITEKTURA

Jest to łatwiejsze w Railsach niż w większości innych frameworków WWW.

Na poziomie aplikacji , buforując wszystko, co ma być buforowane, i zarządzając dostępem do bazy danych w inteligentny sposób (ponieważ wąskie gardło jest zwykle dostępne dla „aplikacji DB” dla większości aplikacji WEB).

Dzięki szynom rozwiązanie tych problemów jest bardzo proste i naturalne. Istnieje kilka abstrakcji do buforowania danych, stron i fragmentów , a także bardzo ładne abstrakty do radzenia sobie z częścią SQL w sposób zoptymalizowany i wielokrotnego użytku ( Active Record i AREL ).

To jest powód, dla którego tak wiele aplikacji napisanych w szybszych i mało wyrazistych językach (takich jak php) kończy się wolniej niż odpowiedniki Rubiego. Rozwiązywanie problemów z buforowaniem i zapytaniami w tych językach nie jest tak łatwe i eleganckie, jak w Ruby.

Na poziomie infrastruktury rozsądne jest myślenie o równoważeniu obciążenia i wszystkich innych rzeczach, o których nie wiem zbyt wiele. Zleciłbym ten problem outsourcingowi, wynajmując platformę jako usługodawca, np. Heroku lub Engine Yard . Tak czy siak. Wdrażanie szyn z równoważeniem obciążenia prawdopodobnie nie jest bardzo trudne.

Pedro Morte Rolo
źródło
1

Ruby działa wolniej niż C ++ przy wielu łatwo mierzalnych zadaniach (np. Robi kod, który jest silnie zależny od zmiennoprzecinkowego). Nie jest to zaskakujące, ale wystarczające uzasadnienie dla niektórych osób, by powiedzieć, że „Ruby jest wolny” bez kwalifikacji. Nie liczą faktu, że pisanie kodu Ruby jest znacznie łatwiejsze i bezpieczniejsze niż C ++.

Najlepszym rozwiązaniem jest użycie ukierunkowanych modułów napisanych w innym języku (np. C, C ++, Fortran) w kodzie Ruby. Mogą one wykonywać ciężkie podnoszenie, a twoje skrypty mogą koncentrować się na kwestiach związanych z koordynacją na wyższym poziomie.

Donal Fellows
źródło
Porównania są często wykonywane przy użyciu Java, C #, Python, może Perl zamiast C ++.
rjh
5
Oczywiście. Ale zapewniam cię (jako programistę Tcl), że ludzie zawsze będą porównywać cię z innymi językami. Rozwiązaniem jest użycie tych innych języków dla zszywanych elementów; robienie tego wszystkiego w jednym języku przypomina trochę korzystanie z jednego narzędzia do wszystkich zadań. Jeśli masz tylko młotek, wszystko wygląda jak kciuk.
Donal Fellows
fajny pomysł na użycie modułów języków obcych, gdy są potrzebne
stephenmurdoch
>> powiedzieć, że „Ruby jest wolny” bez kwalifikacji << Kilka lat temu mogliby pokazać programy Ruby, które były wolniejsze niż programy Tcl :-)
igouy
1
Wiesz, co mówią o kłamstwach, przeklętych kłamstwach i testach. ;-)
Donal Fellows
0

Wydajność prawie zawsze polega na dobrym projekcie i zoptymalizowanych interakcjach z bazą danych. Ruby robi to, czego większość stron internetowych potrzebuje dość szybko, zwłaszcza nowsze wersje; a szybkość opracowywania i łatwość konserwacji zapewnia dużą opłacalność kosztów i zapewnia zadowolenie klientów. Uważam, że JAVA ma powolną wydajność wykonywania niektórych zadań, a biorąc pod uwagę trudność programowania w JAVA, wielu programistów tworzy powolne aplikacje niezależnie od teoretycznej wydajności, jak pokazano w testach porównawczych (testy porównawcze są na ogół opracowywane w celu pokazania konkretnej i wąskiej możliwości). Kiedy potrzebuję intensywnego przetwarzania, które nie jest dobrze dostosowane do możliwości mojej bazy danych, wybieram C lub Objective-C lub inny naprawdę skompilowany język do tych zadań w zależności od platformy. Jeśli muszę utworzyć aplikację internetową z bazą danych, Używam RoR lub czasami C # ASP.NET w zależności od innych wymagań; ponieważ wszystkie platformy mają mocne i słabe strony. Szybkość wykonywania czynności wykonywanych przez aplikację jest ważna, ale w końcu liczy się tylko wydajność wykonywania jednego wąskiego aspektu języka; wtedy mógłbym nadal używać języka asemblera do wszystkiego.

Richard
źródło
-5

Ruby osiąga dobre wyniki w zakresie produktywności programistów. Ruby z natury wymusza rozwój oparty na testach z powodu braku typów. Ruby działa dobrze, gdy jest używany jako opakowanie wysokiego poziomu dla bibliotek C. Ruby działa również dobrze podczas długotrwałych procesów, gdy jest kompilowany w JIT do kodu maszynowego za pośrednictwem JVM lub Rbx VM. Ruby nie radzi sobie dobrze, gdy wymagane jest rozbicie liczb w krótkim czasie za pomocą czystego kodu ruby.

nurettin
źródło