Knut: Array durchsuchen - Performance

Wie arbeiten array_keys und array_search intern? Leider steht dazu nichts im Handbuch. Sind die Suchen optimiert (es geht um sehr große Arrays, die nicht in einer Datenbank gespeichert werden sollen)? Arbeiten diese Funktionen das Array iterativ Element für Element ab? Würde es sich lohnen, für diese beiden Funktionen das zu durchsuchende Array vorzusortieren (z. B. alphabetisch)? Oder doch lieber gleich eine eigene Binärsuche schreiben?

  1. Hallo Knut.

    Wie arbeiten array_keys und array_search intern?

    Das kannst du dir selbst beantworten, wenn du im PHP-Quellverzeichnis in die Datei ext/standard/array.c schaust und nach array_keys und array_search suchst.

    Leider steht dazu nichts im Handbuch. Sind die Suchen optimiert (es geht um sehr große Arrays, die nicht in einer Datenbank gespeichert werden sollen)?

    Diese Frage kann dir wohl nur ein PHP-Entwickler beantworten, weshalb du dich besser an eine entsprechende Mailingliste wendest.

    Arbeiten diese Funktionen das Array iterativ Element für Element ab?

    Obgleich Zend-interne Funktionen zum Einsatz kommen, sieht der Code stark danach aus, ja.

    Einen schönen Sonntag noch.

    Gruß, Mathias

    --
    ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
    debian/rules
    1. Hallo Mathias.

      Das kannst du dir selbst beantworten, wenn du im PHP-Quellverzeichnis in die Datei ext/standard/array.c schaust und nach array_keys und array_search suchst.

      Diese Datei finde ich leider nicht (unter Windows).

      Leider steht dazu nichts im Handbuch. Sind die Suchen optimiert (es geht um sehr große Arrays, die nicht in einer Datenbank gespeichert werden sollen)?

      Diese Frage kann dir wohl nur ein PHP-Entwickler beantworten, weshalb du dich besser an eine entsprechende Mailingliste wendest.

      »»

      Ok, danke.

      Arbeiten diese Funktionen das Array iterativ Element für Element ab?

      Obgleich Zend-interne Funktionen zum Einsatz kommen, sieht der Code stark danach aus, ja.

      Hatte ich befürchtet.

      FG
      Knut

      1. Hallo Knut.

        Das kannst du dir selbst beantworten, wenn du im PHP-Quellverzeichnis in die Datei ext/standard/array.c schaust und nach array_keys und array_search suchst.

        Diese Datei finde ich leider nicht (unter Windows).

        Hierfür musst du dir natürlich erst einmal die PHP-Quellen herunterladen.

        Einen schönen Sonntag noch.

        Gruß, Mathias

        --
        ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
        debian/rules
        1. Hallo.

          Das kannst du dir selbst beantworten, wenn du im PHP-Quellverzeichnis in die Datei ext/standard/array.c schaust und nach array_keys und array_search suchst.

          Diese Datei finde ich leider nicht (unter Windows).

          Hierfür musst du dir natürlich erst einmal die PHP-Quellen herunterladen.

          Jetzt kann ich Dir erst folgen. Ich soll den Sourcecode analysieren. Damit bin ich wahrscheinlich überfordert, aber anschauen kann ich mir das ja trotzdem. Ist in C++ geschrieben, oder?

          FG
          Knut

          1. Hallo Knut.

            Jetzt kann ich Dir erst folgen. Ich soll den Sourcecode analysieren. Damit bin ich wahrscheinlich überfordert, aber anschauen kann ich mir das ja trotzdem. Ist in C++ geschrieben, oder?

            Nein, in C.

            Einen schönen Sonntag noch.

            Gruß, Mathias

            --
            ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
            debian/rules