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)+"毫秒");

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

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

  • 相关阅读:
    [框架] DAO的作用以及和其他层的关联
    [框架] SSH所需要的jar包列表
    DLBBS工作总结
    只不过是R.java文件的特性出错信息:R.java was modified manually! Reverting to generated version!
    [jQuery] jQuery函数
    WebTeam多层系统框架(请高手提意见)
    对象基础知识
    Android 4.0 的软件测试
    顺序存储数据结构java实现
    xp下清除多余的鼠标右键菜单
  • 原文地址:https://www.cnblogs.com/didiaodidiao/p/9249485.html
Copyright © 2011-2022 走看看