Просмотр полной версии : оценка производительности кода
сейчас пишу приложение, визуал которого должен обновляться как можно чаще. поэтому в установках экспорта у меня 120 fps, а таймер вызывается через setInterval(timer, 1) (настолько часто, насколько возможно). естественно всё это серьёзно загружает процессор, который всегда работает на 100%.
посему возникает несколько вопросов:
1) как оценить, сколько процессорного времени сжирает отрисовка, а сколько выполнение кода?
2) как узнать, сколько времени тратится на каждую функцию?
3) как узнать структуру всего процессорного времени? (в идеале отчет вроде стандартного "report size")
4) если нет прямых ответов на эти вопросы, как вы решаете проблемы анализа производительности кода?
5) есть ли какие-то классы/наработки по этой теме?
я представляю только ответ на вопрос 2) для отдельно взятой функции - в начале и в конце замерить getTimer() и вывести разницу. но это достаточно точечное решение, мне бы хотелось комплексного.
спасибо.
KidsKilla
04.08.2005, 16:49
1) -
2) t = getTimer();
var i = 1000;
while(i--) func();
trace(getTimer()-t);
а что ещё?
3) -
4) есть статьи по оптимизации. кроме оптимизации кода почти никак. можно отдельные ф-ции проверять через 2) смотреть что быстрее.
5) статьи. ссылок не помню. попробую порыться. даже тут как-то была ссыль.
2) на отдельную функцию - всё понятно. а если у меня 20-30 классов и у каждого по 3-10 методов? тут нужно в комплексе решать задачу.
KidsKilla
04.08.2005, 16:53
какую задачу?
сделай то же самое для каждого метода...
честно говоря, я с трудом понимаю зачем такой большой фпс. можно просветить?
2 KidsKilla:
задача - комплексно (всё сразу вместе) оценить, что жрет процессорное время
2 iNils:
1) синхронизация бита в музыке с происходящим на экране
2) чем больше fps, тем чаще вызывается мой таймер через setInterval
3) чем чаще, тем точнее попадание визуала в звук
KidsKilla
04.08.2005, 17:04
2) бред
3) бред
По поводу звука (не совсем в тему, но может чем то пригодится). Была статья (http://flash-ripper.com/archives/2004_08.htm) на потрошителе про пульт.
По поводу fps и setInterval (http://www.flasher.ru/forum/showthread.php?t=65663&highlight=setInterval)
2 iNils:
про пульт: спасибо, почитаю :)
2 all:
так что насчет оценки производительности?
Varan_LSD
04.08.2005, 17:47
Поищи в инете вот такую библиотеку - ASProf-1.0.mxp может поможет
Создает отчет по затрате времени на каждую опписанную функцию!
Самому интересно стало. Еще не тестил, но нашел здесь (http://www.nochump.com/asprof/downloads/ASProf-1.0.mxp).
2 KidsKilla:
для вас, уважаемый коллега, следующий код:
class test.Test {
var intID;
var start;
var sum = 0;
var count = 0;
var tLast = 0;
function tick() {
var time = getTimer();
sum += time - tLast;
count++;
if (count >= 100) {
var av = sum/count;
TRACE(Flashout.DEBUG + "av=" + av);
clearInterval(intID);
}
tLast = time;
}
function Test() {
Flashout.init();
TRACE(Flashout.INFO + "Application started");
tLast = getTimer();
intID = setInterval(Delegate.create(this, tick), 1);
}
// --- Main Entry Point
static function main() {
var test:Test = new Test();
}
}
при fps=4 выдает av=25.48
при fps=120 выдает av=10.74
зависимость хоть и не прямая, но ощутимая
А на fps 30 или 60?
Если читал ссылку на топик, то там описывался забавный момент. Что при фпс в районе 13 setInterval вызывался реже чем при при 9
при fps=30 av=10.22
при fps=60 av=10.24
похоже, при увеличении fps разница становится не настолько заметной
KidsKilla
04.08.2005, 18:04
1) слишком наворочено, для простейших операций.
2) setInterval не точен. очень не точен. пределы разные. часто +- 3-5%
3) 100 смени на 10 000 и
4) протесть неск-ко раз. скорее всего проц задумывался сперва.
не верю, что есть связь фпс и setInterval. 1) + 2) дают порой такие идиотские рез-ты.
пс, кстати, не забывай про неточности вычислений проца. фпс на это порой очень сильнок действие даёт. как итог для более точных вычислений рекомеддуются фпс 21 и 31
1) поменял на менее навороченный код
2) но не 2,5 раза
3) сменил на 1000
4) тестил несколько раз
fps=4 av=24.999
fps=120 av=10.108
можешь проверить своими методами
2 Varan LSD:
посмотрел. скачал. то, что нужно, спасибо :)
KidsKilla
04.08.2005, 18:19
фидимо сама цифра в 4 фпс ужасна. заметь, 30, 60, 120 нет разницы.
это к моему пс
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.