Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    @gianaz: no, chiavi numeriche non le posso usare, perché abbiamo progettato la classe in modo da avere precisi suffissi in base a quello che la variabile contiene (P=>info sui prodotti, U=>info sull'utente etc...)

    @piero.mac: ah, quindi essendo il foreach il più veloce posso lasciarlo tranquillamente così senza avere rimorsi di coscienza





    Grazie ad entrambi
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #12
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da piero.mac
    per scorrere un array il piu' veloce e' il foreach. Si erano fatte prove tempo fa al proposito ed il foreach e' risultato sempre il piu' rapido di tutti.
    Mbho a dire il vero leggendo qua è la (compresa la guida della Zend) tutti dicono che il foreach è + lento perchè deve fare una copia dell'array, poi non ho mai provato...

    Ciao

  3. #13
    io ho fatto un po' di prove, ma non so quanto possano essere attendibili, comunque vi posto i risultati. Ho creato e popolato un array di 10000 elementi con numeri da 1 a 10000 appunto.

    Poi ho fatto 2 cicli distinti facendo scrivere l'array:
    - for: 1.643368 secondi
    - foreach: 1.485619 secondi


    ho fatto comunque diverse prove e il foreach risultava sempre minore. C'è da dire che ho utilizzato un array contenente solo numeri, non ho fatto prove su array bidimensionali e/o con chiavi associative.
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  4. #14
    Originariamente inviato da gianiaz
    Mbho a dire il vero leggendo qua è la (compresa la guida della Zend) tutti dicono che il foreach è + lento perchè deve fare una copia dell'array, poi non ho mai provato...

    Ciao
    mi pare che proprio And3a si era messo di buzzo buono ed aveva eseguito delle prove. Il for era pure piu' lento del while. In ogni caso era sesso degli angeli. Meglio usare una procedura buona per tutte le stagioni (leggi indici di array) mentre il for deve essere calibrato ...

    Penso si trattasse di una prova con indici associativi. volendo pero' si puo' riprovare anche se credo inutilmente.... si trattava appunto di debolissime differenze.

    while non copia l'array ma richiama poi altre funzioni che ne annullano la miglior performance teorica. il ciclo for dipende da cosa deve fare/gestire. In assoluto pero' il piu' semplice da gestire rimane il foreach. Al limite qualche millisecondo lascia il tempo che trova, appunto ms.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #15
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da piero.mac
    mi pare che proprio And3a si era messo di buzzo buono ed aveva eseguito delle prove. Il for era pure piu' lento del while. In ogni caso era sesso degli angeli. Meglio usare una procedura buona per tutte le stagioni (leggi indici di array) mentre il for deve essere calibrato ...

    Penso si trattasse di una prova con indici associativi. volendo pero' si puo' riprovare anche se credo inutilmente.... si trattava appunto di debolissime differenze.

    while non copia l'array ma richiama poi altre funzioni che ne annullano la miglior performance teorica. il ciclo for dipende da cosa deve fare/gestire. In assoluto pero' il piu' semplice da gestire rimane il foreach. Al limite qualche millisecondo lascia il tempo che trova, appunto ms.
    Grazie per il chiarimento.

    In effetti poi per sentito dire ho consigliato il for anzichè il foreach, ma in effetti per comodità mi capita piu spesso di usare il foreach.

    Comunque tanto per la cronaca, questo testo è estratto dal volume per la certificazione della zend (che vorrei fare), e parla proprio del foreach (ecco da dove arrivava la mia convinzione)

    Although it is very practical—which makes using it extremely tempting—there is onemajor drawback to this construct:It works by creating a copy of the array and making allits assignments by value.This means two things:First,you can’t change the value of anarray element simply by modifying the value variable created by the loop construct atevery step.If you want to change the value of an array element,you will have to makesure that you retrieve the key of each element as well and make the change explicitlyinto the array itself
    [...]
    The second problem is the fact that the entire array must be duplicated can spell disasterfor your script’s performance—both in terms of CPU and memory usage,and particu-larly if you’re dealing with a large array that is changed throughout the loop.
    Tra l'altro è abbastanza tragico nel giudizio, parla addirittura di: disaster for your script’s performance



  6. #16
    Originariamente inviato da gianiaz

    Tra l'altro è abbastanza tragico nel giudizio, parla addirittura di: disaster for your script’s performance


    Non sono aggiornati .....

    Nota: A meno che la matrice non sia per riferimento, foreach agisce su una copia e non sulla matrice stessa. Pertanto il puntatore dell'array originale non viene modificato come accade utilizzando la funzione each() e le modifiche agli elementi dell'array non appaiono nell'array originale. Tuttavia il puntatore interno della matrice originale viene avanzato durante l'elaborazione della matrice. Se si assume che il ciclo foreach giunga al termine, allorasi avrà che il puntatore interno della matrcie sarà al termine della matrice stessa.

    Dal PHP 5 si può modificare facilmente gli elementi di una matrice anteponendo & a $value with &. Questo assegna un riferimento anzichè copiare il valore.

    Codice PHP:
    <?php
    $arr 
    = array(1234);
    foreach (
    $arr as &$value) {
       
    $value $value 2;
    }
    // $arr vale ora array(2, 4, 6, 8)
    ?>

    Questo è possibile soltanto se l'array indicato può essere referenziato (ad esempio è una variabile).
    http://it.php.net/manual/it/control-...es.foreach.php

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #17
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da piero.mac
    Non sono aggiornati .....
    si in effetti lo dicono anche nella premessa, la certificazione verte alla versione 4 del php.

    ciao

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 © 2026 vBulletin Solutions, Inc. All rights reserved.