Performance der Referenzen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Performance der Referenzen

    Ich bin gerade wieder mal dabei, aus
    einem Script das letzte an Performance heraus zu holen.

    Um mir die ständige Variablenübergabe zu sparen
    ( kostet ja Zeit ) habe ich mir eine Containerklasse gebaut.
    Diese Klasse hält alle Variablen wie $_GET,$_POST ... .
    Außerdem hält sie Verweise auf andere Klassenobjekte.

    Was ist innerhalb einer Funktion einer beliebigen Klasse
    dann besser ? Direkt das Object der "Tools" Klasse zu nutzen,
    oder im Konstruktor Referenzen auf die benötigten Teile der
    "Tools" Klasse anzulegen.

    Also so:

    PHP-Code:
    function KONSTRUKTOR(&$_tools){
       
    $this->tools = & $_tool;
    }
    function 
    abc(){
       
    $this->tools->meinObject->machewas($param);

    oder Referenz im Konstruktor, und dann
    PHP-Code:
    function KONSTRUKTOR(&$_tools){
       
    $this->meinObject = & $_tool->meinObject;
    }
    function 
    abc(){
       
    $this->meinObject->machwas($param);

    ???

    PS: das ganze ist jetzt reiner OO Code ! Und rennt
    mehr als doppelt so schnell wie prozeduraler Code
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

  • #2
    ich versteh dich so, dass du hören willst welcher zugriff shcneller is
    $this->tools->meinobject oder $this->meinobject

    ich gehe mal davon aus, dass in $tools noch mehr als nur meinObject vorhanden ist
    wenn du auch mehr als nur meinObject nutzen willst, dann übergib ne referenz auf $tools, alle sandere macht ja keinen sinn

    wenn du nur meinObject nutzen willst, warum machst du's dann nich so?
    PHP-Code:
    function KONSTRUKTOR(&$_meinObject){
       
    $this->meinObject = & $_meinObject;
    }

    function 
    abc(){
       
    $this->meinObject->machwas($param);

    der gute herr php übergibt dir ja die speicheradresse von $_tools. wenn du jetzt nur mit meinObject arbeiten willst, müsste er doch dann an die in $this->_tools gespeicherte adresse springen und da dann runtergehen bis zum Attribut meinObjekt (wahrscheinlich auch ne referenz oder?)
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      ne Referenz auf $tools wird sowieso übergeben,
      doch macht es Sinn, bei mehreren Zugriffen auf
      $tool->meinObject nochmal

      $this->meinObject = & $this->tools->meinObject;

      zu substituieren ?
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar


      • #4
        du arbeitest also mit mehr als nur $tools->meinobject?

        ich könnte mir vorstellen, dass es schneller geht, wenn php nich zu adresse x ($this->tools) und von da zu adresse y ($this->tools->meinobject) springen muss sondern direkt zu adresse y ($this->meinobject) springen kann

        aber wenn du auch noch $tools->meinzweitesobject benötigst, stellt sich die frage ob der geschwindigkeitsvorteil dieser substitution durch den nachteil des erhöhten speicherverbrauchs nicht evtl. kompensiert wird

        aber es wird sich da wahrscheinlich eh nur um pikosekunden oder so handeln
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Original geschrieben von mrhappiness
          aber es wird sich da wahrscheinlich eh nur um pikosekunden oder so handeln
          Ich will ja nicht gierig erscheinen,
          aber diese will ich auch haben
          TBT

          Die zwei wichtigsten Regeln für eine berufliche Karriere:
          1. Verrate niemals alles was du weißt!


          PHP 2 AllPatrizier II Browsergame

          Kommentar

          Lädt...
          X