flash像素操作setPixels,setVector,copyPixels,draw性能比较

本文通过实际测试对比了AS3中四种不同的像素操作方法:setVector、setPixels、draw和copyPixels的效率。结果显示copyPixels最快,其次是setVector和draw,而setPixels最慢。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自 http://www.cnblogs.com/heycup/archive/2011/01/24/1943012.html

 

看到有同学比较as3像素copy的效率的文章,得出的结论是:

copyPixels>setPixels>setVector

让我感到非常不理解的是新api setvector为何远远落后于其他两个呢,从原则上,setvector应该比setpixels快,今天碰巧做了测试,发现和上面的测试结果不太一样

1var start:int = getTimer();
2            for (var j:int = 0; j < 9999; j++) {
3                var arr:Vector.<uint> = bmd2.getVector(new Rectangle(10, 20, 80, 80));
4                bmd1.setVector(new Rectangle(10, 10, 80, 80), arr);            
5            }
6            trace("setVector", getTimer() - start);

 

1var start:int = getTimer();
2            for (var i:int 0 ; i < 9999; i++) {
3                var arr:ByteArray = bmd2.getPixels(new Rectangle(10208080));
4                arr.position = 0;
5                bmd1.setPixels(new Rectangle(10108080), arr);            
6            }
7            trace("setPixels", getTimer() - start);
1var start:int = getTimer();
2            for (var j:int 0; j < 9999; j++) {
3                bmd1.copyPixels(bmd2, new Rectangle(10208080), new Point(1010));
4            }
5            trace("copyPixels", getTimer() - start);

 

1var start:int = getTimer();
2            for (var j:int 0; j < 9999; j++) {
3                bmd1.draw(bmd2,new Matrix(0.8,0,0,0.8),null,null,new Rectangle(1010,80,80));
4            }
5            trace("draw", getTimer() - start);

经过测试,执行1W次copy,setVector是800毫秒,setPixels是3973毫秒,draw870毫秒,当然最快的还是copyPixels:130毫秒

setPixels读取的速度比较慢,写的速度大家基本相同。

copyPixels>setVector>draw>setPixels

这样的结果才合理,看来文章不能简单看看,动手才更有意义。

原创文章版权所有:heycup@gmail.com,欢迎转载,请注明出处
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值