图片的放大和缩小的性能分析

本文通过代码实验证明了,对于Bitmap.Config.ARGB_8888格式的图片,在目标区域固定的情况下,从一个小图片放大来绘制到目标区域的性能比从和目标区域一样大小的图片直接画到目标区域慢很多,而从一个大图片缩小来绘制到目标区域的性能则要快很多。
图片的放大和缩小的性能分析<wbr style="line-height:25px"><br style="line-height:25px"><span style="color:#800000; line-height:25px"><wbr style="line-height:25px">放大</wbr></span><wbr style="line-height:25px"><br style="line-height:25px"><span style="color:#000080; line-height:25px">在目标区域一定的情况下。对于Bitmap.Config.ARGB_8888格式的图片</span><br style="line-height:25px"><span style="color:#000080; line-height:25px">从一个小图片放大来绘画到目标区域的性能比从和目标区域一样大小的图片直接画到目标区域</span><span style="line-height:25px; color:rgb(0,0,128)"><wbr style="line-height:25px">慢很多</wbr></span><wbr style="line-height:25px"><span style="color:#000080; line-height:25px">。</span><br style="line-height:25px"><span style="color:#000080; line-height:25px">在实例1:</span><wbr style="line-height:25px"><span style="color:#99cc00; line-height:25px">前者</span><span style="color:#000080; line-height:25px">所花的时间是</span><span style="color:#808000; line-height:25px">后者</span><span style="color:#000080; line-height:25px">的两倍<wbr style="line-height:25px">。</wbr></span><br style="line-height:25px"><wbr style="line-height:25px"><span style="color:#800000; line-height:25px">缩小</span><wbr style="line-height:25px"><br style="line-height:25px"><span style="color:#000080; line-height:25px">在目标区域一定的情况下。对于Bitmap.Config.ARGB_8888格式的图片<br style="line-height:25px"> 从一个大图片缩小来绘画到目标区域的性能比从和目标区域一样大小的图片直接画到目标区域<wbr style="line-height:25px">要快很多<wbr style="line-height:25px">。<br style="line-height:25px"> 在实例1:</wbr></wbr></span><span style="color:#808000; line-height:25px">后者</span><span style="color:#000080; line-height:25px">所花的时间是</span><span style="color:#808000; line-height:25px">前者</span><span style="color:#000080; line-height:25px">的<wbr style="line-height:25px">3到4倍<wbr style="line-height:25px">。</wbr></wbr></span><br style="line-height:25px"> 这个<span style="line-height:25px"><wbr style="line-height:25px">puzzle</wbr></span><wbr style="line-height:25px">.<br style="line-height:25px"> 图片的放大缩小性能测试代码如下<br style="line-height:25px"> 实例1:<br style="line-height:25px"><span style="color:#3366ff; line-height:25px">Bitmapimg;<br style="line-height:25px"> BitmapsmallImage;<br style="line-height:25px"> finalstaticintkSmallImageW=100;<br style="line-height:25px"> finalstaticintkSmallImageH=100;<br style="line-height:25px"></span><span style="color:#993300; line-height:25px">publicvoid</span><span style="color:#ff6600; line-height:25px">repaint()</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">{</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">try{</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">Canvasc=newCanvas();</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px"></span><span style="color:#993300; line-height:25px">if</span><span style="color:#3366ff; line-height:25px">(img==null)</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">{</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">img=Bitmap.createBitmap(Game.width,Game.height,Bitmap.Config.ARGB_8888);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px"></span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">}</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px"></span><span style="color:#993300; line-height:25px">if</span><span style="color:#3366ff; line-height:25px">(smallImage==null)</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">{</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">smallImage=Bitmap.createBitmap(kSmallImageW,kSmallImageH,Bitmap.Config.ARGB_8888);</span><br style="line-height:25px"><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">}</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">c.setBitmap(img);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">c.drawColor(0xFF00FF0F);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">c.setBitmap(smallImage);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">c.drawColor(0xFF0000FF);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">intk=10;</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">longtimeStart=System.currentTimeMillis();</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">longtime=0;</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">RectsrcRect=newRect(0,0,smallImage.getWidth(),smallImage.getHeight());</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">RectdesRect=newRect(0,0,Game.width,Game.height);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px"></span><span style="color:#993300; line-height:25px">for</span><span style="color:#3366ff; line-height:25px">(inti=0;i&lt;k;i++)</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">canvas.drawBitmap(img,0,0,null);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">time=System.currentTimeMillis()-timeStart;</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">System.out.print("timenormal:"+time);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">timeStart=System.currentTimeMillis();</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px"></span><span style="color:#993300; line-height:25px">for</span><span style="color:#3366ff; line-height:25px">(inti=0;i&lt;k;i++)</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">canvas.drawBitmap(smallImage,null,desRect,null);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">time=System.currentTimeMillis()-timeStart;</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">System.out.print("timezoomlarger:"+time);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px"></span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">desRect=newRect(0,0,smallImage.getWidth(),smallImage.getHeight());</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">c.setBitmap(smallImage);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">c.drawColor(0xFF0000FF);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">timeStart=System.currentTimeMillis();</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px"></span><span style="color:#993300; line-height:25px">for</span><span style="color:#3366ff; line-height:25px">(inti=0;i&lt;k;i++)</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">canvas.drawBitmap(img,null,desRect,null);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">time=System.currentTimeMillis()-timeStart;</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">System.out.print("--timenormal:"+time);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">c.drawColor(0xFFF000FF);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">timeStart=System.currentTimeMillis();</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px"></span><span style="color:#993300; line-height:25px">for</span><span style="color:#3366ff; line-height:25px">(inti=0;i&lt;k;i++)</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">canvas.drawBitmap(smallImage,100,100,null);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">time=System.currentTimeMillis()-timeStart;</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">System.out.println("--timezoomsmaller:"+time);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">}catch(Exceptione)</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">{</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">System.out.println("erro:"+e);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">e.printStackTrace();</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">}</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">surfaceHolder.unlockCanvasAndPost(canvas);</span><br style="line-height:25px"><span style="color:#3366ff; line-height:25px">}</span><br style="line-height:25px"><span style="line-height:25px"><wbr style="line-height:25px">以上是在手机上测试的结果</wbr></span><wbr style="line-height:25px">:<br style="line-height:25px"><span style="color:#3366ff; line-height:25px">time</span><span style="color:#99cc00; line-height:25px">normal</span><span style="color:#3366ff; line-height:25px">:32timezoom</span><span style="color:#808000; line-height:25px">larger:</span><span style="color:#3366ff; line-height:25px">59--time</span><span style="color:#339966; line-height:25px">normal</span><span style="color:#3366ff; line-height:25px">:3--timezoom</span><span style="color:#008000; line-height:25px">smaller</span><span style="color:#3366ff; line-height:25px">:1<br style="line-height:25px"> timenormal:34timezoomlarger:59--timenormal:3--timezoomsmaller:1<br style="line-height:25px"> timenormal:33timezoomlarger:92--timenormal:3--timezoomsmaller:1<br style="line-height:25px"> timenormal:44timezoomlarger:97--timenormal:3--timezoomsmaller:1<br style="line-height:25px"> timenormal:61timezoomlarger:63--timenormal:4--timezoomsmaller:1<br style="line-height:25px"> timenormal:33timezoomlarger:59--timenormal:3--timezoomsmaller:1<br style="line-height:25px"> timenormal:32timezoomlarger:58--timenormal:4--timezoomsmaller:1<br style="line-height:25px"> timenormal:34timezoomlarger:123--timenormal:3--timezoomsmaller:0</span><br style="line-height:25px"> 注意上面的时间是画<span style="line-height:25px"><wbr style="line-height:25px">10次</wbr></span><wbr style="line-height:25px">的时间。</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)内容概要:本文档围绕基于遗传算法的异构分布式系统任务调度算法展开研究,重点介绍了一种结合遗传算法的新颖优化方法,并通过Matlab代码实现验证其在复杂调度问题中的有效性。文中还涵盖了多种智能优化算法在生产调度、经济调度、车间调度、无人机路径规划、微电网优化等领域的应用案例,展示了从理论建模到仿真实现的完整流程。此外,文档系统梳理了智能优化、机器学习、路径规划、电力系统管理等多个科研方向的技术体系与实际应用场景,强调“借力”工具与创新思维在科研中的重要性。; 适合人群:具备一定Matlab编程基础,从事智能优化、自动化、电力系统、控制工程等相关领域研究的研究生及科研人员,尤其适合正在开展调度优化、路径规划或算法改进类课题的研究者; 使用场景及目标:①学习遗传算法及其他智能优化算法(如粒子群、蜣螂优化、NSGA等)在任务调度中的设计与实现;②掌握Matlab/Simulink在科研仿真中的综合应用;③获取多领域(如微电网、无人机、车间调度)的算法复现与创新思路; 阅读建议:建议按目录顺序系统浏览,重点关注算法原理与代码实现的对应关系,结合提供的网盘资源下载完整代码进行调试与复现,同时注重从已有案例中提炼可迁移的科研方法与创新路径。
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)内容概要:本文提出了一种基于非支配排序的蜣螂优化算法(NSDBO),用于求解微电网多目标优化调度问题。该方法结合非支配排序机制,提升了传统蜣螂优化算法在处理多目标问题时的收敛性分布性,有效解决了微电网调度中经济成本、碳排放、能源利用率等多个相互冲突目标的优化难题。研究构建了包含风、光、储能等多种分布式能源的微电网模型,并通过Matlab代码实现算法仿真,验证了NSDBO在寻找帕累托最优解集方面的优越性能,相较于其他多目标优化算法表现出更强的搜索能力稳定性。; 适合人群:具备一定电力系统或优化算法基础,从事新能源、微电网、智能优化等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于微电网能量管理系统的多目标优化调度设计;②作为新型智能优化算法的研究与改进基础,用于解决复杂的多目标工程优化问题;③帮助理解非支配排序机制在进化算法中的集成方法及其在实际系统中的仿真实现。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注非支配排序、拥挤度计算蜣螂行为模拟的结合方式,并可通过替换目标函数或系统参数进行扩展实验,以掌握算法的适应性与调参技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值