Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

JavaScript / JScript Benchmark (Rumata, оценка: 1)
Author Message
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Sat Mar 21, 2009 2:13 pm (написано за 14 минут 56 секунд)
   Post subject: JavaScript / JScript Benchmark
Reply with quote

Очередной раз, пописывая что-то на js, понял, что мне надоело делать некоторые тесты. Написал ма-а-аленький скрипт, который делает ма-а-аленькое, но важное дело - проверять производительность разных версий алгоритмов.

Реализация проста - определяется новый метод прототипа объекта Function.prototype.eval, который исполняет код данной функции и оценивает время его выполнения. Для того чтобы заработало, достаточно вызвать метод, например
Code (JavaScript): скопировать код в буфер обмена
var arr = [1, 2, 3, 4];

function sum(arr)
{
        var result = 0;
        for (var i = 0; i < arr.length; i++) {
                result += arr[i];
        }
        return result;
}

//
var s = sum(arr);

//
var s = sum.eval(arr);
Будет вычислена сумма элементов массива, оценено время выполнения функции и выведена информация о работе функции. А вот другой пример
Code (JavaScript): скопировать код в буфер обмена
var arr = [1, 2, 3, 4];
var s = 0;

//
(function(arr){
        for (var i = 0; i < arr.length; i++) {
                s += arr[i];
        }
}).eval(arr);
По умолчанию, оценивается время выполнения кода за 1000 итераций. Вывод производится стандартным методом document.writeln (или WScript.Echo для WSH). При желании это можно изменить
- Function.prototype.evalCount - целочисленный параметр хранит количество итераций, или количество раз исполнения кода.
- Function.prototype.evalDuration - целочисленный параметр хранит продолжительность выполнения кода.
- Function.prototype.evalPrint - вспомогательная функция для вывода статистики о производительности.

Более подробный текст - with-love-from-siberia.blogspot.com/2009/03/javascript-jscript-benchmark.html.
Исходный код библиотеки - code.google.com/p/jsxt/source/browse/trunk/js/Benchmark.js

Last edited by Rumata on Mon May 25, 2009 12:48 am; edited 1 time in total
Back to top
View user's profile Send private message
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 81
   поощрить/наказать


PostPosted: Sun Mar 22, 2009 9:15 am (спустя 19 часов 1 минуту; написано за 13 секунд)
   Post subject:
Reply with quote

[+]
Нужная вещь.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML