java - 纳秒和毫秒

标签 java time nanotime

    long startTime = System.nanoTime();
    long startTimer = System.currentTimeMillis();

    M = app.decriptare_simpla(C);

    long endTime = System.nanoTime();
    long stopTimer = System.currentTimeMillis();

    //mesajul initial dupa decriptare
    System.out.println("M : " + M.toString());
    System.out.println("Decriptarea a durat: " + (endTime - startTime));
    System.out.println("Decriptarea a durat: " + (stopTimer - startTimer));

这给了我:

Decriptarea a durat: 14811776
Decriptarea a durat: 15

我想问的是这两个数字是多少秒?我的意思是它们是 0.15、0.015、0.0015...?我想以这种方式打印它们,而不是作为 long 但不知道要添加多少位小数。其他号码也有同样的问题。

最佳答案

转换遵循 Standard SI Units 的通常规则:

long nanoSeconds = ...
double microSeconds = nanoSeconds / 1e3;
double milliSeconds = microSeconds / 1e3;
double seconds = milliSeconds / 1e3;

// Shortcuts:
double milliSeconds = nanoSeconds / 1e6;
double sconds = nanoSeconds / 1e9;

对于某些转换,您还可以查看 TimeUnit class:它允许不同时间单位的值之间进行转换,例如

long microSeconds = NANOSECONDS.toMicros(nanoSeconds);

但是,不幸的是,它不允许以精度给出时间跨度,而只能以long值给出。


顺便说一句,评论中也提到:由于内部计时器的分辨率有限,测量 10-15ms 的时间跨度通常没有意义。

关于java - 纳秒和毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22783010/

相关文章:

java - nar-maven-plugin javah 失败,常量池中的字节标记无效 : 18

java - 将动态参数传递给 @MapKey ("${dynamicParam}") (My-Batis)

java - junit 中的 @Transactional 注解 - spring 和 jms

python - time.sleep 使图片循环不显示

Android - 测量通过 Intent 打开 Activity 与收到结果之间的时间

java.lang.NoClassDefFoundError : org/springframework/boot/autoconfigure/security/SecurityPrerequisite

Python时差

java - 使用 JodaTime 获取 Spring /夏季的 CST 时间

java - 是 System.nanoTime();或 System.currentTimeMillis();更适合一场比赛

java - 如何通过减去 2 个 nanoTime 对象获得有意义的结果?