• 8、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只是作为参数使用,不对其进行修改
    }

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

    4、频繁的操作数据库

    现在有个需求是这样的:定时器每隔15秒,获取一次售罄id列表,通过id找到数据库中对应的名称,进而进行操作。
    我之前的做法是在每次找名称的时候,打开数据库得到索引。

    那么修改后:每次更改菜单时就记住索引,那么在获取名称时,只需要进行操作而不需要再进行数据库的频繁打开、关闭了

  • 相关阅读:
    洛谷-P1855 榨取kkksc03
    Error: ORA-06502: PL/SQL: 数字或值错误 : character string buffer too small(触发器中使用系统动态视图导致)
    jwt ctf
    apktool+nuclei mobile
    Subdomain Takeover via Fastly ( Steps )
    乱七八糟
    Recon
    推荐几个我感觉不错的tips
    子域名收集
    清除Cookie的数据
  • 原文地址:https://www.cnblogs.com/kunyashaw/p/4260745.html
Copyright © 2020-2023  润新知