Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    istanziazione di una classe rallenta il codice

    Salve a tutti,
    ho notato che l'istanziazione di una classe (sebbene ripetuta tantissime volte) rallenta enormemente il codice, di circa 20 secondi.

    Questo il codice dell'istanziazione :
    codice:
    foreach ($subsubsql as $subsubrow) {
     $m_a = new ProspectMatrixAnswer($subsubrow["Id_Colonna"], $subsubrow["Id_Riga"], $subsubrow["Id_Risposta"], $subsubrow["Text"], $subrow["Extra_Text"]);
    }
    Questo il codice della classe:
    codice:
    class ProspectMatrixAnswer
    {
      private $id_risposta;
      private $enabled = true;
    
      private $text;
    
      private $id;  //id della colonna della matrice
      private $row; //id della riga della matrice
    
      private $is_file;
      private $file;
    
      private $extra_text;
    
      function __construct($idA, $rowA, $id_rispostaA = -1, $textA = "", $extra_textA = "") {
        $this->id = $idA;
        $this->row = $rowA;
        //$this->id_domanda = $id_domandaA;
        //$this->codice_domanda = $codice_domandaA;
        $this->id_risposta = $id_rispostaA;
        $this->text = $textA;
        $this->extra_text = $extra_textA;
      }
    
      function getId() { return $this->id; }
      function getRow() { return $this->row; }
      function getAnswer() { return $this->id_risposta; }
      function getText() { return $this->text; }
      function getExtraText() { return $this->extra_text; }
      function getId_Domanda() { return $this->id_domanda; }
      function getCodice_Domanda() { return $this->codice_domanda; }
      function getEnabled() { return $this->enabled; }
      function setEnabled($enabledA) { $this->enabled = (bool)$enabledA; }
      function setIs_File($is) { $this->is_file = $is; }
      function getFile() { return $this->file; }
    
      function AddFile($files = array()) {
        $this->is_file = true;
        $this->file = new ProspectAnswerFile($files);
      }
    }
    Se sostituisco l'istanziazione di questa classe con una classe vuota, il codice non subisce rallentamenti (con lo stesso numero di cicli).

    Come mai questa classe mi rallenta così tanto? Non faccio altro che chiamare il suo costruttore.

    Qualche aiuto pls.

    Grazie

  2. #2
    codice:
    private $id;  //id della colonna della matrice
      private $row; //id della riga della matrice
    forse perchè è un ciclo for di una matrice e quindi crei troppi oggetti e il sistema non ce la fa a crearli velocemente? Ovviamente parlo di oggetti valorizzati, problemi di memoria probabilmente?

    nello specifico sia la classe che il foreach non mi sembrano "scritte male"
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Originariamente inviato da Santino83_02
    codice:
    private $id;  //id della colonna della matrice
      private $row; //id della riga della matrice
    forse perchè è un ciclo for di una matrice e quindi crei troppi oggetti e il sistema non ce la fa a crearli velocemente? Ovviamente parlo di oggetti valorizzati, problemi di memoria probabilmente?

    nello specifico sia la classe che il foreach non mi sembrano "scritte male"
    Può essere anche un problema di memoria, non capisco. Non riesco a risolvere il problema. Qualche suggerimento?

  4. #4
    prova senza passare
    codice:
    , $subsubrow["Text"], $subrow["Extra_Text"]
    al costruttore


    ma di quanti oggetti parliamo? cioè più o meno quanti sono i cicli che fai?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Originariamente inviato da Santino83_02
    prova senza passare
    codice:
    , $subsubrow["Text"], $subrow["Extra_Text"]
    al costruttore


    ma di quanti oggetti parliamo? cioè più o meno quanti sono i cicli che fai?
    Provato senza passare gli ultimi due valori, ma il risultato è lo stesso .

    I cicli sono più o meno 10000.

  6. #6
    sai che sono tantini 10K giri + 10K oggetti istanziati?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Originariamente inviato da Santino83_02
    sai che sono tantini 10K giri + 10K oggetti istanziati?
    Infatti ho mezzo risolto utilizzando gli array invece degli oggetti.

    Rimane un pò lento, ma la metà di prima. Grazie per l'aiuto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.