Ergebnis 1 bis 4 von 4

Thema: Schleifen

  1. #1
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.876
    Renommee
    283

    Schleifen

    Hallo,

    ganz allgemeine Frage nach der "Effizienz" von Schleifen.

    Ich würde logisch betrachtet sagen, beide (folgenden) Möglichkeiten ergeben keinerlei Unterschied in der Geschwindigkeit der Zählungen;
    dennoch habe ich irgendwie im Hinterkopf, dass es irgendwo schon einen Unterschied machen kann. Allerdings ergibt eine Multiplikation
    der Zähler in beiden Schleifen das Gleiche: ( i * j ) oder ( j * i ) ==> ( 8294400 ). ...

    Code:
    for(int i = 0; i < 3840; i++)
            for(int j = 0; j < 2160; j++)
                    // 8294400
    Code:
    for(int i = 0; i < 2160; i++)
            for(int j = 0; j < 3840; j++)
                    // 8294400

    OffTopic:
    PS: Gibt es "Trägheit" eigentlich auch bei Software-Prozessen!? xD´
    PPS: Die Frage ist (vom Prinzip aus gesehen) ernst gemeint. *gg*

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

  2. #2
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.876
    Renommee
    283

    AW: Schleifen

    Und dann (hier) noch speziell für JavaScript: welches der beiden folgenden bedeutet effizientere Speichernutzung?

    Code:
    for(var id in dom.id)
    {
            var tag = dom.id[id];
    }
    Code:
    var tag;
    
    for(var id in dom.id)
    {
            tag = dom.id[id];
    }
    Ich sehe beides als Möglichkeit: die erste Variante würde bedeuten, dass nach der Schleife eine dort unnötige Variable nicht mehr gesetzt wäre,
    also mehr freigegebener Speicher. Dafür aber sieht das so aus, als müsste diese Variable "tag" innerhalb der Schleife mit jedem ihrer Durchläufe wieder-
    holt erst allokalisiert werden!? ... hingegen bei der zweiten Variante würde "tag" nur einmal allokalisiert, bliebe dann aber unnötiger Weise nach der Schleife
    dennoch aktiv, so lange man nicht "delete tag" aufruft. hm? ... und ja: "Allokalisierung" ist eh was anderes quasi; also weil die Länge des Wertes der "tag"-
    Variable erst bei ihrer Zuweisung fest steht. ... nya~ wie löst JavaScript sowas - und wie steht's mir dem Gleichen in C bzw. ASM?

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

  3. #3
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.876
    Renommee
    283

    AW: Schleifen

    (beide probleme zusammen gesetzt ergeben evtl. die lösung (^_^))

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

  4. #4
    Registered User
    Registriert seit
    Jul 2003
    Beiträge
    237
    Renommee
    502

    Re: Schleifen

    Beim Compilieren wird eine for-Schleife im Wesentlichen in eine if-Abfrage und zwei goto-Anweisung übersetzt. Zwei Schleifen = zwei if-Abfragen + vier goto-Anweisungen.
    Gesprungen wird im ersten Fall:
    3840 * (2160 + 1) + 1 = 8298241 (Davon 3841 conditonal jumps)

    Und im zweiten Fall:
    2160 * (3840 + 1) + 1 = 8296561 (Davon 2161 conditonal jumps)

    Wobei nur die conditional jumps zum Leeren der Pipeline wg. falscher Jump-Prediction führen können und damit teuer sind. Bei aktuellen Compilern ist es aber eh egal: Die optimieren Dir die Schleife ggf. komplett weg, verschieben Anweisungen ohne Seiteneffekte raus etc.

    Zur der Variablen: JS wird von den Browsern ja auch just-in-time kompiliert und da es sich um eine lokale Variable handelt hat die einen festen Platz auf dem Stack - da wird nix neu allokiert
    Geändert von dirdi (vor einer Woche um 15:50 Uhr)
    thx 4 reading

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Schleifen verschachteln
    Von Outcast im Forum C / C++
    Antworten: 10
    Letzter Beitrag: 21.04.2003, 13:42
  2. [PHP] while schleifen mit if bedingungen
    Von Zensor im Forum PHP, Perl und ASP
    Antworten: 7
    Letzter Beitrag: 30.08.2002, 16:27
  3. Pascal: ';' bei if-schleifen
    Von Mystique::BJ::x im Forum Pascal / Delphi
    Antworten: 7
    Letzter Beitrag: 20.10.2001, 13:34
  4. For und If Schleifen problem
    Von Anything im Forum Pascal / Delphi
    Antworten: 3
    Letzter Beitrag: 04.05.2001, 14:14
  5. for Schleifen???
    Von Gruener_Chaot im Forum Java
    Antworten: 3
    Letzter Beitrag: 13.07.2000, 08:48

Berechtigungen

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