Warum sagen die Leute, dass Ruby langsam ist? [geschlossen]

184

Ich mag Ruby on Rails und verwende es für alle meine Webentwicklungsprojekte. Vor ein paar Jahren wurde viel darüber gesprochen, dass Rails ein Erinnerungsfresser ist und dass es nicht sehr gut skaliert, aber diese Vorschläge wurden von Gregg Pollack hier ins Bett gebracht .

In letzter Zeit habe ich Leute sagen hören, dass Ruby selbst langsam ist.

  • Warum wird Ruby als langsam angesehen?

Ich finde Ruby nicht langsam, aber ich verwende es nur, um einfache CRUD-Apps und Unternehmensblogs zu erstellen. Welche Art von Projekten müsste ich machen, bevor Ruby langsam wird? Oder betrifft diese Langsamkeit nur alle Programmiersprachen?

  • Welche Möglichkeiten haben Sie als Ruby-Programmierer, wenn Sie mit dieser "Langsamkeit" umgehen möchten?

  • Welche Version von Ruby eignet sich am besten für eine Anwendung wie Stack Overflow, bei der die Geschwindigkeit kritisch und der Datenverkehr intensiv ist?

Die Fragen sind subjektiv und mir ist klar, dass die Einrichtung der Architektur (EC2 gegenüber eigenständigen Servern usw.) einen großen Unterschied macht, aber ich würde gerne hören, was die Leute über Ruby denken, der langsam ist.

Schließlich kann ich nicht viele Neuigkeiten zu Ruby 2.0 finden - ich nehme an, wir sind dann ein paar Jahre davon entfernt?

stephenmurdoch
quelle
1
mögliches Duplikat von Was macht Ruby langsam?
Nakilon
youtube.com/… Ruby2.1
Nithin
Abgesehen von großartigen Antworten antwortet keiner von ihnen wirklich WARUM. Bessere Einsichten sind in verwandten Fragen von Nakilon
Andre Figueiredo

Antworten:

184

Warum wird Ruby als langsam angesehen?

Denn wenn Sie typische Benchmarks zwischen Ruby und anderen Sprachen ausführen, verliert Ruby.

Ich finde Ruby nicht langsam, aber ich verwende es nur, um einfache CRUD-Apps und Unternehmensblogs zu erstellen. Welche Art von Projekten müsste ich machen, bevor Ruby langsam wird? Oder betrifft diese Langsamkeit nur alle Programmiersprachen?

Ruby würde Ihnen wahrscheinlich beim Schreiben einer digitalen Echtzeit-Signalverarbeitungsanwendung oder eines Echtzeit-Steuerungssystems nicht gut dienen. Ruby (mit heutigen VMs) würde wahrscheinlich an einem Computer mit eingeschränkten Ressourcen wie Smartphones ersticken.

Denken Sie daran, dass ein Großteil der Verarbeitung in Ihren Webanwendungen tatsächlich von in C entwickelter Software ausgeführt wird, z. B. Apache, Thin, Nginx, SQLite, MySQL, PostgreSQL, viele Parsing-Bibliotheken, RMagick, TCP / IP usw. sind C-Programme, die von Ruby verwendet werden . Ruby liefert den Kleber und die Geschäftslogik.

Welche Möglichkeiten haben Sie als Ruby-Programmierer, wenn Sie mit dieser "Langsamkeit" umgehen möchten?

Wechseln Sie zu einer schnelleren Sprache. Das ist aber mit Kosten verbunden. Es sind Kosten, die sich lohnen können. Für die meisten Webanwendungen ist die Wahl der Sprache jedoch kein relevanter Faktor, da nicht genügend Datenverkehr vorhanden ist, um die Verwendung einer schnelleren Sprache zu rechtfertigen, deren Entwicklung viel mehr kostet.

Welche Version von Ruby eignet sich am besten für eine Anwendung wie Stack Overflow, bei der die Geschwindigkeit kritisch und der Datenverkehr intensiv ist?

