Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   оценка производительности кода (http://www.flasher.ru/forum/showthread.php?t=67496)

genius 04.08.2005 16:43

оценка производительности кода
 
сейчас пишу приложение, визуал которого должен обновляться как можно чаще. поэтому в установках экспорта у меня 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) статьи. ссылок не помню. попробую порыться. даже тут как-то была ссыль.

genius 04.08.2005 16:52

2) на отдельную функцию - всё понятно. а если у меня 20-30 классов и у каждого по 3-10 методов? тут нужно в комплексе решать задачу.

KidsKilla 04.08.2005 16:53

какую задачу?
сделай то же самое для каждого метода...

iNils 04.08.2005 16:57

честно говоря, я с трудом понимаю зачем такой большой фпс. можно просветить?

genius 04.08.2005 17:01

2 KidsKilla:
задача - комплексно (всё сразу вместе) оценить, что жрет процессорное время

2 iNils:
1) синхронизация бита в музыке с происходящим на экране
2) чем больше fps, тем чаще вызывается мой таймер через setInterval
3) чем чаще, тем точнее попадание визуала в звук

KidsKilla 04.08.2005 17:04

2) бред
3) бред

iNils 04.08.2005 17:07

По поводу звука (не совсем в тему, но может чем то пригодится). Была статья на потрошителе про пульт.

iNils 04.08.2005 17:10

По поводу fps и setInterval

genius 04.08.2005 17:34

2 iNils:
про пульт: спасибо, почитаю :)

2 all:
так что насчет оценки производительности?

Varan_LSD 04.08.2005 17:47

Поищи в инете вот такую библиотеку - ASProf-1.0.mxp может поможет

Создает отчет по затрате времени на каждую опписанную функцию!

iNils 04.08.2005 17:52

Самому интересно стало. Еще не тестил, но нашел здесь.

genius 04.08.2005 17:56

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

зависимость хоть и не прямая, но ощутимая

iNils 04.08.2005 17:59

А на fps 30 или 60?
Если читал ссылку на топик, то там описывался забавный момент. Что при фпс в районе 13 setInterval вызывался реже чем при при 9

genius 04.08.2005 18:02

при 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

genius 04.08.2005 18:11

1) поменял на менее навороченный код
2) но не 2,5 раза
3) сменил на 1000
4) тестил несколько раз

fps=4 av=24.999
fps=120 av=10.108

можешь проверить своими методами

genius 04.08.2005 18:17

2 Varan LSD:
посмотрел. скачал. то, что нужно, спасибо :)

KidsKilla 04.08.2005 18:19

фидимо сама цифра в 4 фпс ужасна. заметь, 30, 60, 120 нет разницы.
это к моему пс


Часовой пояс GMT +4, время: 18:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.