Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Сравнение скорости разных языков (http://www.flasher.ru/forum/showthread.php?t=157345)

wvxvw 04.06.2011 02:11

Сравнение скорости разных языков
 
Пожалуйста, можете подтвердить результат? А то меня числа как-то засмущали... вот тест на других языках: http://blog.dhananjaynene.com/2008/0...-jruby-groovy/
И вот мой код на AS3, который его вобщем-то один в один повторяет, безо всяких попыток что-то оптимизировать. Результат получается совсем даже не плохой (у меня в релиз плеере 64 бит Убунту около 9.6 микросекунд). Но что-то мне не верится, что все так хорошо... может я что-то пропустил?
Код AS3:

package org.wvxvw.josef
{
        import flash.display.Sprite;
        import flash.text.TextField;
        import flash.utils.getTimer;
 
        public class JosefTester extends Sprite
        {
                private var _field:TextField = new TextField();
 
                public function JosefTester()
                {
                        super();
                        super.addChild(this._field);
                        test(this._field);
                }
 
                private static function test(field:TextField):void
                {
                        var count:int = 100000;
                        var time:int = getTimer();
                        var chain:Chain;
 
                        for (var i:int; i < count; i++)
                        {
                                chain = new Chain(40);
                                chain.kill(3);
                        }
                        field.text = "Time per iteration: " + (getTimer() - time) * 1000 / count + " microseconds";
                }
        }
}

Код AS3:

package org.wvxvw.josef
{
        public class Chain
        {
                public function get first():Person { return this._first; }
 
                private var _first:Person;
 
                public function Chain(size:int)
                {
                        super();
                        var last:Person;
                        var current:Person;
                        for (var i:int; i < size; i++)
                        {
                                current = new Person(i);
                                if (!this._first) this._first = current;
                                if (last)
                                {
                                        last.next = current;
                                        current.prev = last;
                                }
                                last = current;
                        }
                        this._first.prev = last;
                        last.next = this._first;
                }
 
                public function kill(nth:int):Person
                {
                        var current:Person = this._first;
                        var shout:int = 1;
                        while (current.next != current)
                        {
                                shout = current.shout(shout, nth);
                                current = current.next;
                        }
                        this._first = current;
                        return current;
                }
        }
}

Код AS3:

package org.wvxvw.josef
{
        public class Person
        {
                public function get count():int { return this._count; }
 
                public function get prev():Person { return this._prev; }
 
                public function set prev(value:Person):void
                {
                        this._prev = value;
                }
 
                public function get next():Person { return this._next; }
 
                public function set next(value:Person):void
                {
                        this._next = value;
                }
 
                private var _count:int;
 
                private var _prev:Person;
 
                private var _next:Person;
 
                public function Person(count:int)
                {
                        super();
                        this._count = count;
                }
 
                public function shout(theShout:int, deadIf:int):int
                {
                        if (theShout < deadIf) return theShout + 1;
                        this.prev.next = this.next;
                        this.next.prev = this.prev;
                        return 1;
                }
        }
}


Котяра 04.06.2011 05:07

Ты не указал конфигурацию машины. на тестах была
CPU : Intel(R) Core(TM) Duo CPU T2600 @ 2.16GHz
RAM : 2GB
А у тебя?

nuToH 04.06.2011 12:10

12 микросекунд
isDebugger false
WIN 10,1,52,14
os win7
так что 9 микросекунд. более чем правдоподобно?

wvxvw 04.06.2011 13:10

CPU: Interl(R) Core(TM) i7 930 @ 2.80GHz
RAM: 5.8 GiB

Но я даже не представлял, что разница с тем же PHP или Python будет во столько раз в пользу Flash... В смысле, конечно, там где другие языки будут использовать библиотечный код, который скорее всего сильно оптимизирован, и написан на Си, ситуация сильно изменится. Но то, что родной код такой медленный в сравнении... что-то меня это все равно до сих пор смущает.

nuToH: не-не-не, фишка в том, что это микросекунды а не миллисекунды.

Tr1te 04.06.2011 14:17

Java несомненно радует, жаль там c# нет.

nuToH 04.06.2011 15:33

Цитата:

Сообщение от wvxvw (Сообщение 1001156)
nuToH: не-не-не, фишка в том, что это микросекунды а не миллисекунды.

исправился. спасиб., а в 10.3 плеере на 15% шустрее вышло... интересно.


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

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