Robert B.: Große JS-Dateien

Beitrag lesen

Moin,

Wenn ich nur vorne hätte, also "aaaa, oder nur hinten, also aaaa", dann würde Deine Variante nichts tun, bliebe also unverändert. Aber: Ich hab immer eins am Anfang und eins am Ende, also ist es egal, ob Deine oder meine Variante.

In den 90-ern* hätte ich die Variante str.slice(1, -1) genommen, damit IE und NS nicht keuchen. Aber heute? Heute wäre str.slice im Vergleich zu RegEx evtl. 5 Nanosekunden schneller... :-)

„5 Nanosekunden“ multipliziert mit der Anzahl an Schleifen-Durchläufen.

Ja, in jeder Iteration wird ein neues Objekt für foo erzeugt. Danach ist es nicht mehr referenziert, also GC‑fähig. Das ist korrekt. Beides wird nach dem Return freigegeben. Auch das ist korrekt.

Aber: Das ist extrem billig. Moderne JS‑Engines sind darauf optimiert, für sie sind Funktions-Objekte leichtgewichtige Strukturen: Die Funktion ist winzig! Ein Function‑Objekt besteht aus einem Pointer auf den Code, einem Pointer auf das Environment und ein paar Flags. Das ist lächerlich klein.

Wie „billig“ das wirklich ist, kannst Du Dir im Task-Manager der Entwickler-Tools Deines Browsers anschauen. Spoiler: Für „billige“ Garbage Collection sieht man die im Normalfall aber ziemlich prominent als bekanntes „Sägezahn“-Muster im Speicherbedarf als Funktion der Zeit.

Und zusätzlich: Meine Schleife iteriert an dieser Codeposition im Mittel 6 mal. Ich nehme mal als äußerste Sicherheit 10 mal. Öfter kann sie nicht laufen, weil die Eingabe nur aus max. 10 Zeilen besteht. Selbst Wozniaks' und Jobs erstes Wischkastl hätte das mitgemacht und parallel dazu noch Doodle Jump gespielt, wenn es das zu der Zeit bereits gegeben hätte :-)

Das Problem ist, dass jeder Entwicklerin so denkt und sich dann eben die Schlurigkeit/Nachlässigkeit/Ignoranz summiert, multipliziert oder im schlimmsten Fall potenziert. Das war mit die erste wichtige Sache, die ich in meiner Informatik-Laufbahn gelernt habe – neben „kaum macht man's richtig, geht's.“

Viele Grüße
Robert

0 79

Große JS-Dateien

fischlak
  • javascript
  • software
  1. 0
    Rolf B
    1. 0
      fischlak
      1. 0
        Rolf B
        1. 0
          fischlak
          1. 0
            Felix Riesterer
            1. 0
              fischlak
              1. 0
                Felix Riesterer
                1. 0
                  fischlak
                  1. 1
                    Rolf B
                    1. 0
                      fischlak
                      1. 0
                        Rolf B
                        1. 0
                          fischlak
                    2. 0
                      Hawk
                      1. 0
                        Rolf B
                        1. 0
                          fischlak
                        2. 0
                          Hawk
                        3. 0
                          fischlak
                          1. 0
                            Rolf B
                            1. 0
                              fischlak
                              1. 0
                                Felix Riesterer
                              2. 0
                                Felix Riesterer
                            2. 0
                              fischlak
                              1. 1
                                Rolf B
                                1. 0
                                  fischlak
                                  1. 0
                                    Felix Riesterer
                                    1. 0
                                      fischlak
                                      1. 0
                                        Felix Riesterer
                                        1. 0
                                          fischlak
                                        2. 0
                                          fischlak
                                      2. 0
                                        Rolf B
                                        1. 0
                                          fischlak
                                        2. 0
                                          Robert B.
                                          • javascript
                                  2. 0
                                    Robert B.
                                    • javascript
                                    • performance
                                    • software
                                    1. 0
                                      fischlak
                                      1. 0
                                        Felix Riesterer
                                        1. 0
                                          fischlak
                                        2. 0
                                          fischlak
                                          1. 0
                                            Julius
                                            • editor
                                            • microsoft
                                            • software
                                            1. 0
                                              fischlak
                                          2. 0
                                            encoder
                                            1. 0
                                              fischlak
                                              1. 1
                                                Felix Riesterer
                                                1. -2
                                                  fischlak
                                                  1. 0
                                                    Felix Riesterer
                                                    1. 0
                                                      fischlak
                                                  2. 0
                                                    encoder
                                                    1. -1
                                                      fischlak
                                                2. 0
                                                  fischlak
                                                3. 0
                                                  fischlak
                                                4. 0
                                                  fischlak
                                                5. -1
                                                  fischlak
                                                6. -1
                                                  fischlak
                                      2. 0
                                        Felix Riesterer
                                        1. 0
                                          fischlak
  2. 0
    encoder
    1. 0
      fischlak
      1. 0
        Felix Riesterer
        1. 0
          Rolf B
          1. 0
            Gunnar Bittersmann
            • css
            • html
            • test
            1. 0
              Rolf B
              1. 0
                Gunnar Bittersmann
        2. 0
          fischlak
          1. 0
            Rolf B
    2. 0
      fischlak
      1. 0
        Felix Riesterer
        1. 0
          fischlak
      2. 0
        Rolf B
        1. 0
          fischlak
          1. 1
            Rolf B
            1. 0
              fischlak
              1. 0
                Rolf B
                1. 0
                  fischlak
                  1. 0
                    Felix Riesterer
                    1. 0
                      fischlak
                      1. 0
                        Felix Riesterer
                        1. 0
                          fischlak
            2. 0
              MudGuard
        2. 0
          ottogal