Pagina 11 di 37 primaprima ... 9 10 11 12 13 21 ... ultimoultimo
Visualizzazione dei risultati da 101 a 110 su 366
  1. #101
    Originariamente inviato da skidx
    forse perché il Javascript fa anche gli oggetti in stile procedurale, non avendo le classi.
    Mhh... forse è il contrario, cioè anche le funzioni sono oggetti come gli altri
    per favore NIENTE PVT TECNICI da sconosciuti

  2. #102
    Originariamente inviato da Fabio Heller
    Avevo appena provato, ci speravo molto ma... non sembra dare benefici
    non su FireFox ... che adesso serializza come prima, ovvero più lento di IE che ora stà tra Opera ( 60 di average ) e FireFox ( 150 di average ) ... ovvero a 130 di average



    Originariamente inviato da Fabio Heller
    Mhh... forse è il contrario, cioè anche le funzioni sono oggetti come gli altri
    direi proprio di si ... sei stato tu stesso a dire che JS è basato su funzioni intese come oggetti
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #103
    Originariamente inviato da andr3a
    Fabio !!!! ..... Game Over
    http://www.devpro.it/code/102.html
    Aspetta...forse ho capito dove sta il problema del mio codice procedurale

    Ne ne riparliamo domani
    per favore NIENTE PVT TECNICI da sconosciuti

  4. #104
    Originariamente inviato da Fabio Heller
    Aspetta...forse ho capito dove sta il problema del mio codice procedurale
    Ne ne riparliamo domani
    quando vuoi, intanto ho diminuito di 600 millisecondi i tempi su IE, se sforni qualcosa di più veloce facciamo un missile terra aria

    e se trovo spunti per migliorare ancora la mia oltre a kenta alla cena vi invito anche gm
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #105
    Originariamente inviato da andr3a

    e se trovo spunti per migliorare ancora la mia oltre a kenta alla cena vi invito anche gm
    Non so se dia un risultato sensibile ma nei booleani questo

    return ('b:'+ Number(__s) +';');

    al posto di questo

    return ('b:'+(__s==false?'0':'1')+';');

    toglie una condizione
    per favore NIENTE PVT TECNICI da sconosciuti

  6. #106
    Originariamente inviato da Fabio Heller
    Non so se dia un risultato sensibile ma nei booleani questo
    ...
    toglie una condizione
    si, avevo notato il tuo metodo ... un terniario su booleano contro un cast ... non guadagno niente, c'avevo già provato

    (anzi, ho riprovato, perdo diversi millisecondi prezioni se casto)
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #107
    ragazzi adesso che mi sono divertito a vedervi gareggiare vi imbocco sulla strada giusta:

    http://www.websiteoptimization.com/speed/10/

    cosi' ora comincerete a usare gli switch al posto delle if e
    a rollarvi i for ->trasformandoli prima in do-while

    comunque non ho mai benchmarkato ma questi sono i cast in JS:
    BOOL :
    !!(*)
    STRINGA:
    ''+(*)
    NUMBER:
    0+(*)

  8. #108
    Originariamente inviato da kentaromiura
    ora comincerete a usare gli switch al posto delle if e
    a rollarvi i for ->trasformandoli prima in do-while
    beh, lo switch non è flessibile come un if, quindi non posso metterlo da nessuna parte, nel mio caso, però è stata la prima via per serializzare e deserializzare

    Per il discorso while come ti ho dettoho notato lievissimi miglioramenti solo in IE.
    In compenso ora ho riscritto la parte di deserializzazione, quell' if col do while è veramente illeggibile, ho preferito fare una cosa di questo tipo:
    codice:
    function PHP_UnSerializer__Common_ArrayObject (tmp) {
    	var a = this.__s.indexOf(':', 2);
    	var k = parseInt( this.__s.substr(2, (a-2))) + 1;
    	this.reduce((a+2));
    	while(--k)
    		tmp[this[this.__s.substr(0,1)]()] = this[this.__s.substr(0,1)]();
    	return tmp;
    }
    che ciclo a parte non è molto più leggibile, però mi evita di assegnare inutilmente chiave e valore in più passate e mi evita un if(if k != 0) sul do while ... vado direttamente in while(--k) aggiungendo un +1 sul parseInt, che ne pensi ? (mi fa da if(k!=0) e da while(--k) in un solo ciclo ... cool ?)



    Originariamente inviato da kentaromiura
    comunque non ho mai benchmarkato ma questi sono i cast in JS:
    BOOL :
    !!(*)
    STRINGA:
    ''+(*)
    NUMBER:
    0+(*)
    ti spiego .... il modo di Fabio fa questo

    return 'b:'+Number(var)+';'

    che è più leggibile e corto da scrivere ... ma cosa fa di fatto il JS ???

    fa un cast da oggetto o primitiva a Number, che schiaffato in mezzo ad una stringa deve per forza di cose riessere castato come tale o sfruttare in automatico il metodo toString();

    2 operazioni più lente se confrontate al mio modo, il quale usa un ternario ( comunque velocissimo ) su una condizione banale booleana e non richiede alcun cast ne alcun implicito toString
    'b:'+(__s==false?'0':'1')+';'
    semplicemente inserisce un carattere 0 o 1 nella stringa, fa un solo calcolo logico e non usa gli oggetti o un "doppio" cast.



    Per concludere, ho riaggiornato ... è tutto uguale, stò solo cercando di ottimizzare quanto più mi è possibile ... ma a questo punto, grazie agli incrementi spaventosi della serializzazione sono tornato al punto di partenza, la deserializzazione è troppo lenta, soprattutto su IE.

    Chi mi da un consiglio su come migliorare ?

    Io ho finito le idee
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #109
    usare il continue all'interno dei cicli ad esempio
    anziche un if che valida le successive operazioni
    (vale anche per Fa')
    codice:
    		if(!(n || (__s[b].constructor != Function && b != '__class'))) continue;//{
    		//if(n || (__s[b].constructor != Function && b != '__class')) {
    			ser[a++]=((!isNaN(b))?this.__number(b):this.__string(b))+
    			(n?this.__undefined():this[__s[b].constructor](__s[b]));
    		//}

    se vuoi provare anziche' a usare la negazione sull'if ad applicare il teorema di de morgan dei bluvertigo

    e guadagni un pelo con
    codice:
    function PHP_Serializer() {
    	if((''+Object).indexOf('(') != 16)
    		this.__cut = 9;
    	else
    		this.__cut = 10;
    }

  10. #110
    ed ora e' giunto il tempo di fare sul serio:

    ti mostro la prima implementazione al mondo del kenta Faster device
    (non esiste in giro):

    codice:
    function PHP_UnSerializer__Common_ArrayObject(tmp) {
    	var a = this.__s.indexOf(':',2);
    	var k = parseInt(this.__s.substr(2,(a-2))) + 1;
    	this.reduce((a+2));
    	
    	var testVal=k;
    	
    	if(parseInt(k/8)){
    		var n=k%8;
    		do{	
    			tmp[this[this.__s.substr(0,1)]()] = this[this.__s.substr(0,1)]();
    			--testVal;	
    			tmp[this[this.__s.substr(0,1)]()] = this[this.__s.substr(0,1)]();			
    			--testVal;	
    			tmp[this[this.__s.substr(0,1)]()] = this[this.__s.substr(0,1)]();
    			--testVal;	
    			tmp[this[this.__s.substr(0,1)]()] = this[this.__s.substr(0,1)]();
    			--testVal;	
    			tmp[this[this.__s.substr(0,1)]()] = this[this.__s.substr(0,1)]();
    			--testVal;	
    			tmp[this[this.__s.substr(0,1)]()] = this[this.__s.substr(0,1)]();
    			--testVal;	
    			tmp[this[this.__s.substr(0,1)]()] = this[this.__s.substr(0,1)]();
    			--testVal;	
    			tmp[this[this.__s.substr(0,1)]()] = this[this.__s.substr(0,1)]();
    			--testVal;
    		}while(testVal!=n);
    	}
    	while(--testVal)
    		tmp[this[this.__s.substr(0,1)]()] = this[this.__s.substr(0,1)]();
    	return tmp;
    }
    e' la versione del Duff faster ancora piu' veloce ^_^;;

    meglio di cosi' sfido ^_^;;

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.