Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#55

AW: Ist Delphi so Bedeutungslos ?

  Alt 13. Feb 2013, 09:20
... dann liegt das eigentlich immer am Algorithmus. Aber natürlich: Ausnahmen bestätigen die Regel.

Auch die gängigen Sortieralgorithmen sind in .NET bekannt. Doch doch. Es kann also nicht doppelt so lange dauern, oder hast Du einen Benchmark parat (würde mich interessieren). Ich habe den Link gefunden, der das Gegenteil beweist bzw. darlegt, das sich beide Sprachen an sich nicht viel nehmen ("C can loop as fast as C#"), man aber mit den alten Sprachen (C,C++, Delphi etc.) mehr Möglichkeiten hat, speichernah zu programmieren um so noch ein paar Prozente rauszukitzeln.
Beim sortieren einer List wahrscheinlich nicht, aber es gibt Situationen in denen C# deutlich langsamer ist: http://stackoverflow.com/questions/8...ng-native-code & http://stackoverflow.com/questions/1...or-mathematics

Meine Kernaussage war aber ja "Es kommt nicht auf das letzte prozent Performance an, wenn die Zeit des Entwicklers gespart wird"

Was kann ich mit Delphi nicht machen, was aber mit .NET und co geht?
Mir fällt nichts ein. Selbst mit meinem geliebten D5 kann ich alles erledigen...
Von einem Informatik-theoretischen Standpunkt her sind beide selbstverständlich gleichwertig weil Turing-vollständig. Mein Punkt von oben gilt aber trotzdem. Um mal ein Beispiel für ein modernes Sprachfeature zu nennen ein kleiner Ausschnitt aus meinem letzten Programm:
Code:
public enum COMM_Command : byte
{
   // Allgemeine Datentypen
   [CommandInfo(Category.General, "Ping ausführen", PrimaryName = "")]
   PING = 00,
   
   [CommandInfo(Category.Response, "Bestätigung", PrimaryName = "")]
   ACK = 01,
   
   [CommandInfo(Category.Response, "Fehler", PrimaryName = "")]
   ERROR = 02,

   // Variablen lesen
   [CommandInfo(Category.GetVariable, "Zustand")]
   REQ_STATE = 10,
   
   [CommandInfo(Category.GetVariable, "Zyklen")]
   REQ_CYCLES = 11
   
   //...
   
   [CommandInfo(Category.Command, "Kalibrierdaten speichern")]
   CMD_SAVE_CALIBRATION = 208,
}
Das ganze ist eine Deklaration von einem Enum. Die Dinger in den [] Klammern sind Attribute und zu jedem Wert des enums wird ein Objekt einer eigenen Klasse erstellt. Die Informationen die ich jeweils hinterlegt habe lassen sich später mit Reflection wieder abrufen. Als erste Variante in Delphi fällt mir jetzt ein Array[TMyEnum] of TMyAttribute ein, das man dann aber selber initialisieren muss! Der enum hat sich (natürlich) im Laufe der Entwicklung verändert, aber da die Infos direkt mit "dranhängen" war es einfach die mit zu aktualisieren.

So als Kontext: Das ganze dient zur seriellen Kommunikation mit einem µC, es ist daher schon wichtig dass der enum ein byte groß ist. Man kann dann einfach das byte-Array nehmen und in einen struct/record stopfen.

Geändert von jfheins (13. Feb 2013 um 09:23 Uhr)
  Mit Zitat antworten Zitat