Question: Как определить скорость выполнения кода? How could one determine the duration of code execution and print out the time difference. Wie misst man die Dauer der Ausfuehrung eines Javascript Codes? Wie misst man die Zeitdifferenz
Answer: Нам поможет обьект Date и его функция getTime
Браузеры: Internet Explorer Yes, Mozilla Yes, Opera Yes
Пример:
| Код | <!-- Thanks to: sergej.z http://vingrad.ru/@sergej.z for this excample --> <script language='JavaScript' type="text/javascript"> function difference(date1,date2) { var ret = new Date(); //Возвращаемый обьект с разницей времени ret.setTime(Math.abs(date1.getTime() - date2.getTime()));//Заряжаем обьект разницей return ret; }
//Превращаем обьект в строку function printDate(date) { return date.getMinutes()+" мин:"+date.getSeconds()+"сек:"+date.getMilliseconds()+" мс."; }
//Возможно распечатать ручками :) function printDate_alternative(date) { timediff = date.getTime(); //Полные недели 604800000=1000 * 60 * 60 * 24 * 7 weeks = Math.floor(timediff / (604800000)); timediff -= weeks * (604800000); //Полные дни 86400000=1000 * 60 * 60 * 24 days = Math.floor(timediff / (86400000)); timediff -= days * (86400000); //Полные часы 3600000=1000 * 60 * 60 hours = Math.floor(timediff / (3600000)); timediff -= hours * (3600000); //Полные минуты 60000=1000 * 60 mins = Math.floor(timediff / (60000)); timediff -= mins * (60000); //Полные секунды secs = Math.floor(timediff / 1000); timediff -= secs * 1000; //Остались лишь милисекунды
return weeks + " недели, " + days + " дни, " + hours + " часы, " + mins + " минуты " + secs + " секунды "+timediff+" миллисекунды"; }
d1=new Date(); //Ваш код. Например: for(var t=0;t<1000000;t++)if(t%1000==0)document.write('1'); d2 = new Date();
alert("Цикл занял: "+printDate(difference(d1,d2))); </script> |
Примечания: Спасибо: http://vingrad.ru/@Sardar, http://vingrad.ru/@sergej.z за предоставленный материал. |