纳米和毫秒

Geo*_*iuc 1 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));
Run Code Online (Sandbox Code Playgroud)

这给了我:

Decriptarea a durat: 14811776
Decriptarea a durat: 15
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*o13 5

转换遵循标准 SI 单位的通常规则:

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

// Shortcuts:
double milliSeconds = nanoSeconds / 1e6;
double sconds = nanoSeconds / 1e9;
Run Code Online (Sandbox Code Playgroud)

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

long microSeconds = NANOSECONDS.toMicros(nanoSeconds);
Run Code Online (Sandbox Code Playgroud)

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


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