精华内容
下载资源
问答
  • 关于【在循环体内定义对象还是在循环体外定义对象】这个问题网络上有很多文章写过,在循环体外定义对象支持者更多,理由是在循环体内创建对象会有多个对象引用存在。但是我在实际测试之后认为两种写法是 没有区别 ...

    关于【在循环体内定义对象还是在循环体外定义对象】这个问题网络上有很多文章写过,在循环体外定义对象的支持者更多,理由是在循环体内创建对象会有多个对象引用存在。但是我在实际测试之后认为两种写法是 没有区别 的。

    测试环境Java版本:1.8.0_101
    反编译工具:Java Decompiler

    测试代码如下

    • 在循环体内定义对象
    package other.defineVarInLoop;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    class DefineVarInLoop
    {
    	public static void main(String[] args)
    	{
    		List<Map<String, Object>> mapList = new ArrayList<Map<String,Object>>();
    		for (int i = 0; i < 20; i++)
    		{
    			Map<String, Object> tmpMap = new HashMap<String, Object>();
    			tmpMap.put("a", 1);
    			tmpMap.put("b", 2);
    			
    			mapList.add(tmpMap);
    		}
    	}
    }
    
    • 在循环体内定义对象 反编译之后的代码
    package other.defineVarInLoop;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    class DefineVarInLoop
    {
      public static void main(String[] args)
      {
        List<Map<String, Object>> mapList = new ArrayList();
        for (int i = 0; i < 20; i++)
        {
          Map<String, Object> tmpMap = new HashMap();
          tmpMap.put("a", Integer.valueOf(1));
          tmpMap.put("b", Integer.valueOf(2));
          
          mapList.add(tmpMap);
        }
      }
    }
    
    
    • 在循环体外定义对象
    package other.defineVarInLoop;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    class DefineVarOutLoop
    {
    	public static void main(String[] args)
    	{
    		Map<String, Object> tmpMap;
    		List<Map<String, Object>> mapList = new ArrayList<Map<String,Object>>();
    		for (int i = 0; i < 20; i++)
    		{
    			tmpMap = new HashMap<String, Object>();
    			tmpMap.put("a", 1);
    			tmpMap.put("b", 2);
    			
    			mapList.add(tmpMap);
    		}
    	}
    }
    
    
    • 在循环体外定义对象 反编译之后生成的代码
    package other.defineVarInLoop;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    class DefineVarOutLoop
    {
      public static void main(String[] args)
      {
        List<Map<String, Object>> mapList = new ArrayList();
        for (int i = 0; i < 20; i++)
        {
          Map<String, Object> tmpMap = new HashMap();
          tmpMap.put("a", Integer.valueOf(1));
          tmpMap.put("b", Integer.valueOf(2));
          
          mapList.add(tmpMap);
        }
      }
    }
    
    

    因为反编译之后生成的代码是一样的,所以我认为这两种写法在Java 8 环境下是没有区别的。

    之前版本确实有【尽量不要在循环体内定义变量】的建议,但是看测试结果在Java 8已经做了优化,这两种写法效率上没有区别。

    展开全文
  • 写代码时候总是能碰到这样结构 for(.......){ int temp = ? int temp = ?; for( ...........){ } ...

    写代码的时候总是能碰到这样的结构

     

    for(.......){                                       int temp = ?

        int temp = ?;                                   for( ...........){

    }                                                          }

     

    不知道编译器会不会对这两种结构做优化,先测试一下大数据集的执行效率对比

    然后进行内存测试

     

    811ms

    848ms

     

    不能说明问题,执行多次,结果都差不多,现在加大数据的数量

    37s

    37s

    精确到秒,时间竟然是一致的,我也很惊讶,我以为 变量定义在内部每次被创建会消耗大量时间

     

     

     

    下面是内存测试

     

    注意,此时gc应该在后台是有工作的

     

     

     

    变量定义在内部,加快了垃圾回收的速度,我也是经过了多次测试,一开始前后内存相同,我还以为是代码问题

     

     

    结论是变量定义在内部开销可能第一点,但是不否认多任务情况下,gc繁忙的时候,采取哪种方式更优的问题,不过将变量定义在内部,有助于代码的可读性。

     

     

    展开全文
  • 一、关于循环中使用临时变量定义循环内、外执行速度测试。 比较:临时变量定义循环内,要比定义循环外执行速度稍快,但实际效率差距很小。

    一、关于Java循环中使用的临时变量定义在循环内、外的执行速度测试( Android )。

    1、定义在循环内:
    测试代码

    for (int i = 0; i < list.size(); i++) {
        TestEntity tmp = list.get(i);
        if (tmp != null) {
            tmp.mName = String.valueOf(i);
        }
    }

    测试方法:执行100000循环,测试5次取平均值。
    测试结果:230,254,276,292,299 = 270.2 毫秒

    2、定义在循环外:
    测试代码

    TestEntity tmp = null;
    for (int i = 0; i < list.size(); i++) {
        tmp = list.get(i);
        if (tmp != null) {
            tmp.mName = String.valueOf(i);
        }
    }

    测试方法:执行100000循环,测试5次取平均值。
    测试结果:288,263,265,258,248 = 264.4 毫秒

    比较:临时变量定义在循环内,要比定义在循环外执行速度稍快,但实际效率差距很小。

    展开全文
  • python的循环测试

    2017-09-18 23:27:00
    判断为等于58时候跳出循环。  首先定义一个固定变量  int 函数是更改input输入文字类型 if guess_age == age_of_oldboy : 不加intguess_age 函数 是字符串类型    判断条件为真时候,跳出循环  ...

    这段代码要实现的是:猜数字58 ,猜三次,三个判断条件和一个结束条件。判断为等于58的时候跳出循环。

      首先定义一个固定变量

      int 函数是更改input输入的文字类型 if guess_age == age_of_oldboy : 


    不加int guess_age 函数 是字符串类型

      

       判断条件为真的时候,跳出循环

      判断条件为假时循环三次结束并打印“you have tried too many times.. fuck off”

     

    转载于:https://www.cnblogs.com/haozheyu/p/7545929.html

    展开全文
  • mysql 操作同样有循环语句操作,网上说有3中标准的循环方式: while 循环 、...目前我只测试了 while 循环: delimiter $$ // 定义结束符为 $$ drop procedure if exists wk; // 删除 已有 存储过程 create procedu
  • 动力电池的循环寿命测试怎么收费,哪里可以做电池的循环寿命测试锂电池的循环寿命是指锂电池随着充放电周期增加,电芯放电容量逐渐衰减,当衰减率到一定比例时电池寿命终止,循环寿命是反映电芯性能重要参数。...
  • 测试代码:class Test { public: Test() { std::cout &lt;&lt; __func__ &lt;&lt; "\n"; } ~Test() { std::cout &lt;&lt; __func__ &lt;&lt; "\n"; } }; ...
  • 动力电池的循环寿命测试怎么收费,哪里可以做电池的循环寿命测试锂电池的循环寿命是指锂电池随着充放电周期增加,电芯放电容量逐渐衰减,当衰减率到一定比例时电池寿命终止,循环寿命是反映电芯性能重要参数。...
  • 循环队列的测试

    2007-10-27 11:46:00
    循环队列的测试用一 String[]数组演示循环对列流程代码:MyQueue.java:public class MyQueue { private int front=-1,rear=-1; //对列头,尾声明 private String[] queue; //定义一String数组//构造器,...
  • while循环测试题2

    2021-01-19 17:01:08
    while循环测试题这是一道Python新手略微抓狂题目 这是一道Python新手略微抓狂题目 下面这道程序是对学生学习情况调研问卷,但是其中有部分关键语句被屏蔽了,聪明读者,请你拿上武器,戴上头盔,骑上骏马...
  • for(var i=0;i&lt;2;i++){ console.log(i) } console.log(i) 经过测试:在IE9+,谷歌,火狐中。都出现了0,1,2三个值。 所以其作用域在整个上下文中。
  • 想想除了看书时之外 有时也会幸运地有点想法 所以再开一个类别来记录吧~ 在下希望这个分类下的博文越多越好 -.-——中午记录———晚上有场...【看书】for循环的定义变量结合最近的实际体验和一些测试 在这里再补
  • 1.集合(set) 的定义 集合(set)是一个无序不重复元素的序列 可以使用大括号{ }或者set( )函数创建集合 创建一个空集合是用set([ ]),而不是set{ },用set{ }来创建他是一个dict字典类型 2.集合的创建 3.集合的特性 ...
  • 原文作者:Tynam.Yang原文链接:https://www.cnblogs.com/tynam/p/9078274.html一、测试的流程测试贯彻在产品生命周期中的每一个环节,从需求提出开始到测试计划、测试设计以及测试用例设计与评审及执行,最后进行...
  • Python+UI自动化测试定义变量python定义变量并输出#1定义整形变量,并输出#2定义数组并输出,对象全部输出,指定输出,数组长度输出#3.对数组进行拼接后输出将arry数组拼接在movies数组后面拼接并输出#4.对数组...
  • 2.自动化测试的实际目的是写代码帮你测试,自动化所使用的语言和你所测试的系统语言没有关系。3.计算机语言的相关常识:1) 计算机只认识2进制的 0 12) 编译型语言:写好代码之后就把代码编译成二进制文件,然后运行...
  • 测试bug级别定义

    千次阅读 2015-09-30 08:37:48
    测试bug级别定义 致命bug:不能完全满足系统要求,系统停止运行,系统重要部件无法运行,系统崩溃或者挂起等导致系统不能正常运行。 修改优先级为最高,该级别问题需要立即修改。 1.系统崩溃  2.导致程序重启...
  • public class WhileStu{  /*  while:选择一段代码是否重复执行;  while(布尔表达式A){  代码B ... 当表达式A值为true时候,执行代码B,继续判断表达式A值,如果为true...定义循环变量(控制循环次数变量)  
  • 以前开发一直用是sql server 定义临时变量 循环插入数据到表中已经成为一种固定模式,本来想orcale应该也一样吧 都是数据库.. 结果被现实无情打击到了。在网上找办法,求大神 最后终于实现 插入了几行测试...
  • 这个两个同学 @罗夏 @llzcmxiaotong 搬出了java生成字节码,如果大家看得懂。很容易得出结论就是,对于Java来说...我想说是: 循环外申明变量不但效率不会变高,在循环外申明变量,内存占用会更大!不但没有正面...
  • 然后对其进行试验,在10 1000 10000时候都相同 当到10000时候递归直接跳出 计算机虽然递归方式比较简洁,且...一下是自己测试 代码 #include"pch.h" #include <iostream> using namespace std; void prin...
  • 【前言】当构件的某个点在承受足够大扰动应力,经过足够多的循环后会形成裂纹,这一现像被称为疲劳。...名义应力法名义应力法是对标准构件施加额定应力测试的方法,根据最大循环应力与屈服应力的...
  • python概念及定义变量,条件判断,循环 1.常见的脚本语言:python、java、php、GO、ruby。。 2.自动化测试的实际目的是写代码帮你测试,自动化所使用的语言和你所测试的系统语言没有关系。 3.计算机...
  • DELIMITER 其实就是定义了一个语句执行结束符MySql中delimiter:http://blog.sina.com.cn/s/blog_4c197d420101d3oa.html1:定义存储过程DROPPROCEDUREtest_insert;DELIMITER$$//定义结束符CREATEPROCEDUREtest_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,524
精华内容 609
关键字:

循环测试的定义