Hallo,
ich bin Umsteiger von VB 6 auf Visual C#. Mein Hauptmotiv ist ein hoffentlich deutlicher Geschwindigkeitsgewinn. Habe nun folgendes einfache Programm in C# und in VB 6 laufen lassen:
for (cIndex1 = 0; cIndex1 ≤ 100000000; cIndex1++)
hilfe = Math.Sin(cIndex1) + Math.Log(cIndex1);
Hatte nun natürlich erwartet, dass C# deutlich schneller ist. In Wahrheit haben aber beide System ungefähr 22 sec gebraucht. Kann das sein? Oder mach ich was falsch mit C#?
Gruß
Hallo lebes,
warum hast du erwartet, dass C# schneller ist? Ich finde es nicht überraschend, dass dein Testprogramm in beiden Sprachen gleich schnell ist.
herbivore
dem schließe ich mich an.
die wahl der programmiersprache hat logischerweise keinen einfluß auf die rechenleisung der CPU. bei genauer messung (inkl. ladevorgang) müsste das c# programm eigentlich noch langsamer sein, da zuerst der CLI Code vom Jitter in Maschinencode umgewandelt werden muss, was bei VB 6 nicht der Fall ist (da nativer Code).
Ich habe das erwartet, da die Implementationen der mathematischen Funktionen in VB 6 sehr langsam sind.
Wenn ich das C# Programm nicht aus dem Dubbuger starte habe ich auch einen Beschleunigung um den Faktor knapp 2.
Ist aber noch nicht das was ich mir erhofft hatte, weil wie gesagt die Geschwindigkeitsperformance bei uns die Hauptmotivation zum Wechseln ist.
Warum sollte man sonst auf C# wechseln, wenn man mit VB 6 auch alles machen kann?
C# bzw. .Net hat viele Vorteile gegenüber VB6 - Geschwindigkeit ist da noch der uninteressanteste.
also auf die schnelle fallen mir da 2. sehr wichtige ein:
zudem sei gesagt das du auch vb.net benutzen kannst, es gibt ja sehr viele sprachen mit denen du .net lauffähige assemblies erstellen kannst
wäre auch ein pluspunkt
von daher betracht es mal unter dem gesichtspunkt was bringt dir das .net framework und was bringt dir die gewählte sprache
ich glaube übrigens kaum das .net code schneller ist als vb6 code, aber du wirst in vb6 viel mehr frickelarbeit haben als mit .net, weil du teilweise eben dafür schon klassen hast
du kannst in assembler auch alles machen.. warum also nicht assembler?
c# bietet vorteile beim programmieren selbst da sehr sehr viele klassen und methoden bereits zur verfügung stehen und die anbindung an datenbanken relativ simpel gestaltet wurde und und und...
das alles spart unmengen an zeit beim programmieren..ergo ist es billiger ein programm in c# zu entwickeln...ergo besser.
zudem kommen noch die vorteile vom framework das den code an die maschine auf dem es läuft oder gestartet wird anpasst und vom garbagecollector will ich erst nicht anfangen....
so viele bereitgestellte schnittstellen und komponenten....
aber eins kann c# nicht.. die rechenleistung verfielfachen..
http://www.ddj.com/showArticle.jhtml?documentID=cuj0507bruckschlegel&pgno=12
Nimm sich alles nix. Aber bei trigonometrischen Funktionen kommen ja Algorithmen ins Spiel.... aber auch hier zeigen sich keine nennenswerten Unterschiede:
http://www.ddj.com/showArticle.jhtml?documentID=cuj0507bruckschlegel&pgno=14
Ich habe das erwartet, da die Implementationen der mathematischen Funktionen in VB 6 sehr langsam sind.
Hier irrst du schlichtweg.
Original von feadur
bei genauer messung (inkl. ladevorgang) müsste das c# programm eigentlich noch langsamer sein, da zuerst der CLI Code vom Jitter in Maschinencode umgewandelt werden muss, was bei VB 6 nicht der Fall ist (da nativer Code). Seit wann ist JIT-compiled Code langsamer als eine interpretierte Skriptsprache? 🤔
Und seit wann darf sich eine interpretierte Skriptsprache "nativer Code" nennen? 🤔
Solange du Code benutzt, der in der VB RTL enthalten ist (welche nunmal nicht in VB geschrieben sein kann 😁 ), und nur wenig eigenen Code "drumrum" hast, sollte die Peformance annähernd gleich sein.
Da können dich sogar die Sicherheitsprüfungen von .Net in den Hintern beißen, da ein Call etwas mehr kostet als ein Call von VB in eine importierte (aka wirklich native) Funktion.
Hallo,
Original von Robert G
Seit wann ist JIT-compiled Code langsamer als eine interpretierte Skriptsprache? 🤔
Und seit wann darf sich eine interpretierte Skriptsprache "nativer Code" nennen? 🤔
Wenn ich mich nicht ganz täusche, hat(te) man bei VB6 die Option, entweder P-Code oder nativen Code erzeugen zu lassen, daher ist VB6 nicht (immer) interpretiert.
Grüße,
Andre
Hallo zusammen
Original von VizOne
Wenn ich mich nicht ganz täusche, hat(te) man bei VB6 die Option, entweder P-Code oder nativen Code erzeugen zu lassen, daher ist VB6 nicht (immer) interpretiert.
Kann ich bestätigen!
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011