Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Speed gefragt: oop kontra Direktzugriff

  1. #1
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825

    Speed gefragt: oop kontra Direktzugriff

    Hallo Leute,

    es muss im Programm mal wieder schnell zugehen (Rekursion):
    gang und liste sind counted arrays a la Turbo-Pascal.

    Was ist da günstiger:

    reines OOP?
    Code:
    do
    { gang.liste[0]--;
      gang.sub_liste(gang.get_element(gang.len());
      if (gang.len()>0) get_nachbar(gang.get_element(gang.len());
    }
    while ((liste.len()==0) && (gang.len()>0));
    if (gang.len()>0) i=gang.get_element(gang.len());
    oder gnadenloser Zugriff?
    Code:
    do
    { gang.liste[0]--;
      if (gang.len()>0) get_nachbar(gang.liste[gang.len()]);
    }
    while ((liste.len()==0) && (gang.len()>0));
    if (gang.len()>0) i=gang.get_element(gang.len());
    Den ganzen Listenkram temporär lokal zu machen lohnt nicht, er ändert sich zu schnell.


    so long,
    BlueJay
    Eigentlich ganz einfach, wenn man's weiss!

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Das erste Beispiel sieht nicht korrekt aus.
    gang.get_element(gang.len()) ohne zu prüfnen ob gang.len() > 0 ist?

    Es scheint auch mehr zu machen (was auch immer sub_liste() macht, Rückgabe hat es ja scheinbar keine).

    Worauf bezieht sich deine Frage denn konkret?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Da ist noch eine Schleife aussenrum, die die Länge abfragt.
    Das Ganze erzeugt einen 3D-Raum, je schneller und ressourcenschonender die Generierung ist, desto größer kann ich die Räume machen.

    sub_liste manipuliert eine Liste, mehr nicht. Kein Rückgabewert.

    Meine Frage konkret war:
    Ist OOP schneller und ressourcenschonender als der direkte Zugriff auf ein Element eines popeligen Vektors?

    Kann der JIT besser Objekte optimieren oder Skalare?

    Oder ist (provokant gesagt) OOP nur eine akademische Kunstform?

    so long,
    BlueJay
    Eigentlich ganz einfach, wenn man's weiss!

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Dann sind vielleicht die Beispiele nicht auf die Frage abgestimmt.
    Das erste Beispiel macht mehr als das zweite und scheint komplizierter geschrieben zu sein.

    Inwiefern da irgendwas mit OOP oder Nicht-OOP zu tun hat ist nicht ersichtlich.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Du hast recht, da ist beim Copy/paste oben (OOP, alles mit gettern und settern) eine Zeile zuviel bei rumgekommen.

    Auf einem normalen PC wäre dies auch Haarspalterei, aber das Ding soll auf einem als langsam verschrieenen Handy laufen. Es wäre nicht das erstemal, dass ich für das Ding statt OOP-konform frei Schnauze programmieren müsste.

    Ich musste letzendlich die Klasse entfernen zugunsten eines einfachen Vektors mit 3 Unterprogrammen zum Manipulieren ("Inline-Kram"). Ist allerdings blöd, wenn ich so was erst auf dem Handy merke.
    Eigentlich ganz einfach, wenn man's weiss!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •