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

    [A RACCOLTA] Realizzazione benchmark per template engine

    NOTA: ricordatevi che la realizzazione di questi piccoli benchmark, alla fin fine, da la possibilità anche a voi di utilizzare software migliore e più veloce e per chi sa usare il proprio template engine preferito ci vogliono 10 minuti a fare i test

    Hola a todos

    ho parzialmente sviluppato una piattaforma di misurazione delle performance, ovvero viene lanciato del codice che si occupa di effettuare le operazioni richieste e queste vengono misurate poi e da li vengono generate tabelle riassuntive.

    Il codice che ho scritto è abbastanza semplice e flessibile nel contempo. Ovviamente i risultati non sono assoluti e DEVONO, come per ogni benchmark, essere confrontati esclusivamente con gli altri valori dello stesso benchmark (un processore, la memoria, l'occupazione del sistema operativo e tanta altra roba impediscono una comparazione esatta di benchmark eseguiti su macchine diverse ... nel caso si costruisca un sistema di testing ad hoc la cosa è ben diversa)

    Chi cerco?

    Cerco gente che sappia usare BENE (o abbastanza bene) un dato template engine e sia quindi in grado di scrivere del codice che testa, effettuando una serie di operazioni ben precise (eventualmente poi il codice lo riscrivo per farlo il più possibile simile ad altri).

    Cosa fare?

    Se siete REALMENTE interessati basta che postiate qua il nome del template engine, in grassetto, dove recuperare i sorgenti, e poi il vs. codice di benchmark con allegato il template che usate per il testing.

    Attualmente direi di non scrivere roba troppo complessa onde evitare di perdere tempo inutilmente. Le linee guida sono queste:
    - Vanno usati foreach e non while+each+list o while+next+current e cosi via perché gli ultimi due sono molto più "esosi" a livello di risorse di processore
    - I template realizzati devono avere uno schema ben preciso che sarà riportato sotto
    - I template engine utilizzati dovranno permettere, all'interno dello stesso template, di utilizzare blocchi differenti, nel senso che deve essere possibile visualizzare blocchi di codice html diversi in base a specifiche condizioni
    - Il codice DEVE essere commentato
    - Deve funzionare con le estensioni standard di PHP (l'unica eccezzione è per xslt)

    Ci sono anche dei bonus:
    - I template engine che, in qualche modo, danno la possibilità di richiamare funzioni di php o elaborare le variabili avranno un bonus perché semplificano la separazione della visualizzazione dall'elaborazione.
    - Un altro bonus e se permette di richiamare funzioni scritte dallo sviluppatori oltre alle funzioni proprie di elaborazione dei dati (il che non vuol dire che dentro il codice del template ci deve stare PER FORZA codice php ma che ad esempio ci sia la possibilità di richiamare funzioni da altri file php) perché permette con estrame semplicità, una situazione del genere, la separazione della visualizzazione dall'elaborazione (infatti nella cartella del tema un file potrebbe comprendere TUTTO il codice che serve per visualizzare specifici contenuti e il template engine, permettendo il richiamo, da la possibilità di non includere questo codice, a proprio, nel codice del sito [che magari essendo un CMS non è cosa buona])
    - La cache è un altro punto a favore, se questa però non è essenziale per il corretto funzionamento del template engine ... ovvero se il template engine gira un assoluto schifo senza cache allora non c'è nessun punto bonus
    - Un altro bonus ancora è dato, se il precedente punto sulla cache è valido, dal supporto a sistemi di caching delle variabili come memcache, sharedance, apc ed eaccelerator

    Struttura del template:
    Non ha importanza la dimensione, in byte, del template, l'importante è che all'interno ci stiano:
    - Almeno 100 variabili di cui 50 acquisite tramite normali set e altre 50 impostando un array come valore facendole leggere da li nel template (ergo verranno settate dal template engine 51 variabili)
    - Ci sia almeno una select con 100 elementi che utilizzi dei "blocchi" che a loro volta contengano dei blocchi condizionali per selezionare o meno delle specifiche voci ... in questo caso il blocco condizionale serve per far comparire o meno la voce selected="selected" nella option della select

    Nel caso il template engine lo supporti è possibile fornire anche un secondo template che contenga invece le chiamate a normali funzioni di php: per la precisione dovranno essere settate 40 variabili e, rispettivamente a gruppi di 10, i valori dovranno essere passati alle funzioni di php seguenti ovvero strtouppwer, strtolower, ucwords, ucfirst. Inoltre dovrà essere passato un array di 50 elementi da passare alla funzione usort che come funzione dovrà prendere la ucfirst.

    Per chi ha dubbi sulle funzioni di php riportate potete dare un occhio al manuale di php
    http://www.php.net/

    Il testo con cui impostare TUTTE le variabili deve essere il seguente
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus sem enim, euismod vel, vulputate et, hendrerit vitae, velit. Fusce rhoncus enim eu neque. In luctus est luctus nisl. Mauris enim. Donec imperdiet. Sed scelerisque, erat a consectetuer sagittis, lacus justo vestibulum sem, vitae vulputate mauris nibh eget mauris. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur varius laoreet nibh. Vivamus eget lorem. Duis iaculis, magna ac pellentesque mollis, urna metus ornare tellus, sit amet sodales neque nulla nec nisl. Praesent faucibus nisi eu dolor. Vivamus at dolor. Pellentesque fringilla lorem ut odio. Pellentesque semper vestibulum arcu. Phasellus magna.

  2. #2
    daniele, come CPU e sistemi differenti possono dare risultati diversi, due codici che producono diversi risultati possono fare altrettanto.

    Mi piace l'idea, e preparero' un caca-parser per mettere sul banco xslt, ma credo che per un 3D di "successo" tu debba fornirci i dati grezzi, array, variabili, oggetti, quello che vuoi, e la pagina finale desiderata.

    In questo modo confronti tempi di elaborazione, sviluppo, e puoi comparare anche la semplicita' in termini di implementazione, codice, altro.

    Per finire, essendo in era 2.0, dovresti anche isolare una o piu' porzioni della pagina risultante, e chiedere di ottenere quella sola select, ad esempio, utilizzando lo stesso sistema e sulla stessa quantita' di dati.

    Spero di essermi spiegato, ma aggiungo un piccolo esempio:
    codice:
    // dati grezzi
    $page = new stdClass;
    $page->title    = 'template BENCHMARK';
    $page->body   = 'template body';
    $page->select = array(1,2,3);
    codice:
    // pagina finale
    <html>
        <head>
            <title>Template Benchmark</title>
        </head>
        <body>
            <div>
                <span>Template Body</span>
                <select>
                    <option value="0">1</option>
                    <option value="1">2</option>
                    <option value="2">3</option>
                </select>
            </div>
        </body>
    </html>
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    è quello che vorrei fare infatti (fornire la varia roba schematica) solo che per adesso non avevo tempo

    al massimo poi il codice lo rendo simile io

  4. #4
    Originariamente inviato da daniele_dll
    è quello che vorrei fare infatti (fornire la varia roba schematica) solo che per adesso non avevo tempo
    bene, quindi quando tutti avremo dati "standard" da manipolare, per dare un senso a questo 3D, preparero' il caca-parser
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Cioè vorresti realizzare una tabella di comparazione per le velocità di elaborazione dei vari template engine?

    Se è questo è stato già fatto: Benchmark

    la pagina ci mette un po a caricarsi perchè effettua anche il benchmark...ma è molto utile.
    Administrator of NAMDesign.Net

  6. #6
    Setup

    Basically, benchmark loops the block with <var_count> variables and <text_length> plain text.

    The block is looped <block_count> times.

    Tune these params to model from simple variable replacement to pagination loops.

    The process is repeated <iterations> times to get the average.

    Extra first pass is used to make sure template caches worked before actual benchmark.
    a me interessa fare una cosa un pò più avanzata ma soprattutto controllando il codice di benchmark di ogni singolo test per template engine per assicurarmi che sia realmente ottimizzato al massimo

    il confronto standard lo ho già

    inoltre a me interessa testare anche la memoria e non lo posso fare dall'interno di uno script già eseguito che testa tutto

  7. #7
    aggiungerei che quel benchmark fa sorridere, poichè fa tutto tranne elaborare tempi effettivi tra caricamento librerie / classi, elaborazione oltre il semplice str_replace, e quindi, paradossalmente, non confronta affatto i template engines. Opinione personale, daniè sbrigati con sta struttura dati
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #8
    scusate ma da quello che vedo dai sorgenti del link che ho postato viene preparato un test per ogni template engine che sostituisce gli stessi dati però nelle modalità che ogni template adopera...


    non vedo string replace usati per tutti i template...anzi...
    Administrator of NAMDesign.Net

  9. #9
    non mi sono spiegato ... un benchmark su template engines che può essere sosttuito da str_replace, è un benchmark completamente inutile perchè non sta comparando NIENTE riguardo i template engines.

    Una pagina con 10 o mille milla varN non è una pagina da tutti i giorni, i template engines grazie al cielo sono molto più potenti ed un confronto ha senso solo se si crea qualcosa di ordinario, relativamente complesso.

    Se usiamo un qualunque template engine per fare una cosa che con str_replace è riproducibile, è stato completamente inutile scegliere un template engine. Meglio ora?
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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