Andreas: if() abfragen und belastbarkeit

Sind 20000 bedingungen in einer javascript if() clause zu viele oder wirds da bei der ausführung des scriptes probleme geben?
ungefähr so:
if(
 (document.entryform.blabla1.value == "") ||
 (document.entryform.blabla2.value == "") ||
 (document.entryform.blabla3.value == "") ||
 (document.entryform.blabla4.value == "") ||
 (document.entryform.blabla5.value == "") || .. || .. || ..
)

Bitte fragt nicht wie ich an die 20000 bedingungen komme (php..).

Wenn jmd. ne ahnung hat wo da die grenze ist wäre es nett wenn man das posten könnte, danke :)

  1. Hallo!

    Javascript wird lokal auf dem Rechner ausgeführt. Wenn Du also 2000 Bedingungen checks hängt es von der Rechnerperformance ab, den der User hat. Klar hängt es auch von deinem Script ab, wie gut du es machst, aber eher doch von der Performance des Rechners (mal angenommen alles ist sauber geprogged und so).

    Mach doch mal einen Versuch bei Dir lokal und dann schau wieviel Sekunden/Minuten es dauert. Dann denke an die Nutzer, die keinen Athlon XP 2000+ oder so haben und dann müsstes Du selbst drauf kommen.

    Simon

  2. Hallo,

    Wenn jmd. ne ahnung hat wo da die grenze ist wäre es nett wenn man das posten könnte, danke :)

    Ich weiß nicht wie es theoretisch aussieht, aber praktisch hängt es vom Client Rechner ab, und ich frage mich in wie weit ein schwacher PC mit so großen if-Abfragen zurecht kommt. Trotzdem, wozu brauchst du 20000 if-Abfragen? Ich bin mir sicher es gibt bessere Wege zu erfragen of alle Felder leer sind oder nicht .

    gruß,
    Severin

    --
    Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
    --Philip K. Dick
  3. Moin!

    Sind 20000 bedingungen in einer javascript if() clause zu viele oder wirds da bei der ausführung des scriptes probleme geben?

    Kann es natürlich. Ich persönlich halte sowas, wie du es generierst, nicht gerade für sinnvoll.

    ungefähr so:
    if(
     (document.entryform.blabla1.value == "") ||
     (document.entryform.blabla2.value == "") ||
     (document.entryform.blabla3.value == "") ||
     (document.entryform.blabla4.value == "") ||
     (document.entryform.blabla5.value == "") || .. || .. || ..
    )

    Du kannst die ganze Sache erheblich Quellcode-sparender (der will schließlich auch über die Leitung) mit einer Schleife lösen.

    var i = 0;
    var endwert = 20000; // oder was auch immer
    var ergebnis = false;
    while ((i<endwert) && !ergebnis)
    {
      ergebnis = ergebnis || (document.entryform.elements['blabla'+i].value == "");
    }

    if (ergebnis)
    {
      //Hier das, was du tun willst...
    }

    Das ist _wesentlich_ kürzer, als 20000 Bedingungen durch die Gegend zu pusten.

    Und die Schleife bricht, genau wie auch bei der IF-Bedingung, dann ab, wenn das Ergebnis der OR-Verknüpfung feststeht, nämlich beim ersten Fund, bei dem die Bedingung wahr ist (short circuit Logik). Das spart Performance.

    PS: Der Code ist ungetestet und bedarf sicherlich noch einer Anpassung.
    PPS: Für AND-Verknüpfungen muß die ganze Geschichte logisch "andersherum" benutzt werden. "This is left as an exercise to the reader." :)

    - Sven Rautenberg

    --
    SELFTREFFEN 2003 - http://selftreffen.kuemmi.ch/
    ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
  4. Moin!

    Sind 20000 bedingungen in einer javascript if() clause zu viele oder wirds da bei der ausführung des scriptes probleme geben?

    Das sind 44*20.000 Bytes oder 44*20kb=880kb die jedesmal zu übertragen sind... dazu der geringe Rest der Seite. Meinst Du nicht, daß allein das zu Problemen führen wird?

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Meinereinerselbst ist auf der Suche nach Aufträgen