![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2011
Сообщений: 32
|
Наткнулся на пост Nicolas Cannasse , тесты довольно старые, но встретились также и довольно свежие сравнительные тесты на ту же тему. А поскольку имею надобность посчитать изрядное количество корней, поставил Haxe SDK 2.09 (ранее с ним дела не имел) и попробовал воспроизвести увиденные у отмеченных авторов результаты. Однако, странным образом, скорость вычисления квадратного корня Нахе, в моих тестах, получается много ниже, чем у Math.sqrt() для Actionscript. Компилирую из под FlashDevelop:
package ; import flash.Lib; import flash.Memory; import flash.utils.ByteArray; class Main { static function main() { prepare(); var i:Int = 0; var beginTime:Int = Lib.getTimer(); var result:Float = 0; while(i<1000000){ result = rSqrt(1245); i++; } trace(Lib.getTimer() - beginTime); } public static function prepare():Void { var b:ByteArray = new ByteArray(); b.length = 1024; Memory.select(b); } public static function rSqrt(x:Float): Float { var original:Float = x; var half:Float = 0.5 * x; Memory.setFloat(0, x); var i:Int =Memory.getI32(0); i = 0x5f3759df - (i >> 1); Memory.setI32(0, i); x = Memory.getFloat(0); x = x * (1.5 - half * x * x); x = original * x; return x; } } выбор версии флеш-плеера для компилируемого проекта на скорость видимого влияния не оказывает. Тестил на 2-х ядерном AMD Athlon, 2Гб, 2ГГц. Отчего такое отличие результатов? Adobe улучшил свой расчет корня? Или я что-то в Нахе не понял? |
|
|||||
|
Во первых:
- Сборку релизную делаешь? Во воторых: - public static function rSqrt(x:Float): Float инлайнить нужно - вызов функции отнимает время Ибо я засекал - реально в разы быстрее. Да что там, даже на том же as3 некоторые приближенные методы вычисления корня быстрее нативного работают (по крайней мере, если копипастить алгоритм по месту без вызова функции, но дело, конечно, не только в этом, а еще в приближенности вычислений) Раньше вроде без этого работало, или я чего-то не помню просто... Последний раз редактировалось expl; 08.05.2012 в 16:48. |
|
|||||
|
Регистрация: Jul 2011
Сообщений: 32
|
Именно в этом и была загвоздка.
Спасибо! |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:25. |
|
|
« Предыдущая тема | Следующая тема » |
|
|