AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Performance VS Codestruktur/Codevereinfachung
Thema durchsuchen
Ansicht
Themen-Optionen

Performance VS Codestruktur/Codevereinfachung

Ein Thema von NickelM · begonnen am 15. Dez 2015 · letzter Beitrag vom 20. Dez 2015
 
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#1

Performance VS Codestruktur/Codevereinfachung

  Alt 15. Dez 2015, 08:42
Hallo zusammen,

Ich wollte mal eine allgemeine Diskussionsrunde eröffnen, mit einem Thema das mich schon sehr lange in der Programmierung beschäftigt.
Wie der Titel schon sagt geht es darum, in welchem Fall oder bzw. ist es heutzutage überhaupt manchmal noch sinnvoll einen Code zuschreiben,
der etwas "komplizierter" im Aufbau ist, aber dadurch gute Performance gibt, oder eher einen Code, der eine leichte und verständliche Struktur hat.
Es bezieht sich größten Teils um Schleifen, die durchgegangen werden müssen, die ziemlich lang sind. Bei kleinen Arrays, ist es mir klar, dass
es bei den heutigen Rechner recht egal ist.
Ich nenne mal ein kleines Beispiel:
Ich habe einen Array mit folgenden Daten: var TestArray : array of Integer = [5,7,8,1,4,9,2,80,50...] Nun will ich bestimmte Zahlen aus diesem Array nur haben. Nehmen wir mal an : 5,50,9 Der Array kann aber halt unterschiedlich groß sein. (Und ich weiß, mann könnte ihn jetzt sortieren, darum geht es mir aber nicht. Sagen wir mal die "Daten", wofür das Beispiel steht, kann man nicht so leicht sortieren.)
Mir würden jetzt 2 Arten einfallen, dies in Code umzusetzen. Die eine wäre mit Sachen wie Break; ,Continue; . Die andere wäre mit einer Prozedur.

Delphi-Quellcode:
//Die Variante mit Break und Continue
var
  I, Found1,Found2,Found3 : Integer;
begin
  Found1 := -1; //Auf einen Wert setzen, der 100% nicht im Array ist.
  Found2 := -1;
  Found3 := -1;
  for I := Low(TestArray) to High(TestArray) do
  begin
    if (Found1<>-1) and (Found2<>-1) and (Found3<>-1) then
      Break;
    if TestArray[I] = 5 then
    begin
      Found1 := 5;
      Continue;
    end;
    if TestArray[I] = 50 then
    begin
      Found2 := 5;
      Continue;
    end;
    if TestArray[I] = 9 then
    begin
      Found3 := 5;
      Continue;
    end;
  end;
end;
Diese Variante würde jetzt sie Schleife durchgehen, bis die 3 Werte gefunden wurden. Es geht halt jetzt auch noch darum, dass die Anzahl von Werten, die gesucht werden sich ändern können.
Die Variante, kann man natürlich in ne "komplexere" Prozedur packen, um einen leichten Aufruf zumachen, aber das Grundprinzip wäre gleich.

Eine recht einfache Code Variante wäre jetzt diese :
Delphi-Quellcode:
function FindValue(aArray : array of Integer; aNeedValue : Integer) : Integer;
var
  I : Integer;
begin
  Result := -1;
  for I := Low(aArray) to High(aArray) do
  begin
    if aArray[I] = aNeedValue then
    begin
      Result := aNeedValue;
      Exit;
    end;
  end;
end;

var
  Found1,Found2,Found3 : Integer;
begin
  Found1 := FindValue(TestArray,5);
  Found2 := FindValue(TestArray,50);
  Found3 := FindValue(TestArray,9);
  if (Found1<>-1) and (Found2<>-1) and (Found3<>-1) then
  begin
    //Weitere Ablauf danach
  end;
end;
Mann sieht sofort das bei dieser Variante, der Array natürlich mehrmals durchgegangen wird, aber schon um einiges übersichtlicher ist. (Natürlich kann im Array auch nen Record liegen, wo ein Wert geprüft werden muss und ein andere Wert vom Record benötigt wird. Das Beispiel wollte ich jetzt recht einfach halten)

Jetzt zu den Fragen :
Macht es sinn einen Code in der 1. Variante eher zuschreiben als in der 2. ?
Macht es eigentlich überhaupt heutzutage noch sinn oder solche Code-Strukturen nachzudenken, oder denke ich da nur zu Performance orientiert?
Würde euch noch eine Variante vielleicht einfallen, die ich jetzt nicht bedacht habe, die beides vereint?
Was wäre euch als Programmierer, der an einem Projekt mitarbeitet, wichtiger?

Gruß NickelM
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz