Laden...

Geschwindigkeit C#

Erstellt von lebes vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.566 Views
L
lebes Themenstarter:in
82 Beiträge seit 2006
vor 17 Jahren
Geschwindigkeit C#

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ß

49.485 Beiträge seit 2005
vor 17 Jahren

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

F
722 Beiträge seit 2005
vor 17 Jahren

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).

L
lebes Themenstarter:in
82 Beiträge seit 2006
vor 17 Jahren

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?

G
497 Beiträge seit 2006
vor 17 Jahren

C# bzw. .Net hat viele Vorteile gegenüber VB6 - Geschwindigkeit ist da noch der uninteressanteste.

S
1.047 Beiträge seit 2005
vor 17 Jahren

also auf die schnelle fallen mir da 2. sehr wichtige ein:

  • c# ist eine komplette objektorientierte sprache
  • das .net framework hat unmengen an klassen die sehr viel funktionalität abdecken

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

Gelöschter Account
vor 17 Jahren

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..

S
8.746 Beiträge seit 2005
vor 17 Jahren

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.

347 Beiträge seit 2006
vor 17 Jahren

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.

Gelöschter Account
vor 17 Jahren

weil er erst mal compaliert und dann loslegt.

das compalieren nimmt ein wenig zeit in anspruch aber dann ists genauso schnell

1.373 Beiträge seit 2004
vor 17 Jahren

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

5.941 Beiträge seit 2005
vor 17 Jahren

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