Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Physical engine (http://www.flasher.ru/forum/showthread.php?t=66685)

F_Flash 12.08.2005 18:05

Цитата:

Сообщение от KidsKilla
1) понял.

2) ты чего бредишь?
я те про переменные dx и dy говорил. а ты написал 2 АБСОЛЮТНО ОДИНАКОВЫХ кода и удивляешься, что время одинаковое.


Слушай, ты че плозхо соображеаешь что ли:)
"
если условие взято в скобки и все переменные просчитаны, то компилятор будет условие в скобках принимать за "1 переменную", не просчитывать "

т.е.
Вариант1.

dist=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));

По твоему всказываению
это равносильно. созданию двух переменных
1.x2-x1
2.y2-y1


Вариант2

dist=Math.sqrt((x2-x1)*(x2-x1)+(x2-x1)*(x2-x1));

А в этом вариете только одной

(x2-x1)

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

Значение переменных не важно здесь.

E-mail 12.08.2005 18:08

Я плохо знать как экшен скрипт создаёт переменные(какого они типа и как он разбирает их тип),но в с++ можно указать её конкретный тип(int,double,char)и сэкономить в некоторых случаях память(int-4 байта,double-8 байт),а также исключить запихивания в переменную типа int значение типа char...

F_Flash 12.08.2005 18:11

Цитата:

Сообщение от E-mail
Я плохо знать как экшен скрипт создаёт переменные(какого они типа и как он разбирает их тип),но в с++ можно указать её конкретный тип(int,double,char)и сэкономить в некоторых случаях память(int-4 байта,double-8 байт),а также исключить запихивания в переменную типа int значение типа char...

Верно, о чем и речь, что на создение переменной уходит очень много времени во флеше. Это один из явных примеров о медленности скрипта флеша .

iNils 12.08.2005 18:16

Цитата:

Сообщение от KidsKilla
вот тут:
dx=x2-x1;
dy=y2-y1;

это я видел :)
я про разницу во времени.

E-mail 12.08.2005 18:19

мне кажется(перекрестился),что флэш так тормозит оттого что он почти полностью автоматизирован,чтобы народ не парился...:)
в том же с++ чтобы создать массив содержащий разные типы нужно создать либо структуру либо класс,а флэш он ,наверно, делает это автоматически,даже когда в массиве данные одного типа(массив это к примеру)

F_Flash 12.08.2005 18:23

2iNils

Ну через геттаймер проверь.

s=getTimer();
for(i=1;i<=10000;i++){
x1=random(50000);
x2=random(50000);
y1=random(50000);
y2=random(50000);
dist=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
trace(getTimer()-s);

-------------------------------------------
s=getTimer();
for(i=1;i<=80000;i++){
x1=random(50000);
x2=random(50000);
y1=random(50000);
y2=random(50000);
dx=x2-x1;
dy=y2-y1;
dist=Math.sqrt((dx)*(dx)+(dy)*(dy));
}
trace(getTimer()-s);

iNils 12.08.2005 18:23

Цитата:

Сообщение от F_Flash
Верно, о чем и речь, что на создение переменной уходит очень много времени во флеше. Это один из явных примеров о медленности скрипта флеша .

если пройтись дебагером то разница в коде будет такая:

1.
13 _push "dx"/*Dic[4]*/, "x2"/*Dic[2]*/
14 _getVariable
15 _push "x1"/*Dic[0]*/
16 _getVariable
17 _subtract
18 _setVariable
19 _push "dy"/*Dic[5]*/, "y2"/*Dic[3]*/
20 _getVariable
21 _push "y1"/*Dic[1]*/
22 _getVariable
23 _subtract
24 _setVariable
25 _push "dist"/*Dic[6]*/, "dx"/*Dic[4]*/
26 _getVariable
27 _push "dx"/*Dic[4]*/
28 _getVariable
29 _multiply
30 _push "dy"/*Dic[5]*/
31 _getVariable
32 _push "dy"/*Dic[5]*/
33 _getVariable

2.
13 _push "dist"/*Dic[4]*/, "x2"/*Dic[2]*/
14 _getVariable
15 _push "x1"/*Dic[0]*/
16 _getVariable
17 _subtract
18 _push "x2"/*Dic[2]*/
19 _getVariable
20 _push "x1"/*Dic[0]*/
21 _getVariable
22 _subtract
23 _multiply
24 _push "y2"/*Dic[3]*/
25 _getVariable
26 _push "y1"/*Dic[1]*/
27 _getVariable
28 _subtract
29 _push "y2"/*Dic[3]*/
30 _getVariable
31 _push "y1"/*Dic[1]*/
32 _getVariable
33 _subtract

как видите хотя операции разные, их количество одинаково

F_Flash 12.08.2005 18:27

Цитата:

Сообщение от E-mail
мне кажется(перекрестился),что флэш так тормозит оттого что он почти полностью автоматизирован,чтобы народ не парился...:)
в том же с++ чтобы создать массив содержащий разные типы нужно создать либо структуру либо класс,а флэш он ,наверно, делает это автоматически,даже когда в массиве данные одного типа(массив это к примеру)

Естественно. На тип например Byte выделяется 1 байт памати всего, и ты знаешь что он принимет значение от 1 дл 256 . И тебе этого хватает.

А во флеше ты можешь например булеан создать так он в себе уже будет внутри содержать непонятную сруктуру и непонятно сколько памяти. Но зато все просто. Ты можешь на лету из булеана сделать целый супер объект с громадной вложеннолстью.

iNils 12.08.2005 18:27

Цитата:

Сообщение от F_Flash
Ну через геттаймер проверь.

перед тем как спросить с чего вы взяли я это и сделал. результат был такой: через раз, когда первый быстрее когда второй.

и кстати, не корректно первую функцию 10000 запускать, а вторую 80000 :)

E-mail 12.08.2005 18:31

хмм...а нельзя ли принудительно сделать переменную только такого типа какого мне надо?


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

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