Показать сообщение отдельно
Старый 30.10.2012, 16:29
Deril_AS3 вне форума Посмотреть профиль Отправить личное сообщение для Deril_AS3 Найти все сообщения от Deril_AS3
  № 9  
Ответить с цитированием
Deril_AS3
 
Аватар для Deril_AS3

Регистрация: Oct 2012
Адрес: Hamburg
Сообщений: 22
Я сделал command pooling прототип: https://github.com/MindScriptAct/mvc...ee/release_1.3

Результат выглядит хорошо!

Тест для сравнения - сценарий:

- send a message
- execute command with dependencies
- command updates proxy
- proxy send data change message
- mediator handles data change massage.

результат: Сколько действий вы можете сделать в 1 миллисекунду.

RobetLegs 1 dependency - 46 runs/1ms
PureMvc cammand 1 dependency - 113 runs/1ms
mvcExpress command 1 dependency, No pooling - 375 runs/1ms
mvcExpress command 1 dependency, With pooling - 472 runs/1ms

mvcExpress cammand 5 dependencies, No pooling - 227 runs/1ms
mvcExpress cammand 5 dependencies, With pooling - 457 runs/1ms


Мне еще нужно проверить, как command pool тормозит всю систему... Но результаты выглядят хорошо!

как это использовать: вместо extend Command - использовать PooledCommand!

Код AS3:
package com.mindScriptAct.mvcExpressSpeedTest.controller {
...
public class TestCommand extends PooledCommand {
 
	[Inject]
	public var testProxy:TestProxy;
 
	public function execute(params:Object):void {
		testProxy.doStuff();
	}
 
}
}
Asynchronous command:

Код AS3:
package com.mindScriptAct.mvcExpressSpeedTest.controller {
...
public class TestCommand extends PooledCommand {
 
	[Inject]
	public var testProxy:TestProxy;
 
	public function execute(blank:Object):void {
		lock(); // diasble autamatic pooling.
		var imageLoader:Loader = new Loader();
		imageLoader.addEventListener(Event.COMPLETE, handleImmageLoad);
		imageLoader.load(new URLRequest("example.jpg"));
 
	}
 
	private function handleImmageLoad(event:Event):void {
		// do stuff...
		unlock(); // pool command.
	}
 
}
}