Andere Leute haben darauf geantwortet - JRuby, IronRuby, REE sorgen dafür, dass der Ruby-Teil Ihrer Anwendung auf Plattformen, die sich die VMs leisten können, schneller ausgeführt wird. Und da es oft nicht Ruby ist, das Langsamkeit verursacht, sondern Ihre Computersystemarchitektur und Anwendungsarchitektur, können Sie Dinge wie Datenbankreplikation, mehrere Anwendungsserver, Lastausgleich mit Reverse-Proxys, HTTP-Caching, Memcache, Ajax, clientseitiges Caching usw. Ausführen Nichts davon ist Ruby.

Schließlich kann ich nicht viele Neuigkeiten zu Ruby 2.0 finden - ich nehme an, wir sind dann ein paar Jahre davon entfernt?

Die meisten Leute warten auf Ruby 1.9.1. Ich selbst warte auf Rails 3.1 auf Ruby 1.9.1 auf JRuby.

Denken Sie zum Schluss daran, dass sich viele Entwickler für Ruby entscheiden, da dies das Programmieren im Vergleich zu anderen Sprachen angenehmer macht und Ruby with Rails es erfahrenen Webentwicklern ermöglicht, Anwendungen sehr schnell zu entwickeln.

Jay Godse
quelle
3
Nach langem Überlegen habe ich entschieden, dass dies die beste Antwort ist. Danke, ich mag die Analogie zur Signalverarbeitungs-App. Nach all diesen hilfreichen Antworten ist es einfacher zu sehen, worüber die Leute jetzt sprechen.
Stephenmurdoch
1
Ja, Sie waren ein paar Jahre von Ruby 2, Ruby 2.0.0 entfernt. Veröffentlicht am 24. Februar 2013
Morgan
3
Meine Erfahrung mit Ruby 2.1 ist, dass es ungefähr 25% schneller ist als dieselbe App, die in Ruby 2.0 ausgeführt wird
Matt Connolly
14
Sprachen sind nicht langsam oder schnell, ihre Implementierungen, Interpreter und Compiler sind
:)
122

Zuallererst langsamer in Bezug auf was ? C? Python? Lassen Sie uns beim Computer Language Benchmarks Game einige Zahlen ermitteln :

Warum wird Ruby als langsam angesehen?

Kommt darauf an, wen du fragst. Man könnte sagen, dass:

  • Ruby ist eine interpretierte Sprache und interpretierte Sprachen sind in der Regel langsamer als kompilierte
  • Ruby verwendet die Garbage Collection (obwohl C #, das auch die Garbage Collection verwendet, in den oben beschriebenen algorithmischeren, weniger speicherzuweisungsintensiven Benchmarks zwei Größenordnungen vor Ruby, Python, PHP usw. liegt)
  • Ruby- Methodenaufrufe sind langsam (obwohl sie aufgrund der Ententypisierung wahrscheinlich schneller sind als in stark typisierten interpretierten Sprachen)
  • Ruby (mit Ausnahme von JRuby) unterstützt kein echtes Multithreading
  • etc.

Aber andererseits langsam in Bezug auf was? Ruby 1.9 ist im Vergleich zu C (das bis zu 300x schneller sein kann) ungefähr so ​​schnell wie Python und PHP (innerhalb eines 3-fachen Leistungsfaktors). Daher sollte das oben Gesagte (mit Ausnahme von Threading-Überlegungen, falls Ihre Anwendung stark von diesem Aspekt abhängt) ) sind weitgehend akademisch.

Welche Möglichkeiten haben Sie als Ruby-Programmierer, wenn Sie mit dieser "Langsamkeit" umgehen möchten?

Schreiben Sie für Skalierbarkeit und werfen Sie mehr Hardware darauf (z. B. Speicher)

Welche Version von Ruby eignet sich am besten für eine Anwendung wie Stack Overflow, bei der die Geschwindigkeit kritisch und der Datenverkehr intensiv ist?

Nun, REE (kombiniert mit Passagier ) wäre ein sehr guter Kandidat.

