Per quanto ne so, non c'è modo di risolvere questo problema, oltre a rendere il tuo codice meno dispendioso in termini di risorse.
Chrome sembra essere il browser più veloce, ma in genere FF non è molto indietro, ma IE è ancora lento. A seconda dei metodi di rendering, canvas, svg o webGL, è anche molto dipendente dall'hardware locale in quanto utilizza il clientide per la maggior parte delle cose e complicati rendering di WebGL richiedono una potente GPU per ottenere una buona framerate.
Ci sono modi per misurare il framerate al volo e modificare le animazioni di conseguenza.
Ecco un esempio molto semplice che misura il framerate.
function step(timestamp) {
var time2 = new Date;
var fps = 1000/(time2 - time);
time = time2;
\t
document.getElementById('test').innerHTML = fps;
window.requestAnimationFrame(step);
}
var time = new Date(), i = 0;
window.requestAnimationFrame(step);
<div id="test"></div>
Questa è solo una misura istantanea che non è così preciso, che vorreste probabilmente qualcosa che misura nel corso del tempo per ottenere una più corretta framerate per il browser in uso.
noti inoltre l'argomento timestamp
, che in requestAnimationFrame
è timestamp ad alta risoluzione con un minimo di precisione 1 millisecondi, che può anche essere utilizzato per deterine la velocità dell'animazione e ogni ritardo browser.
Il modo per risolverlo è fare in modo che tutto il codice che stai eseguendo dalla richiamata funzioni velocemente. Come farlo è impossibile da dire senza vedere il codice ... –