Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Как определить скорость выполнения кода?


Автор: sergej.z 8.11.2004, 18:39
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  за предоставленный материал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)