vladr
quelle
1
Die Speicherbereinigung selbst ist nicht unbedingt langsam, die Speicherbereinigung der MRT jedoch. Wenn Sie schnelleres Ruby benötigen, können Sie sich auch JRuby und REE ansehen.
Andreas
1
@igouy, stimmt, Mitte 2008 war möglicherweise extrem. Ich habe die Links aktualisiert, aber sie werden in einigen Monaten veraltet sein. :) In beiden Fällen waren die Hardware und einige Patchlevel möglicherweise unterschiedlich, und es wurden einige zusätzliche Tests hinzugefügt, aber das Gesamtbild der Dinge änderte sich nicht.
Vladr
11
>> in der gleichen Größenordnung << Es liegt in der gleichen Größenordnung, wenn Sie 7 oder 69 Jahre alt sind. Ist dieser Unterschied unbedeutend?
igouy
10
@igouy, ich weiß nichts über dich, aber ich bin kein Programm, um meine Lebensdauer in Bezug auf die Ausführungsgeschwindigkeit zu messen. Wo mir die Ausführungsgeschwindigkeit wichtig ist, ist zum Beispiel die Renderzeit der HTTP-Antwort. Ich weiß, dass ich den Unterschied zwischen der Renderzeit von 7 ms und 69 ms nicht bemerken werde (insbesondere beim Fahren mit einer Netzwerklatenz von 130 ms). Ich weiß, dass ich den Unterschied zwischen 7 ms und 700 ms bemerken werde, und ich werde BESTIMMT einen Unterschied zwischen 7 ms und 7 s bemerken - aber nein, nicht zwischen 7 ms und 69 ms.
Vladr
3
@vladr, was ist mit den 70ms oder 700ms? Kannst du diesen Unterschied bemerken?
Paul Draper
60

Hier ist, was der Schöpfer von Rails, David Heinemeier Hansson, zu sagen hat:

Rails [Ruby] ist für die überwiegende Mehrheit der Webanwendungen Fast Enough. Wir haben Websites, die täglich Millionen dynamischer Seitenaufrufe ausführen. Wenn Sie auf der Yahoo- oder Amazon-Startseite landen, ist es unwahrscheinlich, dass ein Standard-Framework in JEDER Sprache Ihnen viel Gutes bringt. Sie müssen wahrscheinlich Ihre eigenen rollen. Aber sicher, ich möchte auch freie CPU-Zyklen. Ich interessiere mich einfach viel mehr für kostenlose Entwicklerzyklen und bin bereit, die ersteren gegen die letzteren zu tauschen.

Das heißt, es ist billiger, mehr Hardware oder Maschinen auf das Problem zu werfen, als mehr Entwickler einzustellen und eine schnellere, aber schwieriger zu wartende Sprache zu verwenden. Immerhin schreiben nur wenige Leute Webanwendungen in C.

Ruby 1.9 ist eine enorme Verbesserung gegenüber 1.8. Die größten Probleme mit Ruby 1.8 sind die Interpretation (kein Bytecode, keine Kompilierung) und die Methodenaufrufe, eine der häufigsten Operationen in Ruby, sind besonders langsam.

Es hilft nicht, dass so ziemlich alles eine Methodensuche in Ruby ist - zwei Zahlen hinzufügen, ein Array indizieren. Wenn andere Sprachen Hacks verfügbar machen (Pythons __add__Methode, Perls overload.pm), führt Ruby in allen Fällen reine OO aus. Dies kann die Leistung beeinträchtigen, wenn der Compiler / Interpreter nicht klug genug ist.

Wenn ich eine beliebte Webanwendung in Ruby schreiben würde, würde mein Fokus auf dem Caching liegen. Durch das Zwischenspeichern einer Seite wird die Verarbeitungszeit für diese Seite auf Null reduziert, unabhängig davon, welche Sprache Sie verwenden. Bei Webanwendungen spielt der Datenbank-Overhead und andere E / A-Vorgänge eine viel größere Rolle als die Geschwindigkeit der Sprache. Daher würde ich mich darauf konzentrieren, dies zu optimieren.

