Показать сообщение отдельно
Старый 27.05.2014, 11:31
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 33  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
На самом деле разницы почти нет, вот один из тестов ( хром ):

Код:
Player: 
Player type: PlugIn / release /


version: WIN 13,0,0,214



Test: su.fishr.tasks::BitwiseVsDivision



length array: 100 000 000

// x % 2
method:  modulo,  duration : 2 353 ms 
// x * .5
method:  multiplyByHalf,  duration : 1 104 ms 
// x / 2
method:  divideIntoTwo,  duration : 1 101 ms 
// x >> 1
method:  bitwiseRigthShift,  duration : 1 113 ms 



...end test

тестовый класс

Код AS3:
 
///********************************************************************
///* Copyright © 2014 fishr (fishr.flash@gmail.com)  
///********************************************************************
 
 
package su.fishr.tasks 
{
 
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.globalization.NumberFormatter;
	import flash.utils.getTimer;
	import su.fishr.utils.ITask;
 
 
 
	/**
	 * ...
	 * @playerversion          Flash 10.1
	 * @langversion            3.0
	 * @author                 fishr
	 * @created                5/27/2014 
	 * @since                  5/27/2014 
	 */
	public  class BitwiseVsDivision extends EventDispatcher implements ITask
	{
	/**-------------------------------------------------------------------------------
	* 
	*	   						V A R I A B L E ' S 	
	* 
	* --------------------------------------------------------------------------------
	*/
	//{
		static private const AUTHOR:String = "fishr (fishr.flash@gmail.com)";
		static public const TEST_COMPLETE:String = "testComplete";
		private var _valueData:Number = 100000000;
		private var _taskName:String;
		private var _result:String;
		private var _numFormater:NumberFormatter;
 
	//}
 
	/**-------------------------------------------------------------------------------
	* 
	*	 						P R O P E R T I E S 	
	* 
	* --------------------------------------------------------------------------------
	*/
	//{
		/* INTERFACE su.fishr.utils.ITask */
 
		public function get result():String 
		{
			return _result;
		}
 
		public function get taskName():String 
		{
			return _taskName;
		}
 
		public function get valueData():Number 
		{
			return _valueData;
		}
 
		public function set numberFormater(value:NumberFormatter):void 
		{
			_numFormater = value;
		}
 
	//}
	/**-------------------------------------------------------------------------------
	* 
	*								P U B L I C 	
	* 
	* --------------------------------------------------------------------------------
	*/
	//{
 
 
 
 
 
 
 
		public function start(valData:Number = 0):void 
		{
			if ( valData ) _valueData = valData;
 
			var arr:Array = new Array();
 
			while( arr.length < _valueData )
			{
				arr.push( arr.length + 2);
			}
 
 
 
			const methods:Array/*String*/ = [ "bitwiseRigthShift",
															"divideIntoTwo",
															"multiplyByHalf",
															"modulo" ];
 
			var length:int = arr.length;
 
 
			const lenghtStr:String = _numFormater.formatInt( length);
 
 
			_result = "length array: " + lenghtStr + "\r\r";
 
			var startTime:int;
			var finishTime:int;
 
			var i:uint = methods.length;
			while ( i-- )
			{
				startTime = getTimer();
				this[ methods[ i ] ]( arr );
				finishTime = getTimer();
 
				const time:String = 
				_result += "method:  " +  methods[  i  ] + ",  duration : " + (  _numFormater.formatInt( ( finishTime - startTime ) ) ) + " ms \r";
 
			}
 
			_result += "\r...end test";
 
			this.dispatchEvent( new Event( TEST_COMPLETE ) );
		}
	//}
 
	/**-------------------------------------------------------------------------------
	* 
	*								P R I V A T E 	
	* 
	* --------------------------------------------------------------------------------
	*/	
	//{
		private function bitwiseRigthShift( arr:Array/*int*/ ):void
		{
			var h:uint = arr.length;
			while ( h-- )
			{
				const res:int = arr[ h ] >> 1;
			}
		}
 
		private function divideIntoTwo( arr:Array/*int*/ ):void
		{
			var h:uint = arr.length;
			while ( h-- )
			{
				const res:int = arr[ h ] / 2;
			}
		}
 
		private function multiplyByHalf( arr:Array/*int*/ ):void
		{
			var h:uint = arr.length;
			while ( h-- )
			{
				const res:int = arr[ h ] *.5;
			}
		}
 
		private function modulo( arr:Array/*int*/ ):void
		{
			var h:uint = arr.length;
			while ( h-- )
			{
				const res:int = arr[ h ] % 2;
			}
		}
	//}
 
 
	}
 
}
SimpleTasksTester.swf   (34.5 Кб)
Вложения
Тип файла: swf SimpleTasksTester.swf (34.5 Кб, 67 просмотров)


Последний раз редактировалось fish_r; 27.05.2014 в 12:24.