高性能编码技巧

  • 1、避免创建不必要的对象
    • 1、如果我们又一个需要拼接的字符串,优先考虑StringBuffer或者StringBuilder
    • 2、尽量使用基本数据类型代替封装类型,int比integer更加高效
    • 3、如果我们明确的知道调用方法会将这个返回的string在进行拼接操作的话,可以考虑返回一个StringBuffer对象来代替
    • 4、基本数据类型要优于对象数据类型,
      我们所要遵循的一个基本原则就是尽可能的少创建临时对象,越少的对象意味着越少的GC,同时也就意味着好的程序性能的体验
  • 2、静态由于抽象
    如果并不需要访问某一个对象中的某些字段,只是想调用它的某个方法来完成一项通用的功能,那么可以将这个方法设置成静态方法,会让调用的速度提升15%-20%,同时也不用为了调用这个方法而去创建对象了,这样还满足了上面的一个原则。
  • 3、对常量使用static final修饰符
  • 4、避免在内部调用Getters Setters方法
    在Android上这个技巧就不在那么受推崇了,因为子弹搜寻要比方法调用效率高的多,我们直接访问某个字段可能要比通过方法来访问这个字段快2-7倍,不过我们肯定不能仅仅因为效率的原因就放弃了这个技巧,编写代码还是要按照面象对象的思维的,但是我们可以在能优化的地方进行优化,比如说避免在内部调用getter/setter方法
  • 5、使用增强的For循环语法
    在默认情况下,我们应该使用增强for,但是在遍历ArrayList的时候,我们还是手写循环的方式
  • 6、考虑包而不是私有的内部类访问
  • 7、避免使用浮点数
  • 8、多使用系统封装好的API
  • 9、使用实现类比接口好
  • 10、将成员变量缓存到本地
    访问成员变量要比访问本地变量慢的多
for(int i = 0;i<this.mCount ; i++)  dumpltem(this.mItems[i]);
            最好改成以下这样:
            int count = this.mCount; Item[] items = this.mItems; for(int i = 0; i< count ; i++ ) dumpltems(items[i]);
            

另一个相似的原则是:永远不要在for的第二个条件中调用任何方法,

  • 在需要时候加载视图有时候你的布局可能需要一些复杂确很少被用到的视图,无论他们是item详情,进度指示器,或者撤销的消息,你都可以在需要的时候加载这些视图,来减少内存使用量并加快渲染速度,定义一个ViewStub,ViewStub是一个没有尺寸大小并且不会再布局中嵌套或者渲染任何东西的轻量级的视图,因此在视图层次展现或者隐藏他的代价非常小,每一个ViewStub仅仅需要包含android:layout属性来展现指定的布局
<ViewStub
                android:id="@+id/sub_import"
                android:inflatedId="@+id/panel_import"
                android:layout_gravity="bottom"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
                

当你要载入在ViewStub中定义的布局的时候,可以calling setVisibility(View.VISIBLE) or call inflate();

     ViewStub subimport = (ViewStub) findViewById(R.id.sub_import);
    
     subimport.inflate();
     subimport.setVisibility(View.VISIBLE);
             
* 注意:inflate()方法在视图渲染完毕后便直接展现该已渲染的视图View,因此如果你需要和布局交互的话,不需要再调用findViewById()方法-URL-协议版本、请求头、请求正文一个ViewStub是可见的或者渲染完毕,该元素便不再是视图层次的一部分,它被已渲染的布局替换,并且该布局的根视图的ID是在ViewStub中被android:infalteid属性指定的ID(被android:id指定的ID只有在这个ViewStub布局是可见/渲染完毕才是有效的)
    
* 注意:ViewStub的一个缺点是:目前它在要渲染的布局中并不支持<merge/>标签
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容