rjh
quelle
7
"Immerhin schreiben nur wenige Leute Webanwendungen in C." - Natürlich nicht, aber viele leistungskritische Websites sind zB auf Scala umgezogen.
Dario
6
Ich bin nicht einverstanden damit, dass es billiger ist, mehr Hardware darauf zu werfen. Es ist schwer, Kunden davon zu überzeugen, dass sie alle X Monate mehr Geld für das Hosting zahlen sollten, da ihre Plattform für Entwickler konzipiert wurde.
Kevin
9
@ Keven: Sicherlich würden die Entwicklungskosten reduziert? Was wäre sonst der Sinn, Ruby überhaupt zu verwenden?
rjh
4
@ Kevin Diese Aussage ist ein bisschen weit gefasst. Wenn Sie für etwa 10% mehr Verkehr mit etwa 100 Besuchen pro Tag einen neuen Server einrichten müssten, hätte der Kunde eindeutig das Recht, sich zu beschweren. Realistisch gesehen müssen Sie jedoch in der Regel zunächst viel mehr Verkehr haben und diesen um eine Größenordnung erhöhen, bevor die alte Hardware nicht mehr zurechtkommt. Zu diesem Zeitpunkt bewegt sich das Thema auf dem Gebiet "ein gutes Problem", und kaum jemand würde sich über ein Upgrade der Hardware beschweren. Außerdem betreibt kein "Kunde" eine so stark frequentierte Website, ohne sich dieser Art von Dingen bewusst zu sein.
Täuschung
5
@ Kevin - lass uns das umdrehen. "Es ist schwierig, Kunden davon zu überzeugen, dass sie drei Monate auf eine neue Funktion warten sollten, da ihre Plattform für Computer konzipiert wurde." Wenn diese neue Funktion den Umsatz drastisch steigern würde, würde sie die zusätzliche Hardware bezahlen. Außerdem ist die Auswahl einer schnellen Sprache von Anfang an für viele Anwendungen eine vorzeitige Optimierung. Die Chancen stehen gut, dass Ihr Engpass woanders sein wird: Datenbanklesungen, Netzwerklatenz usw.
Nathan Long
34

Das Schreiben von Code ist langsam. Das Lesen von Code ist langsam. Das Finden und Beheben von Fehlern ist langsam. Das Hinzufügen von Funktionen und Verbesserungen ist langsam. Alles, was sich gegenüber dem vorherigen verbessert, ist ein Gewinn. Sehr selten ist die Ausführungsleistung ein Problem.

Präsident James K. Polk
quelle
29
@ GregS: Die Ausführungsleistung ist immer dann ein Problem, wenn sie die Benutzerfreundlichkeit beeinträchtigt . Das Scannen einer XML-Datei nach einer Zeichenfolge in einer oder drei Sekunden ist zwar aus rein numerischer Sicht nicht wichtig, aber ein Unterschied von ein paar Sekunden kann einen großen Unterschied in der Benutzerfreundlichkeit bewirken, wenn es sich um eine benutzerbezogene Anwendung handelt.
Bryan Oakley
5
@ Ajax: Nein, ich wette, es ist deine siegreiche Persönlichkeit.
Präsident James K. Polk
15
Mein bisheriger Rekord ist es, einem Unternehmen 30.000 US-Dollar pro Jahr an einem Tag Arbeit zu sparen. Ihre Ingenieure entschieden, dass es besser lesbar ist, wenn ein Cloud-Computing-Algorithmus die Anzahl der bei jeder Iteration ausgeführten Aufgaben zählt, was n verursacht! Anfragen zu Jobs mit mehr als 20.000 Arbeitseinheiten. Wenn Sie dies ändern, um zu überprüfen, ob noch 1 Arbeitselement übrig ist, wird es in n Abfragen gelöscht und die Rechnung von 130 USD / Tag auf 20 USD / Tag gesenkt. Faule Programmierer verdienen mir Geld. Bitte ermutigen Sie mehr faule Programmierer.
Ajax
10
Es ist lustig, dass Sie gerade einen Kommentar abgeben ... Ich bin zu einem anderen Unternehmen gewechselt, bei dem wir gerade fünfzehn Entwickler von Funktionen und Leistung abziehen mussten, da eine große amerikanische Bank sich weigert, einen Vertrag über mehrere Millionen Dollar bis zum System zu unterzeichnen können mit ihrer Last umgehen. Sie mögen die Funktionen, die wir haben, nur nicht die Geschwindigkeit, mit der sie arbeiten. Wenn Sie die Leistung lange genug ignorieren, spielt es keine Rolle, über welche Funktionen Sie verfügen, da diese ungewöhnlich langsam sind .
Ajax
4
Die Ausführungsleistung ist immer ein Problem, wie viel ein Problem ist, worüber wir sprechen. Wie viel interpretierten Code können Sie auf einem Mobiltelefon ausführen, bevor Benutzer Ihre App nicht mehr kaufen, weil dadurch die Batterien leer werden? Wie lange wartet ein Nutzer auf das Laden Ihrer Seite, bevor er die Anzeige schließt, wodurch Ihnen die Werbeeinnahmen entzogen werden? Beantworten Sie diese Fragen und Sie, wie wichtig die Ausführungsleistung ist.
Sqeaky
15

