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

    un require_once piu' veloce

    Ho trovato questo codice in giro:

    codice:
    <?php
    class includeWrapper{
        public static $paths = array();
        public static function includeOnce($path_file){
            if(!isset(self::$paths[$path_file])){
                include($path_file);
                self::$paths[$path_file] = true;
            }
        }
        public static function requireOnce($path_file){
            if(!isset(self::$paths[$path_file])){
                require($path_file);
                self::$paths[$path_file] = true;
            }
        }
        // just for testing
        public static function getPaths(){
            return self::$paths;
        }
    }
    ?>
    che va utilizzato ad esempio cosi':
    codice:
    <?php
    require("includeWrapper.class.php");
    includeWrapper::requireOnce("test.php");
    ?>
    L'idea e' molto interessante e questa "versione" del codice e' sicuramente piu' veloce, soprattutto per me che faccio un grande uso di include e require. Ha pero' un pessimo bug che praticamente lo rende inutile: le variabili e le classi eventualmente definite negli include file per ovvie ragioni di scope nn risultano definite fuori dalla funzione wrapper

    qualche idea su come si possa risolvere il problema?
    Gabriele B. - http://9thcircle.it

  2. #2
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    A occhio e croce dubito che si possa risolvere il problema, ma ti volevo chiedere perchè pensi che sia sicuramente più veloce?

  3. #3
    Originariamente inviato da fabi080
    A occhio e croce dubito che si possa risolvere il problema, ma ti volevo chiedere perchè pensi che sia sicuramente più veloce?
    Già, me lo chiedo anche io: perchè dovrebbe essere più veloce un controllo effettuato tramite proprietà di un oggetto interpretato in PHP piuttosto che una corrispondente funzione nativa precompilata dal c? Così a occhio io direi che dovrebbe essere più LENTA...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  4. #4
    beh...era nei commenti della documentazione di php.net...in genere nn dicono mai balle, li'

    anche io all'inizio mi sono domandato se fosse o meno piu' veloce. Avevo intenzione di fare un po' di benchmark, infatti...ma prima volevo farla funzionare ^^'
    Gabriele B. - http://9thcircle.it

  5. #5
    Uhm, a me non convince molto...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  6. #6
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Considera che il motore php è scritto in C, il linguaggio più veloce che esista (assembler escuso), e credo che una verifica fatta in C sui file descriptor aperti nel processo di elaborazione dello script php è sicuramente più veloce di una verifica fatta su un array associativo in un linguaggio interpretato, all'interno di un oggetto che deve essere costruito (notare l'overhead aggiuntivo).

    La mia convinzione è che l'implementazione di chi ha programmato php è più veloce, altrimenti perchè usare le funzioni del linguaggio, e non riscriverle (in php) per cercare di migliorarne l'efficienza?

  7. #7
    u take the point! grazie delle info

    un problema in meno
    Gabriele B. - http://9thcircle.it

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.