论坛首页 Java企业应用论坛

System.currentTimeMillis()时间问题

浏览 5407 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-09-29  
不知道大家有没有遇到下面这种情况:
 long stime = System.currentTimeMillis();
        String[] strs = str.split(" ");
        long sendtime = System.currentTimeMillis();
        System.out.println("String.split() spend time:" + (sendtime - stime));

输出的结果为:String.split() spend time:0

为什么统计出来的时间为0呢??但有时候它还是会出来一个具体的数字。


求解。。
   发表时间:2011-09-29  
public static long currentTimeMillis()返回以毫秒为单位的当前时间。注意,当返回值的时间单位是毫秒时,值的粒度取决于基础操作系统,并且粒度可能更大。例如,许多操作系统以几十毫秒为单位测量时间。

要测试执行时间请用 nanoTime()

public static long nanoTime()返回最准确的可用系统计时器的当前值,以毫微秒为单位。
此方法只能用于测量已过的时间,与系统或钟表时间的其他任何时间概念无关。返回值表示从某一固定但任意的时间算起的毫微秒数(或许从以后算起,所以该值可能为负)。此方法提供毫微秒的精度,但不是必要的毫微秒的准确度。它对于值的更改频率没有作出保证。在取值范围大于约 292 年(263 毫微秒)的连续调用的不同点在于:由于数字溢出,将无法准确计算已过的时间。

以上内容来之JDK的API说明,注意去看源代码的注释都有

0 请登录后投票
   发表时间:2011-09-29  
你将中间的操作放大10w倍。如果还不理想,100w知道得到你想要的值。
主要因为你的操作几乎可以忽略不计,说简单点就是太简单了,外面套个循环就可以了~
0 请登录后投票
   发表时间:2011-09-29  
这种问题为什么不好好想象就网上发?难道API都不看的么?直接去看API就知道结果的问题,怪不得都说帖子质量下降。。。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics