venerdì, agosto 25, 2006

kentaromiura fastest device (duff's device optimized)


function kentaromiuraFastestDevice(iterations) {

var testVal=iterations;
if(parseInt(iterations/8)){
var n=iterations%8;
do{
--testVal; //do stuff
--testVal; //do stuff
--testVal; //do stuff
--testVal; //do stuff
--testVal; //do stuff
--testVal; //do stuff
--testVal; //do stuff
--testVal; //do stuff
}while(testVal!=n);
}
while(testVal--){
//do stuff
}
}

4 commenti:

Vero Programmatore ha detto...

Sono sicuro che puoi essere ancora Piu' Veloce! Piu' Forte! Migliore!

kentaromiura ha detto...

per ora non c'e' nulla di piu' veloce di questo metodo ;)
non appena riesco a inventare un codice macchina piu' veloce del codice macchina ti faccio un fischio ;)

Anonimo ha detto...

è un mese che ci penso... perchè dici che un metodo più veloce non esiste?
se ad esempio il numero delle iterazioni fosse basso non sarebbe meglio usare 4 anzichè 8? e se fosse particolarmente alto usare 16 o 32 o 2^n?

kentaromiura ha detto...

@anonimo: halt! tu stai considerando l'implementazione e non l'algoritmo.
ovviamente aggiungendo istruzioni il gap dovuto ai jmp si assotiglierebbe
(considera comunque che arrivato a 12 istruzioni non arriveresti ad ottimizare ulteriormente)

l'implementazione prevede la classica forma del duff device che e' storicamente rappresentato con 8 istruzioni.


comunque nonostante io abbia avuto migliorie nelle tempistiche
Andrea Giammarchi puo' dimostrare che tutto e' relativo ;)