16 Stimmen

schnellste Scripting-Programmiersprache?

Ich habe ein Webanwendungsprojekt, bei dem Leistungen gezählt werden mehr mehr als alles andere zählt, und ich habe die Wahl, welche Technologien zu verwenden.

Die nicht wirklich zusammenhängenden Benchmarks des Sprach-Shootouts mit Webanwendungen zu tun haben.

Welche Kandidaten würden Sie am ehesten vorschlagen?

Danke!


Ein Freund schlug den Gwan-Server im IRC vor. Sieht aus wie das, was ich gesucht habe, aber ich habe noch nie davon gehört. Hat irgendjemand Erfahrung mit diesem Paket? Benutzerfreundlichkeit, Zuverlässigkeit?

Bevor ich Apache verlasse, würde ich gerne Ihre Meinung hören.

8voto

Pindatjuh Punkte 10393

G-WAN ist ein ordentlicher Webserver: Er basiert auf dem Konzept der "C-Skripte":

Ein C-Skript ist einfach C-Quellcode, der vom Webserver kompiliert und dann in den geschützten Speicher geladen wird. Es wird vom Webserver aufgerufen, wenn eine Anfrage an das Servlet gestellt wird. Da das Servlet von einem C-Compiler kompiliert wird, ist es "so schnell" wie die normale Kompilierung eines C-Programms. Der Vorteil von C-Skripten gegenüber z. B. CGI oder FastCGI ist jedoch, dass sich das kompilierte Programm im selben Speicherbereich wie der Webserver befindet. Dadurch verringert sich der Kommunikationsaufwand (entweder durch die Erstellung eines Prozesses für jede Anfrage im Falle von CGI oder eines Sockets für FastCGI).

Der Webserver verwendet die Select/Poll-Technik: nicht-blockierende E/A. Allerdings gibt es eine nette Sache dabei. Jedes Programm kann so geschrieben werden, als ob es blockierende E/A verwenden würde. Da der Webserver selbst jedes C-Skript kompiliert, kann er das Programm so umwandeln, dass es nicht-blockierende E/A verwendet. Dadurch kann er sich selbst mit Bibliotheken von Drittanbietern verbinden (z. B. Datenbankzugriff) und trotzdem die nicht-blockierende E/A-Natur nutzen: kein Thread/Prozess-Kontextwechsel.

Die Werkzeuge, die für die Programmierung der C-Skripte zur Verfügung stehen, sind zum Beispiel Caching und sichere Puffer. Die nächste (zum Zeitpunkt der Erstellung dieses Beitrags noch nicht veröffentlichte) Version wird auch einen Key-Value-Speicher enthalten.

Leistung: Es gibt einige Benchmarks, die zeigen, dass er jeden anderen Webserver übertrifft, aber ich traue diesen nicht. Versuchen Sie, ein kleines CPU-intensives Programm in C und z.B. in PHP zu schreiben. Lassen Sie das C-Skript auf dem G-WAN und das PHP-Skript auf dem Apache laufen, und führen Sie selbst einen Benchmark durch.

Es gibt noch mehr, aber das würde den Rahmen dieser Frage sprengen.

Ein Nachteil von G-WAN ist, dass es von nur einer Person entwickelt wird. Es gibt jedoch ein Forum, in dem Sie Fragen stellen können.

Die Benutzerfreundlichkeit ist durch Ihre C-Kenntnisse begrenzt. Die bereitgestellte API ist jedoch einfach. Sie hat immer noch einige Ungereimtheiten und (meiner Meinung nach) hässliche Teile, aber das ist kein Problem. Ein schwerwiegenderes Problem ist, dass nicht garantiert ist, dass jede Version abwärtskompatibel ist, und dass Sie möglicherweise neu schreiben müssen.

Wenn Sie auf Nummer sicher gehen wollen: Nutzen Sie die Plattformunabhängigkeit von C: Erlauben Sie Ihrem Code, zu (Fast)CGI-Programmen kompiliert zu werden und auch von G-WAN verwendet zu werden. Sollte G-WAN ausfallen, können Sie jederzeit auf das (Fast)CGI des Apache zurückgreifen (siehe http://www.fastcgi.com/ für API's).

7voto

marr75 Punkte 5638

Wenn die Leistung wichtiger ist als alles andere, sollten Sie keine Skriptsprache verwenden. Zumal Sie die volle Kontrolle über den Technologie-Stack haben. Kompilierte Sprachen sind für rechenintensive Operationen besser geeignet.

4voto

Kokizzu Punkte 22415

LuaJit (Lua) ist die schnellste Skriptsprache mit JIT-Technologie

wenn Sie die schnellste für Server-seitige Web-Anwendung (die nicht immer Skripting), das wäre g-wan.. Sie können c, c + +, java.

ASP.NET ist auch schnell genug für fast alles, aber ziemlich teuer

php mit Hiphop wäre am einfachsten zu lernen und auch schnell genug.

es hängt davon ab, wie viele Anfragen Sie benötigen.. und wie schnell Sie die Sprache lernen ^^ Vergessen Sie nicht, statische Daten zwischenzuspeichern (mit memcache oder nosql)

3voto

kriss Punkte 22473

Stellen Sie zunächst fest, ob die Leistung Ihrer Anwendung wirklich von der Sprache oder von einem anderen Faktor (z. B. Datenbankanfragen) abhängt. Die Fähigkeit, Ergebnisse zwischenzuspeichern, kann ebenfalls ein sehr wichtiger Faktor sein.

Für die Leistung steht die verwendete Sprache ganz oben auf der Liste der zu prüfenden Punkte, und auch der Anwendungsfall hat Einfluss darauf, welche Sprache besser ist. Wenn Sie z. B. viele Regex zu prüfen haben, sollten Sie die Regex-Unterstützung in der Kandidatensprache prüfen usw...

Für die Bildverarbeitung ist der wichtigste Punkt wahrscheinlich die zugrundeliegende Bildbibliothek, die Sie verwenden, normalerweise in C geschrieben. Es ist als Bibliothek für die meisten Sprachen verfügbar, und die Skriptsprachenschicht ist nur notwendig, um Funktionen der Bibliothek aufzurufen, und die verwendete Sprache wird auf dieser Ebene nicht viel ändern (aber das Zwischenspeichern von vorberechneten Ergebnisbildern könnte die Leistung stark verändern). Dieser Anwendungsfall wäre wahrscheinlich ähnlich für den Aufruf einer kryptographischen Bibliothek.

Wenn die Leistung wirklich so wichtig ist, könnten Sie für die Bildverarbeitung auch eine Bibliothek verwenden, die mit GPU-Beschleunigerkarten zusammenarbeitet (Bibliotheken mit cuda- oder openGPU-Unterstützung).

3voto

pokstad Punkte 3263

Javascript wird ständig überprüft und für die Verwendung auf mobilen Geräten optimiert, so dass es auf echten Servern in voller Größe EXTREM schnell läuft. Schauen Sie sich Node.JS an, ein Projekt zur Implementierung von serverseitigem Javascript für die Bereitstellung von Webseiten: http://nodejs.org/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X