android代码优化技术记录

1、length、length()、size的优化

举例:

int array_one[] = {1,2,3,4,5,6,7,8,9,10};
int array_two[] = {1,2,3,4,5,6,7,8,9,10,11..100};
for(int i=0;i<array_one.length;i++)
{
      for(int k=0;k<array_two.length;k++)
      {
            doSth();
       }
}

上述代码,系统需要对每次的for循环进行数组长度的计算,系统开销自然加大,我们可以这样:

int array_one[] = {1,2,3,4,5,6,7,8,9,10};
int array_two[] = {1,2,3,4,5,6,7,8,9,10,11..100};

int length_array_one = array_one.length;
int length_array_two= array_two.length;

for(int i=0;i<length_array_one;i++)
{
      for(int k=0;k<length_array_two;k++)
      {
            doSth();
       }
}

同理在计算jsonArray或者其他数组的时候,就可以通过上述方式进行优化

2、for、while的优化

int array[] = {1,2,3,4..100};
int length_array = array.length;

for(int i=0;i<length_array;i++)//假设我们寻找array中元素等于20的元素
{

     if(i == 20)
    {
        doSth();
      }
}

如果你已经在循环中,完成了指定的业务,这个时候没有其他业务的话,还继续进行for循环,这样时间成本就增大了,我们可以这样优化:

int array[] = {1,2,3,4..100};
int length_array = array.length;

for(int i=0;i<length_array;i++)//假设我们寻找array中元素等于20的元素
{

     if(i == 20)
    {
        doSth();
        break;
      }
}

在适当的时候从循环中跳出来。同理如果是while循环的话,就把while 的循环条件调整为false,然后退出来

3、变量生命周期的优化

int array[] = {1,2,3,4..100};
int length_array = array.length;

for(int i=0;i<length_array;i++)
{
   String str[] = new string[1000];
   doSth(str);   //str只是作为参数使用,不对其进行修改
}

看上述代码,每次循环都有新建一个数组,系统的空间使用成本成本增加我们可以这样:

int array[] = {1,2,3,4..100};
int length_array = array.length;

String str[] = new string[1000];

for(int i=0;i<length_array;i++)
{
   doSth(str);   //str只是作为参数使用,不对其进行修改
}

这样的调整,只需要新建一次,就有效的缩小了空间成本

时间: 2024-12-21 08:46:04

android代码优化技术记录的相关文章

[转载]Android开发常用调试技术记录

ANDROID 调试技术: 1)Ps 指令 ls –l /proc/27/ cat /proc/27/cmdline       #cmdline文件表示了这个进程所在的命令行. cat /proc/27/status      #status 文件表明了获知这个进程的相关信息. #stat包含更多信息,但较难读. cat /proc/27/task      #task 文件表明了进程信息. 2)vmstat 查看虚拟内存统计信息 3)top 统计CPU的消耗情况 4)dumpstat  du

Android开发技术周报183学习记录

Android开发技术周报183学习记录 教程 Android性能优化来龙去脉总结 记录 一.性能问题常见 内存泄漏.频繁GC.耗电问题.OOM问题. 二.导致性能问题的原因 1.人为在ui线程中做了轻微的耗时操作,导致ui线程卡顿. 2.layout过于复杂,无法在16ms完成渲染.使用RelativeLayout替换LinearLayout,说是可以减少布局层次,然而,现在不再建议使用RelativeLayout,因为ConstraintLayout才是一个更高性能的消灭布局层级的神器.Co

浅谈Android保护技术__代码混淆

浅谈Android保护技术__代码混淆 代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为.将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字.比如改写成单个字母,或是简短的无意义字母组合,甚至改写成"__"这样的符号,使得阅读的人无法根据名字猜测其用途.对于支持反射的语言,代码混淆有可能与反射发生冲突.代码混淆并不能真正阻止反向工程,只能增大其难度.因此,对于对安全性要求很高的场合,仅仅

[转载] Android逃逸技术汇编

本文转载自: http://blogs.360.cn/360mobile/2016/10/24/android_escape/ 摘    要 传统逃逸技术涉及网络攻防和病毒分析两大领域,网络攻防领域涉及的逃逸技术主要为网络入侵逃逸技术,病毒分析领域涉及到的逃逸技术主要包括针对静态分析.动态分析的木马逃逸技术. 本文介绍的Android木马逃逸技术研究了针对用户感知.杀软查杀.沙箱动态养殖和人工分析的各种逃逸技术. 大多数Android木马的作恶途径是长期留存用户终端,通过持续性作恶获取收益. 为

Android官方技术文档翻译——清单合并

本文译自Android官方技术文档<Manifest Merger>,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger. 翻译不易,转载请注明CSDN博客上的出处: http://blog.csdn.net/maosidiaoxian/article/details/42671999 翻译工作耗时费神,如果你觉得本文翻译得还OK,请点击文末的"顶":如有错讹

Android官方技术文档翻译——开发工具的构建概述

本文译自Android官方技术文档<Build Overview>,原文地址:http://tools.android.com/build. 因为<Android Lint Checks>这篇太长了,没译完,所以这次就发一下<Build Overview>的翻译好了. 这一篇是对Android 的开发工具进行构建的概述,比如Android Studio,Android Gradle 插件,SDK和ADT等. 翻译不易,转载请注明CSDN博客上的出处: http://bl

Android高斯模糊技术,实现毛玻璃效果(转)

本博客转自郭霖公众号:http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650235930&idx=1&sn=e328709c41ae208a9e41ef79d38cbeed&scene=24&srcid=09104fpQDG98JcRcUB9Ec7BN#wechat_redirect http://blog.csdn.net/grp0916/article/details/50494712 Android高

【Android实战】记录自学自定义GifView过程,能同时支持gif和其他图片!【实用篇】

之前写了一篇博客,<[Android实战]记录自学自定义GifView过程,详解属性那些事![学习篇]> 关于自定义GifView的,详细讲解了学习过程及遇到的一些类的解释,然后完成了一个项目,能通过在xml加入自定义 view (MyGifView)中加入自定义属性(my:gif_src = "@drawable/coffee"),达到播放gif图片的效果. 但是,有几个问题 1.gif_src 属性只支持 gif 图,并不支持其他类型的图片 2.只支持默认的引用图片,不

android的入门记录(一)

---恢复内容开始--- 首先,这是我人生中的第一篇博客,也许严格意义上它并不算是一篇博客,但也代表着一些东西. 前言 我们往往在开始学习一门新的语言或者课程时会遇见各式各样的问题,比如说:环境搭建遇到问题,资源不知道去哪里下载,代码令人无法下手,甚至不知道如何运行. 于是便产生了这样的一篇文章--关于我Android入门的记录,以及各式各样问题的解决. 首先从资源的寻找说起. 第一节 开发环境的搭建 Android开发首先需要搭建运行环境,它们分别为 1.JDK:Java开发工具包,因为安卓使