Die Antwort ist einfach: Leute sagen , Rubin langsam ist , weil es sich langsam auf , gemessen Vergleiche zu anderen Sprachen basiert. Bedenken Sie jedoch, dass "langsam" relativ ist. Oft sind Ruby und andere "langsame" Sprachen schnell genug.

Bryan Oakley
quelle
Ja, das habe ich mir gedacht, ich meine, die Leute sagen, es ist langsam, aber es ist immer noch verdammt schnell für meine Anforderungen ...
Stephenmurdoch
11
>> es ist immer noch verdammt schnell für meine Anforderungen << Es ist schnell genug für alles, was nicht schnell sein muss :-)
igouy
Ich bin teilweise voreingenommen, vielleicht ist dies ein veralteter Kommentar. Jetzt haben wir Ruby 2.3 und aus Ruby 2.2-Erfahrung heraus habe ich festgestellt, dass der Schienenstapel schwer ist. Wenn Sie ein schnelleres Framework benötigen, versuchen Sie es mit Pidrano, das auf Sinatra basiert, und sie haben versucht, dem Schienenbefehl so nahe wie möglich zu kommen, aber viel leichter. aber sie haben noch nicht die Version 1.0 erreicht, noch mehr, aber von meinem Test läuft es schön und schnell. Ich habe es mit Active Record 5 und Pidrano-Kettenrädern gearbeitet, die von Schienen entlehnt wurden. Bei 200 gleichzeitigen Verbindungen erhalte ich eine Antwort von 1,5 Sekunden ohne Datenbankabfrage mit Assets von Kettenrädern
James Tan
5

Joel über Software - Ruby Performance Revisited erklärt es recht gut. Könnte aber veraltet sein ...

Ich würde empfehlen, einfach dabei zu bleiben, da Sie an Ruby on Rails gewöhnt sind.
Wenn Sie jemals auf ein Leistungsproblem stoßen, sollten Sie die Verwendung einer anderen Sprache und eines anderen Frameworks überdenken.

In diesem Fall würde ich C # mit ASP.NET MVC 2 wirklich empfehlen , funktioniert sehr gut für CRUD-Apps.

Tamara Wijsman
quelle
Vielen Dank für den Link, ich lese immer gerne Joels Einstellungen. Interessante Bemerkung macht er über DHHs "Autoaufkleber Slogan" ...
Stephenmurdoch
Zitat: " Dies gilt nicht für alle, aber wenn Leute sagen, dass sie Leistungsprobleme mit Ruby haben oder nur Code schneller ausführen müssen, als die Ruby-Kern-Engine es ausführen kann, hilft es nicht, dies zu tun." Ruby befürwortet das Singen von Hymnen über Entwicklerzyklen im Vergleich zu CPU-Zyklen. "Gut gesagt.
März 2377
3

