Was ist der Unterschied in der Geschwindigkeit zwischen den DLR Sprachen und C # in Silverlight 2?
-
06-07-2019 - |
Frage
Für Silverlight 2, es sieht aus wie die Programmierung folgende Möglichkeiten:
- C #
- VB
- DLR Skriptsprachen
- IronRuby
- Ironpython
- A leider vernachlässigt (wenn nicht abgebrochen) Managed JScript
Ist das ein Fall, in dem die Muttersprachen (C # und VB) sind schneller als die DLR Sprachen durch eine Größenordnung oder so?
Jede Hoffnung auf „Leben“ in Ironpython, wenn ich Silverlight Client-Programmierung zu tun, oder sollte ich erwarten für rechenintensive Arbeit in C # fallen?
Meine Umfrage von Sprachen kommt von dieser Reihe von Beispielen für C # und VB und diese Seite des DLR diskutieren.
Lösung
Leider gibt es keine harte und schnelle Antwort auf diese Frage. Leistung sogar die gleiche Sprache hängt von einer Reihe von Parametern stark basiert.
Ja, in Allgemein VB.Net und C # wird schneller als DLR-basierte Sprachen sein. Statische Sprachen tun mehr Arbeit bei der Kompilierung wie Verfahren bindend. Diese Art von Arbeit muss zur Laufzeit für die DLR-basierte Sprachen durchgeführt werden und daher haben sie ein bisschen mehr Kosten zur Laufzeit.
Allerdings viel Arbeit geht in die DLR und DLR-basierten Sprachen zu optimieren. Ein großer Teil dieser Arbeit wird von verschiedenen Caches gemildert und so weiter. Bei vielen Arten von Anwendungen wird der Performance-Unterschied vernachlässigbar sein.
würde ich auf die Leistung nicht eine DLR-basierte Sprache basiert ausschließlich ausschließen, es sei denn ein Profiler mir gesagt, es war tatsächlich ein Problem.
Andere Tipps
Normalerweise ein Algorithmus Optimierung wird in einer statischen Sprache eine viel größere Wirkung hat als neu zu schreiben.
Vielleicht haben Sie Interesse an # 429 von .NET Rock zeigen, ein Interview mit Michael Foord. Hier ist ein relevanter Ausschnitt aus der Transkript :
Dynamische Sprachen sind viel einfacher zu Test, sie sind wirklich geeignet für die Test Driven Development -Ansatz Die Entwickler wurden, dass die Einnahme Zeit. Aber ich davon aus, dass für Performance-Gründen, würden sie in C # zu einem bestimmten Zeitpunkt neu zu schreiben, und dann drei und ein bisschen Jahre später wir bekam 40.000 Zeilen Code Ironpython, wir haben über 140.000 Zeilen in einem bekam Test-Code, haben wir eine Art von bekam etwa 300 Zeilen C # und jedes Mal, sie kommen bei der Aufführung zu sehen, jedes Mal, wenn sie kommen und sagte lokalisieren ein Vorgang, der ist nicht schnell arbeiten genug, wir haben es geschafft, das bekommen Geschwindigkeit, die wir brauchen, um unsere durch die Verbesserung der Algorithmen, durch unseren Python zu verbessern Code ist und nicht in C # fallen, und die Gründe Programme laufen langsam in der Regel nicht die Schuld der Sprache, es ist der Fehler des Programmierers, die Entwickler.
Auch Sie könnten Boo verwenden. Hier ist ein Beispiel Silverlight Tetris mit boo