Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762

    [Performance PHP] Variabili ed array. C'è differenza? Quali?

    Ciao a tutti,

    stavo riflettendo su una cosa.

    Come ben sappiamo, per semplificarci la vita viene separata la logica dal markup. Magari si ha un file php che gestisce i link da mandare a video, <title> delle pagine, etc.

    Mi chiedevo se ci fossero differenze tra le due modalità di impostazione di output dei dati.

    Chiarisco meglio il concetto con due esempi di codice.
    ------------------------------------------------------------------------------------

    Poniamo il caso di dover configurare il settaggio delle voci di un menu principale di pagina.

    Espongo i due metodi.

    Utilizzo di variabili singole
    Codice PHP:
    <?php

     $var_menu_1 
    'Homepage';
     
    $var_menu_2 'Categorie';
     
    $var_menu_3 'About';
    ?>

    <ul>[*]<?php echo $var_menu_1?>[*]<?php echo $var_menu_2?>[*]<?php echo $var_menu_3?>[/list]
    ..oppure..

    Utilizzo di Array
    Codice PHP:
    <?php

     $var_menu 
    = array('Homepage''Categorie''About');
    ?>

    <ul>[*]<?php echo $var_menu[0]; ?>[*]<?php echo $var_menu[1]; ?>[*]<?php echo $var_menu[2]; ?>[/list]

    Ecco, dati i due metodi (utilizzo di variabili singole e array)...mi chiedo:

    - C'è una differenza di performance tra i due metodi? Uno dei due "stampa a video" prima dell'altro?


    Spero di essermi spiegato al meglio.

  2. #2
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    al fine di visualizzare le tue 3 variabili non c'è nessuna differenza
    diversamente è da preferire l'array

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Allora ho fatto la scelta corretta :-)

    Ti ringrazio per il chiarimento

  4. #4
    Originariamente inviato da homerbit
    diversamente è da preferire l'array
    e perchè uno dovrebbe preferire un array scusa? anzi l'array come struttura è sicuramente più pesante di una variabile, quindi tendenzialmente dovresti usare la variabile

    resta il fatto che in termini di prestazioni e memoria non c'è differenza apprezzabile, quindi usa quello che ti pare
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    scusate, ma solo dopo aver risposto ho relizzato che la domanda era relativa anche alle prestazioni in generale.
    L'array, detto in parole povere è più "dispendioso": allocazione (in questo caso dinamica),accesso,ricerca e stampa. Cmq lo studi della complessità di un algoritmo va fatta nel suo complesso e si cerca di raggiungere un compromesso tra efficenza e progettazione

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Grazie a tutti. Mi sa che dovrò trovare un compromesso si ..che du OO a dover scrivere tutte le variabili ($var_menu_1, $var_menu_2, etc) ..mi era comodo il caro $var_menu[0], etc.

    No pain, no gain


  7. #7
    Ma figuriamoci, differenza di performance. Sfido chiunque a percepire i nanosecondi che separano le due soluzioni (sempre che ce ne siano). Se ti servono ottimizzazioni dell'ordine di grandezza dei cicli di clock della CPU, allora PHP e' di sicuro il linguaggio sbagliato.

    Scrivi codice chiaro, ordinato, sicuro e mantenibile. La programmazione web richiede priorita' diverse dalla programmazione di driver hardware o di motori grafici 3D.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Si si, si parla di ambito web. Nello specifico mi riferisco all'impostare i "piccoli" testi del contenuto di una pagina nella versione italiana ed inglese.

    Quindi avrò, ad esempio per le voci del menu, il seguente controllo per inviare l'output (di lingua) corretto:

    Codice PHP:
    $location $_SERVER['PHP_SELF'];

    switch(
    $location) {

     case 
    '/sito/it/index.php':
      
    $voci_menu = array('Home','Chi sono','Portfolio','Lingua';
      break;

     case 
    'sito/en/index.php':
      
    $voci_menu = array('Home','About','Portfolio','Language';
      break;

     default:
      
    $voci_menu = array('Home','About','Portfolio','Language';
      break;


    Mi riferivo proprio a questo quindi. Dato che questo file controlla in quale pagina ci si trova, esso in base alla "location" ti invia l'output di testo corrispondente. E dato che è un file che gestisce l'output generale allora mi chiedevo robe sulla performance.

    Domanda: il mio approccio è corretto oppure è consigliabile un altro metodo di impostazione per l'output dei contenuti testuali (e non)?

  9. #9
    Originariamente inviato da wartpro
    E dato che è un file che gestisce l'output generale allora mi chiedevo robe sulla performance.
    Ecco, non ti chiedere questo genere di robe sulla performance, sono cose totalmente irrilevanti su cui curiosamente un sacco di gente si fissa, quando magari il resto del codice e' tutt'altro che ottimizzato in maniera molto piu' grave.

    Originariamente inviato da wartpro
    Domanda: il mio approccio è corretto oppure è consigliabile un altro metodo di impostazione per l'output dei contenuti testuali (e non)?
    Dipende, ci sono un sacco di modi. Questo in particolare mi sembra molto macchinoso e tutt'altro che ottimale. Il sistema migliore - a mio avviso - e' usare qualche sistema di routing possibilmente in un pattern MVC, dove un componente si occupa di instradare la richiesta e poi gli specifici controller (o azioni dei controller) gestiscono cosa deve essere stampato nell'output.

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Mh. Non sono ancora arrivato al livello "MVC"

    Dall'ultimo consiglio ricevuto qui (separare la logica dal markup) mi sto muovendo creando blocchi di pagina (ad esempio: menu principale..e variabili php contententi il nome delle voci; colonna di sinistra..con blocchi tipo "archivio", "newsletter"; etc).

    Hai ragione sul fatto che non è ottimale..perchè in ogni case dello switch sono dovuto andare a scrivere le variabili (sto togliendo gli array..noto una mmmmmmiiini differenza di rendimento in meglio ).

    Allora mi domando nuovamente: meglio creare uno switch iniziale che si prende la location di pagina...e in base al case inviare/includere un ulteriore file con un ulteriore switch (o altro) che gestisca il settaggio delle variabili? [[ sono questi i controller? ]]

    Però..con tutti sti switch.. (ANCORA) ..non rallento la situazione?

    Grazie mille kappa

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.