今天突然遇到一个问题,如何得到某段代码运行所花的时间,刚开始System.currentTimeMillis()搞了半天,我靠,所花的时间一直是0,电脑太神奇了?运行时间都可以忽略不计?
上网查,这才发现System.currentTimeMillis()精确到的是ms,原来代码运行太快了,用ms无法做它的运行时间单位。JDK1.5之后java中的计时给出了更精确更给力的方法:System.nanoTime(),输出的精度是纳秒ns级别
运行,果然吖。
有个需要注意的地方,不能用来计算今天是哪一天,这个你懂得
文章出自http://blog.sina.com.cn/s/blog_833611cd0100vamg.html
代码如下
Test3.java
public class Test3 {
public static void main(String[] args) {
String[] a = new String[] { "aaa", "aaa", "ccc" };
String[] b = new String[] { "aaa", "bbb", "ccc" };
Clock clock = Clock.getClock();
long start = System.nanoTime(); // 获取开始时间
System.out.println(equals(a,b));
long end = System.nanoTime(); // 获取结束时间
clock.stopAndPrint("耗时:");
System.out.println(end + "===" + start);
}
//比较两个string[] 无序是否相等
public static boolean equals(String a[],String b[]){
if(a.length!=b.length) return false;
int n=a[0].hashCode()^b[0].hashCode();
for(int i=1;i<a.length;i++){
n^=a[i].hashCode()^b[i].hashCode();
}
if(n==0) return true;
return false;
}
}
Clock.java
public class Clock {
private long start;
private Clock() { }
public static Clock getClock() {
Clock instance = new Clock();
instance.start = System.nanoTime();
return instance;
}
public void reset() {
this.start = System.nanoTime();
}
public long stop() {
return System.nanoTime() - start;
}
public void stopAndPrint(String name) {
long diff = System.nanoTime() - start;
System.out.println(name + " " + diff + " ns");
}
}
分享到:
相关推荐
System.nanoTime() System.currentTimeMillis() SystemClock.uptimeMillis() SystemClock.elapsedRealtime() SystemClock.currentThreadTimeMillis 0、时间的单位: 秒:second 毫秒:Millisecond 微妙:Microsecond...
2、解决System.nanoTime();并不代表实际时间纳秒的问题。 3、解决解决System.nanoTime();不同JVM获取值不一致的问题。 4、解决解决System.nanoTime();值无法与毫秒时间换算问题。 5、可与GO的纳秒时间兼容。
在Java中,`System.currentTimeMillis()` 是一个常用的获取当前时间(以毫秒为单位)的方法。然而,在实际应用中,可能会遇到使用该方法获取的时间间隔出现异常大的情况,例如在毫秒级别的时间测量中出现16毫秒的大...
互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术...
测试代码 测试代码。 简单密码 吸血鬼号码 频率分析仪和System.nanoTime(); PCG 谨防! 这些只是beta版之前的一部分; )
首先,我们可以使用`System.currentTimeMillis()`方法来获取当前时间(单位为毫秒)作为基准点,然后在程序执行完毕后再获取一次时间,通过两者之差即可计算出程序的运行时间。例如: ```java long startTime = ...
`Nanotime`库主要解决了Java原生API在获取当前时间时精度不足的问题。在Java中,`System.currentTimeMillis()`返回的是自1970年1月1日00:00:00 GMT以来的毫秒数,而`nanoTime()`方法虽然返回的是自某个不确定的起点...
这个版本的秒表使用`Instant.now()`获取当前时间点,`Duration.between()`方法计算两个时间点之间的持续时间。`Duration`对象提供了方便的方法,如`toMillis()`和`seconds()`,以获取毫秒或秒数。 为了增强秒表的...
总结起来,Java提供了多种工具和方法来测试代码的执行时间,包括`System.currentTimeMillis()`、`System.nanoTime()`、`TimeUnit`以及`Thread.sleep()`等。开发者可以根据具体需求选择合适的方式,对代码进行性能...
"nanotime"这个概念,正如标题所提及的,指的是能够返回当前时间的纳米级别精度的函数或工具。在JavaScript中,虽然内置的Date对象可以提供毫秒级别的精度,但当需要更高精度的时间戳时,就需要借助如"nanotime"这样...
System.nanoTime() 函数用来返回最准确的可用系统计时器的当前值,以毫微秒为单位。例如: ```java long startTime = System.nanoTime(); // ... 代码被测量 ... long estimatedTime = System.nanoTime() - ...
这种方法通过创建`java.util.Date`对象来获取当前时间,并利用`SimpleDateFormat`类来格式化日期。具体步骤如下: 1. **创建计时器类**:首先定义一个名为`Timer`的类,用于封装计时逻辑。 2. **初始化日期格式化器...
System.nanoTime() 方法可以返回当前的纳秒数,该方法可以用来记录程序的开始和结束时间,从而计算出程序的执行时间。以下是使用 System.nanoTime() 方法记录程序执行时间的示例代码: ```java long startTime = ...
2. 开始计时:调用`System.currentTimeMillis()`或`System.nanoTime()`记录当前时间,作为计时的起点。 3. 暂停计时:保存当前时间,以便稍后恢复计时。 4. 继续计时:从上次暂停的时间点开始,继续计时。 5. 停止...
在Java中,我们可以使用System.nanoTime()方法获取纳秒级别的精确时间,从而计算出精确的执行时间。这个工具类可能会包含以下关键方法: 1. `start()`: 开始计时,通常会记录当前时间作为起始时间。 2. `stop()`: ...
它通过获取当前系统时间(毫秒级),记录起始时间和结束时间,然后计算两者之间的差值来得到所需时间。 ```java import java.io.PrintStream; final class Timer { private long startTime; private long ...
3. **系统时间(System.currentTimeMillis(), System.nanoTime())**:在某些测试中,需要固定或者精确控制时间。System Lambda 可以提供预设的时间值,避免因为系统时间的变化导致测试结果不一致。 4. **安全退出...
在Java和Android中,你可以使用`System.currentTimeMillis()`函数获取当前时间的时间戳,单位是毫秒。如果需要高精度的时间戳,可以使用`System.nanoTime()`,但请注意它并不直接代表时间,而是微秒级别的系统计时器...
在Java中,我们可以通过记录两个`System.nanoTime()`调用之间的差值来获取微秒或纳秒级别的精度,然后转换为更易读的秒、毫秒等单位。 ```java long startTime = System.nanoTime(); // 执行需要计时的代码 long ...