|
|
|||||
Modus ponens
|
Сравнение скорости разных языков
Пожалуйста, можете подтвердить результат? А то меня числа как-то засмущали... вот тест на других языках: http://blog.dhananjaynene.com/2008/0...-jruby-groovy/
И вот мой код на AS3, который его вобщем-то один в один повторяет, безо всяких попыток что-то оптимизировать. Результат получается совсем даже не плохой (у меня в релиз плеере 64 бит Убунту около 9.6 микросекунд). Но что-то мне не верится, что все так хорошо... может я что-то пропустил? 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"; } } } 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; } } } 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; } } }
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 04.06.2011 в 02:14. |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Ты не указал конфигурацию машины. на тестах была
CPU : Intel(R) Core(TM) Duo CPU T2600 @ 2.16GHz RAM : 2GB А у тебя?
__________________
Отряд Котовскага |
|
|||||
Регистрация: Mar 2006
Адрес: Ростов-на-Дону
Сообщений: 80
|
12 микросекунд
isDebugger false WIN 10,1,52,14 os win7 так что 9 микросекунд. более чем правдоподобно? Последний раз редактировалось nuToH; 04.06.2011 в 15:31. |
|
|||||
Modus ponens
|
CPU: Interl(R) Core(TM) i7 930 @ 2.80GHz
RAM: 5.8 GiB Но я даже не представлял, что разница с тем же PHP или Python будет во столько раз в пользу Flash... В смысле, конечно, там где другие языки будут использовать библиотечный код, который скорее всего сильно оптимизирован, и написан на Си, ситуация сильно изменится. Но то, что родной код такой медленный в сравнении... что-то меня это все равно до сих пор смущает. nuToH: не-не-не, фишка в том, что это микросекунды а не миллисекунды.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 04.06.2011 в 13:16. |
|
|||||
Регистрация: Jun 2009
Сообщений: 461
|
Java несомненно радует, жаль там c# нет.
|
|
|||||
Регистрация: Mar 2006
Адрес: Ростов-на-Дону
Сообщений: 80
|
исправился. спасиб., а в 10.3 плеере на 15% шустрее вышло... интересно.
|
Часовой пояс GMT +4, время: 20:41. |
|
« Предыдущая тема | Следующая тема » |
|
|