纳米和毫秒

时间:2014-04-01 10:21:46

标签: 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,但不知道要添加多少小数。对于另一个号码也是同样的问题。

2 个答案:

答案 0 :(得分:3)

转化遵循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类:它允许以不同时间单位转换值,例如

long microSeconds = NANOSECONDS.toMicros(nanoSeconds);

然而,遗憾的是,它不允许以double精度给出时间跨度,但仅允许long值。


另外,评论中也提到:由于内部计时器的分辨率有限,测量时间跨度大约为10-15ms通常没有意义。

答案 1 :(得分:0)

你有没有试过这个

System.out.println(TimeUnit.SECONDS.convert((endTime - startTime), TimeUnit.NANOSECONDS));
System.out.println(TimeUnit.SECONDS.convert((stopTimer - startTimer), TimeUnit.MILLISECONDS));
相关问题