注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

图片缩放的性能分析  

2010-09-10 12:59:44|  分类: Android绘画 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
图片的放大和缩小的性能分析
放大
在目标区域一定的情况下。对于Bitmap.Config.ARGB_8888格式的图片
 从一个小图片放大来绘画到目标区域的性能比从和目标区域一样大小的图片直接画到目标区域慢很多
在实例1:前者所花的时间是后者的两倍
缩小
在目标区域一定的情况下。对于Bitmap.Config.ARGB_8888格式的图片
从一个大图片缩小来绘画到目标区域的性能比从和目标区域一样大小的图片直接画到目标区域要快很多
在实例1:
后者所花的时间是前者3到4倍
这个puzzle.
图片的放大缩小性能测试代码如下
实例1:
    Bitmap img;
    Bitmap smallImage;
    final static int kSmallImageW=100;
    final static int kSmallImageH=100;
    
public void repaint()
    {
        try{
        Canvas c=new Canvas();
          if(img==null)
          {
               img=Bitmap.createBitmap(Game.width, Game.height,Bitmap.Config.ARGB_8888);
               
          }
          if(smallImage==null)
          {
              smallImage=Bitmap.createBitmap(kSmallImageW, kSmallImageH,Bitmap.Config.ARGB_8888);  

          }
           c.setBitmap(img);
           c.drawColor(0xFF00FF0F);
           c.setBitmap(smallImage);
           c.drawColor(0xFF0000FF);
              int k=10;
        long timeStart=System.currentTimeMillis();
        long time=0;
          Rect srcRect=new Rect(0,0,smallImage.getWidth(),smallImage.getHeight());
          Rect desRect=new Rect(0,0,Game.width,Game.height);
          for(int i=0;i<k;i++)
              canvas.drawBitmap(img, 0, 0, null);
          time=System.currentTimeMillis()-timeStart;
          System.out.print("time normal:"+time);
          timeStart=System.currentTimeMillis();
          for(int i=0;i<k;i++)
              canvas.drawBitmap(smallImage, null, desRect, null);
          time=System.currentTimeMillis()-timeStart;
          System.out.print("time zoom larger:"+time);
        
          desRect=new Rect(0,0,smallImage.getWidth(),smallImage.getHeight());
           c.setBitmap(smallImage);
           c.drawColor(0xFF0000FF);
          timeStart=System.currentTimeMillis();
          for(int i=0;i<k;i++)
              canvas.drawBitmap(img, null, desRect, null);
          time=System.currentTimeMillis()-timeStart;
          System.out.print("--time normal:"+time);
          c.drawColor(0xFFF000FF);
          timeStart=System.currentTimeMillis();
          for(int i=0;i<k;i++)
              canvas.drawBitmap(smallImage,100, 100, null);
          time=System.currentTimeMillis()-timeStart;
          System.out.println("--time zoom smaller:"+time);
        }catch(Exception e)
        {
            System.out.println("erro:"+e);
            e.printStackTrace();
        }
          surfaceHolder.unlockCanvasAndPost(canvas);
    }
以上是在手机上测试的结果
time normal:32time zoom larger:59--time normal:3--time zoom smaller:1
time normal:34time zoom larger:59--time normal:3--time zoom smaller:1
time normal:33time zoom larger:92--time normal:3--time zoom smaller:1
time normal:44time zoom larger:97--time normal:3--time zoom smaller:1
time normal:61time zoom larger:63--time normal:4--time zoom smaller:1
time normal:33time zoom larger:59--time normal:3--time zoom smaller:1
time normal:32time zoom larger:58--time normal:4--time zoom smaller:1
time normal:34time zoom larger:123--time normal:3--time zoom smaller:0

注意上面的时间是画10次的时间。
  评论这张
 
阅读(628)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017