Ich würde sagen, Ruby ist langsam, weil nicht viel Mühe darauf verwendet wurde, den Dolmetscher schneller zu machen. Gleiches gilt für Python. Smalltalk ist genauso dynamisch wie Ruby oder Python, bietet jedoch eine um ein Vielfaches bessere Leistung (siehe http://benchmarksgame.alioth.debian.org) . Da Smalltalk mehr oder weniger durch Java und C # ersetzt wurde (dh vor mindestens 10 Jahren), wurden keine weiteren Arbeiten zur Leistungsoptimierung durchgeführt, und Smalltalk ist immer noch viel schneller als Ruby und Python. Die Leute bei Xerox Parc und bei OTI / IBM hatten das Geld, um die Leute zu bezahlen, die daran arbeiten, Smalltalk schneller zu machen. Was ich nicht verstehe, ist, warum Google nicht das Geld ausgibt, um Python schneller zu machen, da es sich um einen großen Python-Shop handelt. Stattdessen geben sie Geld für die Entwicklung von Sprachen wie Go ...

OlliP
quelle
Ich denke, das liegt daran, dass Python bereits seinen Platz hat und heutzutage stark genutzt wird. Wenn Sie eine hohe Leistung benötigen, können Sie viele Bibliotheken verwenden oder weben und andere Dinge, die Sie verwenden können.
Zelphir Kaltstahl
Nach dem, was ich gelesen habe, haben einige Bemühungen in Ruby 2.5 bereits zu guten Ergebnissen geführt.
März 2377
2

Interessiert es Sie zunächst, was andere über die Sprache sagen, die Sie mögen? Wenn es den Job macht, den es machen muss, geht es dir gut.

OO ist nicht der schnellste Weg, um Code auszuführen, aber es hilft beim Erstellen des Codes. Smart Code ist immer schneller als dummer Code und nutzlose Schleifen. Ich bin ein DBA und sehe viele dieser nutzlosen Schleifen, lösche sie, verwende besseren Code und Abfragen und die Anwendung ist schneller, viel schneller. Interessiert dich die letzte Mikrosekunde? Möglicherweise sind die Sprachen auf Geschwindigkeit optimiert, andere erledigen nur die Aufgabe, die sie zu erledigen haben, und können von vielen verschiedenen Programmierern verwaltet werden.

Es ist alles nur eine Wahl.

Frank Heikens
quelle
2

Offensichtlich verliert Ruby an Geschwindigkeit. Obwohl Benchmark-Tests darauf hindeuten, dass Ruby nicht so viel langsamer als PHP ist. Im Gegenzug erhalten Sie einfach zu wartenden DRY-Code, den besten aller Frameworks in verschiedenen Sprachen.

Bei einem kleinen Projekt werden Sie keine Langsamkeit spüren (ich meine bis zu <50.000 Benutzern), da im Code keine komplexen Berechnungen verwendet werden, sondern nur das Mainstream-Material.

Bei einem größeren Projekt zahlt sich die Bezahlung von Ressourcen aus und ist billiger als die Entwicklerlöhne. Darüber hinaus ist das Schreiben von Code in RoR viel schneller als jedes andere.

Im Jahr 2014 ist diese Größe des Geschwindigkeitsunterschieds, von dem Sie sprechen, für die meisten Websites unbedeutend.

Rápli András
quelle
2

Der Umgang mit Rubys Leistung in Webanwendungen ist der gleiche wie mit jeder anderen Programmiersprache:

DIE ARCHITEKTUR

Dies ist in Rails einfacher als in den meisten anderen Web Frameworks.

Auf Anwendungsebene durch Zwischenspeichern der zu zwischengespeicherten Daten und durch intelligentes Verwalten des Zugriffs auf die Datenbank (da der Engpass bei den meisten WEB-Apps normalerweise beim Zugriff auf die Datenbank liegt).

Rails macht es sehr einfach und natürlich, diese Probleme zu lösen. Es gibt verschiedene Abstraktionen zum Zwischenspeichern von Daten, Seiten und Fragmenten sowie sehr schöne Abstraktionen, um den SQL-Teil optimiert und wiederverwendbar zu behandeln ( Active Record und AREL ).

Dies ist der Grund, warum so viele Anwendungen, die in schnelleren und weniger ausdrucksstarken Sprachen (wie PHP) geschrieben sind, langsamer sind als die Ruby-Gegenstücke. Es ist nicht so einfach und elegant, das Zwischenspeichern und Abfragen mit diesen Sprachen anzugehen, wie mit Ruby.

Auf der Infrastrukturebene ist es vernünftig, an Lastausgleich und all das zu denken, über das ich nicht viel weiß. Ich würde dieses Problem auslagern, indem ich eine Plattform als Dienstleister wie Heroku oder Engine Yard anheuere . Wie auch immer. Die Bereitstellung von Schienen mit Lastausgleich ist wahrscheinlich nicht sehr schwierig.

Pedro Morte Rolo
quelle
1

Ruby ist bei einer Reihe leicht messbarer Aufgaben langsamer als C ++ (z. B. bei Code, der stark vom Gleitkomma abhängt). Dies ist nicht sehr überraschend, aber genug Rechtfertigung für einige Leute, um zu sagen, dass „Ruby is Slow“ ohne Qualifikation ist. Sie zählen nicht die Tatsache, dass es viel einfacher und sicherer ist, Ruby-Code zu schreiben als C ++.

Die beste Lösung besteht darin, in Ihrem Ruby-Code gezielte Module zu verwenden, die in einer anderen Sprache (z. B. C, C ++, Fortran) geschrieben sind. Diese können das schwere Heben erledigen und Ihre Skripte können sich auf Koordinationsprobleme auf höherer Ebene konzentrieren.

Donal Fellows
quelle
Vergleiche werden häufig mit Java, C #, Python, möglicherweise Perl und nicht mit C ++ durchgeführt.
rjh
5
Natürlich. Aber ich kann Ihnen (als Entwickler von Tcl) versichern, dass die Leute Sie immer unfair mit anderen Sprachen vergleichen werden. Die Lösung besteht darin, diese anderen Sprachen für Komponenten zu verwenden, die Sie zusammenfügen. Alles in einer Sprache zu erledigen ist ein bisschen so, als würde man für alle Aufgaben ein einziges Tool verwenden. Wenn Sie nur einen Hammer haben, sieht alles aus wie ein Daumen.
Donal Fellows
nette Idee über die Verwendung von Fremdsprachenmodulen, wenn sie benötigt werden
stephenmurdoch
>> um zu sagen, dass "Ruby is Slow" ohne Qualifikation << Vor ein paar Jahren haben sie vielleicht Ruby-Programme gezeigt, die langsamer waren als Tcl-Programme :-)
igouy
1
Sie wissen, was sie über Lügen, verdammte Lügen und Benchmarks sagen. ;-)
Donal Fellows
0

