zoukankan      html  css  js  c++  java
  • java中如何测试一段代码的运行时间

    一、以毫秒为单位。
    long startTime = System.currentTimeMillis(); //获取开始时间

    doSomething(); //测试的代码段

    long endTime = System.currentTimeMillis(); //获取结束时间

    System.out.println("程序运行时间:" + (endTime - startTime) + "ms"); //输出程序运行时间

     

    二、以纳秒为单位。

    long startTime=System.nanoTime(); //获取开始时间

    doSomeThing(); //测试的代码段

    long endTime=System.nanoTime(); //获取结束时间

    System.out.println("程序运行时间: "+(endTime-startTime)+"ns");

     

    时间换算:

    1小时=60分钟

    1分钟=60秒

    1秒=1000毫秒

    1毫秒=1000微秒

    1微秒=1000纳秒

    1纳秒=1000皮秒

    我们一java中的拼接字符串为例子

    一毫米为例,纳秒用的方式一模一样。

     

     1 final int N = 100000;
     2 
     3 
     4 
     5 //演示低效的方法拼接字符串
     6 long starTime = System.currentTimeMillis();
     7 String str = "*";
     8 for (int i = 0; i < N; i++) {
     9     str += "*";
    10             
    11 }
    12 long endTime = System.currentTimeMillis();
    13 System.out.println("+=用时:"+(endTime - starTime)+"毫秒");
    14 
    15 
    16 //使用StringBuffer进行字符串拼接(自接对内存进行修改)  大约是前面的(+=)1000倍
    17  starTime = System.currentTimeMillis();
    18 StringBuffer str1 = new StringBuffer("*");
    19 for (int i = 0; i < N; i++) {
    20         str1.append("*");//拼接 追加
    21                 
    22 }
    23  endTime = System.currentTimeMillis();
    24 System.out.println("StringBuffer的append用时:"+(endTime - starTime)+"毫秒");
    25 
    26 
    27 
    28  //StringBuffer 的加强版 StringBuilder java1.5以后   ,StringBuilder效率大约是前面的StringBuffer的4 5 倍
    29 starTime = System.currentTimeMillis();
    30 StringBuilder str2 = new StringBuilder("*");
    31 for (int i = 0; i < N; i++) {
    32         str2.append("*");//拼接 追加
    33                 
    34 }
    35 endTime = System.currentTimeMillis();
    36  System.out.println("StringBuilder的append用时:"+(endTime - starTime)+"毫秒");

    这个程序还不完成请读者自行补充。

    运行结果如下(现在知道用+=来拼接字符串是多么的低效了吧);

  • 相关阅读:
    JSP具体条款——response对象
    智课雅思词汇---三、aud和auto和bene是什么意思
    如何实现无刷新图片上传
    智课雅思词汇---二、词根acu和acr
    FormData是什么
    ajax如何上传文件(整理)
    js插件---评分插件Rating如何使用
    js插件---Amaze UI dialog如何使用
    js插件---layer.js使用体验是怎样
    算法答疑---06:月度开销
  • 原文地址:https://www.cnblogs.com/didiaodidiao/p/9249485.html
Copyright © 2011-2022 走看看