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


Автор: Ghirik 4.6.2008, 06:52
Можно ли как то, хотя бы косвенно, оценить загрузку процессора, во время выполнения сценария?
Скорее даже не загрузку процессора, а сколько сценарий поедает из выделенного браузеру резерва.
Допустим, в цикле выполняется процедура. Ну и выполнять какое то действие, раз в секунду, которое покажет, косвенно отразит, тяжесть выполняемого сценария.

Автор: solenko 4.6.2008, 07:38
Вот тут упоминается скрикт, отрисовывающий загрузку CPU:
http://webreflection.blogspot.com/2007/09/jpu-javascript-cpu-monitor.html

Естественно, это не чистый эксперемент, т.к. не только JS будет влиять, но хоть что-то )

Автор: krundetz 4.6.2008, 08:34
Интересный скрипт только не очень корректно в эксплорере работает. Ghirik думаю некоего универсального способа на сколько скрипт подгружает систему в целом тоесть не только на сколько грузит процессор но и сколько памяти ест нет, а если и есть механизмы то они специфичны для разных браузеров. Скорее всего нужен некий способ оценки загружаемости системы скриптом.

Автор: Ghirik 4.6.2008, 09:28
Спасибо за ссылочку... Посмотрел демку.

открыл скрипт
Код

/* (C) Andrea Giammarchi */
(function(J,P,U){
    var a='appendChild',
    c='createElement',
    e='addEventListener',
    d=document,
    l="load",
    w=window,
    f=function(){
        var i=setInterval(function(l){
            l=1;
            D=new Date-D;
                if(D>700)
                    l++;
                if(D>650)
                    l++;
                        if(D>600)
                            l++;
                            if(D>550)l++;
                        s(J=l<J?--J:l);
                        D=new Date
        },500),
        b=d.body,
        s=function(){
            I.className=U+J
        },
        I=d[c]('p'),
        C=d[c]('link'),
        D=new Date;
        C.rel='stylesheet';
        C.type='text/css';
        C.href=P+U+'.css';
        s(b[a](C),
        b[a](I));
        /*@cc_on setInterval(function(){I.style.top=document.body.scrollTop+"px"},50)@*/
    };
    w[e]?w[e](l,f,false):w.attachEvent("on"+l,f)
})(5,'http://www.3site.eu/JPU/','JPU');


Нет особого желания в нем разбираться... smile Лучше уж самому написать.
Подход то понятен, я примерно так же думал сделать. Выполнять определенные процедуры и измерять время, за которое они выполняются.

Я это дело хочу использовать в тесте отрисовки изображения, и данные загрузки хочу получать достоверные. Косвенные, но достоверные.

Хочу сделать примерно так.
Сам тест отрисовки будет запускать интервал и, например, изменять по этому интервалу размер объекта.
Каждую секунду, на фоне работающего интервала, хочу запускать дополнительную процедуру и измерять время её выполнения. Зная время выполнения этой процедуры при остановленной отрисовке, можно достаточно достоверно судить о загрузке интерпретатора. Измерять загрузку CPU, в общем то и не нужно.

Вот и встает вопрос - какую процедуру использовать для измерения загрузки интерпретатора?

Пофиг или не пофиг какую? smile 


Автор: Ghirik 4.6.2008, 09:49
Если, например, интерпретатор начинает высвобождать ресурсы для выполнения параллельной задачи, и это отражается на поведении рисующего скрипта, то это тоже плохо. Получается, что время рисования следует то же измерять. Но как?
В браузерах на движке Gecko заметно, что при отрисовке интерпретатор, время от времени, улетает на выполнение каких то задач. Из за этого происходят дерганья изображения. Вообще, многие проги так себя ведут. Спрашивается, на кой бес нужно что то делать, когда пользователь не делает ни чего. Бред какой то, что за программеры такое сочиняют... 

P.S. Не правильно сказал, не интерпретатор улетает, а сама прога браузера тормозит интерпретацию скрипта.

Автор: solenko 4.6.2008, 09:50
Ghirik, а может все-таки использовать именно интервалы? Ведь при нехватке расурсов они откладываются и потом выполняются "скопом" (могу ошибаться, но, кажется именно к таким выводам тут когда-то пришли). Т.е. как и в этом скрипте, анализировать количество пропущенных вызовов  или задержку выполнения. Мне кажется так оченка получится объективней.

Автор: Ghirik 4.6.2008, 10:05
Цитата

могу ошибаться, но, кажется именно к таким выводам тут когда-то пришли


Да, точно, здесь когда то была не плохая дискуссия на эту тему. Нужно поискать...

Цитата

Ведь при нехватке расурсов они откладываются и потом выполняются "скопом" 


Я помню это заключение, но что то последнее время, начал очень сомневаться в его правильности. Может они и откладываются, но не по причине нехватки ресурсов, а именно из за каих то прерываний интерпретации.

Добавлено через 4 минуты и 37 секунд
Т.е., на выполнении скрытых от пользователя операций, этих прерываний не заметно, а при монотонной отрисовке, появляются скачки. Видимо поэтому, от версии к версии FF не происходит улучшения отрисовки. Я тут уже писал, что FF3 стал ещё хуже рисовать. Вот сейчас и хочу сделать тест. Нужно ещё подумать... smile 

Автор: IDVsbruck 4.6.2008, 10:25
Со съедаемой паматью достаточно сложно, так как ИЕ, к примеру, скидывает мусор, кажется, каждые 10 секунд. То есть перед самым сбросом гарбаджа заполнение браузера идет максимальное, а потом бывают резкие падения объема. Это достаточно легко увидеть, если запустить Таск Менеджер и сильно загруженный проект в ИЕ - скачки бывают очень приличные. По ФФ у меня информации нет.

Автор: SelenIT 4.6.2008, 14:43
Для IE существует утилитка http://www.outofhanwell.com/ieleak/index.php?title=Main_Page, довольно активно используемая в борьбе с утечками памяти.

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