Bei der Leistung geht es fast immer um gutes Design und optimierte Datenbankinteraktionen. Ruby erledigt das, was die meisten Websites benötigen, recht schnell, insbesondere neuere Versionen. Die Geschwindigkeit der Entwicklung und die einfache Wartung sorgen für einen hohen Kostenaufwand und für die Zufriedenheit der Kunden. Ich finde, dass JAVA für einige Aufgaben eine langsame Ausführungsleistung aufweist. Angesichts der Schwierigkeit, in JAVA zu entwickeln, erstellen viele Entwickler langsame Anwendungen, unabhängig von der theoretischen Geschwindigkeitsfähigkeit, wie in Benchmarks gezeigt (Benchmarks weisen im Allgemeinen eine bestimmte und enge Fähigkeit auf). Wenn ich eine intensive Verarbeitung benötige, die für die Funktionen meiner Datenbank nicht gut geeignet ist, wähle ich je nach Plattform C oder Objective-C oder eine andere wirklich leistungsstarke kompilierte Sprache für diese Aufgaben. Wenn ich eine datenbankbasierte Webanwendung erstellen muss, Ich verwende RoR oder manchmal C # ASP.NET, abhängig von anderen Anforderungen. weil alle Plattformen Stärken und Schwächen haben. Die Ausführungsgeschwindigkeit der Aufgaben Ihrer Anwendung ist wichtig, aber schließlich zählt nur die Ausführungsleistung eines engen Aspekts einer Sprache. dann verwende ich möglicherweise immer noch die Assembler-Sprache für alles.

Richard
quelle
-5

Ruby bietet eine gute Leistung für die Entwicklerproduktivität. Ruby erzwingt von Natur aus eine testgetriebene Entwicklung, da es an Typen mangelt. Ruby funktioniert gut, wenn es als High-Level-Wrapper für C-Bibliotheken verwendet wird. Ruby funktioniert auch bei lang laufenden Prozessen gut, wenn es über JVM oder Rbx VM mit JIT-kompiliert wird, um Code zu maschinieren. Ruby funktioniert nicht gut, wenn es erforderlich ist, Zahlen in kurzer Zeit mit reinem Ruby-Code zu knacken.

nurettin
quelle