Da ich jedoch immer mehr Backend-Entwicklungen (Web-APIs) im Front-End einer Webanwendung (VueJS oder Angular) durchgeführt habe, habe ich kürzlich gefragt, ob das .Net Framework oder ASP.Core immer noch das richtige für mich ist . Mit der letzten Ankündigung entschied Microsoft auch, dass .Net Core (The Saviour, der vor 2 Jahren gelobt wurde) nun mit dem .Net Framework und .Net Standard sowie Xamarin kombiniert wird und ein .Net 5 erscheint. So gut die Entscheidung auch sein mag, die Auswirkungen für uns Entwickler sind auch gewalttätig. Es wird wieder unzählige bahnbrechende Änderungen geben. Was wird mit meinen alten Projekten passieren? Was muss ich migrieren? Muss ich wieder neue Sprachfunktionen lernen? Bitte versteh mich nicht falsch, ich bin gespannt zu lernen. Aber als Entwickler möchte ich nicht alle zwei Jahre ein neues Framework lernen müssen. Ich möchte, dass mein Code jahrelang ausgeführt wird und nicht veraltet ist, sobald er geschrieben wurde. Vor kurzem habe ich mich auf dem Markt für Programmiersprachen umgesehen und mir einige Frameworks und Konzepte angesehen. Ich war bereits mit Lumen und PHP vertraut, weil ich bereits verschiedene Projekte damit implementiert hatte, aber die Leistung war immer ein bitterer Nachgeschmack, zumindest wenn Sie von .Net Core stammen. Aber wie ist die Leistung im Vergleich zu anderen Sprachen? Aus diesem Grund habe ich einfach einen einfachen Leistungsvergleich (Benchmark) zwischen ASP.Core Web API, Go lang und PHP mit Lumen erstellt.
Programmiersprachen-Benchmark
Um herauszufinden, wie sich die Sprachen unterschiedlich verhalten, habe ich einen Benchmark mit den drei Sprachen erstellt, die für mich von Interesse sind. Gehen Sie lang, ASP.Core und PHP mit dem Microframework Lumen. Ich gab allen drei Sprachen die gleiche Aufgabe und schickte dann 10.000 Anfragen mit dem Apache Benchmark Tool, um zu sehen, welches Framework oder welche Sprache die Aufgabe am schnellsten erledigte. Die Anwendung ist eine Web-API, die einfache arithmetische Probleme bereitstellt und das Ergebnis zurückgibt. Ich habe bewusst das Schreiben von Operationen und Datenbanken vermieden - mein einziges Anliegen war die Exportzeit von Code.
Golang performance
Meiner Meinung nach ist Golang derzeit die interessanteste Programmiersprache für die Backend-Entwicklung. Einerseits ist Go vergleichsweise schnell wie C ++, bietet jedoch moderne Sprachfunktionen wie asynchrone Programmierung (einfach implementiert) sowie Zugriff auf eine große Bibliotheksauswahl für SSL, ORM, Protobuff und mehr. Sprechen Sie die Leistung von C ++, aber mit modernen Sprachfunktionen.
PHP (Lumen) performance
C# performance (ASP.Core)
Das Benchmark Ergebnis
Metrik | ASP.Core API | Lumen | Go |
---|---|---|---|
Time taken for tests | 3.461 sec | 41.776 sec. | 1.391 sec. |
Complete requests | 10000 | 10000 | 10000 |
Failed requests | 0 | 0 | 0 |
Keep-Alive requests | 5655 | 0 | 10000 |
Requests per second | 2889.22 [#/sec] | 239.37 [#/sec] | 7187.71 [#/sec] |
Time per request | 3.461 ms | 41.776 ms | 1.391 ms |
Wie Sie sehen können, ist das Lumen etwa 40-mal langsamer als Go. Go ist in diesem Test sogar dreimal schneller als C # und verfügt über den kompakteren Code aller anderen Frameworks / Sprachen, da es sich nur um eine Datei handelt und nicht über Zehntausende von Projektordnern verfügt.