Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 毫微秒_Java_Time_Nanotime - Fatal编程技术网

Java 毫微秒

Java 毫微秒,java,time,nanotime,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 dec

这给了我:

    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));

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

转换遵循以下常用规则:

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

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

// Shortcuts:
double milliSeconds = nanoSeconds / 1e6;
double sconds = nanoSeconds / 1e9;
然而,不幸的是,它不允许以
double
精度给出时间跨度,而只允许作为
long



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

转换遵循以下常规规则:

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

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

// Shortcuts:
double milliSeconds = nanoSeconds / 1e6;
double sconds = nanoSeconds / 1e9;
然而,不幸的是,它不允许以
double
精度给出时间跨度,而只允许作为
long



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

你这样试过吗

long microSeconds = NANOSECONDS.toMicros(nanoSeconds);

你试过这样吗

long microSeconds = NANOSECONDS.toMicros(nanoSeconds);

1秒=1000毫秒=1000000微秒=100000000纳秒有关
milli-
nano-
前缀的定义,请参阅维基百科或其他地方。Java并没有发明它们。啊,所以我应该加上3和9个小数。我懂了。认为它们的含义与实时的不同。记住,“纳米时间”这个名字是骗人的。根据您的操作系统,它将给出几十到几百纳秒之间的不同精度。实际上,nanoTime返回的值的精度始终是相同的——十亿分之一秒。精度可能会有所不同,也就是说,并非所有系统都有计算单个纳秒的时钟,因此,时钟可能只在100或1000纳秒上滴答作响,而你只能得到它的倍数。1秒=1000毫秒=1000000微秒=100000000纳秒有关
milli-
nano-
前缀的定义,请参阅维基百科或其他地方。Java并没有发明它们。啊,所以我应该加上3和9个小数。我懂了。认为它们的含义与实时的不同。记住,“纳米时间”这个名字是骗人的。根据您的操作系统,它将给出几十到几百纳秒之间的不同精度。实际上,nanoTime返回的值的精度始终是相同的——十亿分之一秒。精度可能会有所不同,也就是说,并非所有系统都有一个计算单个纳秒的时钟,因此时钟可能只会在100或1000纳秒上滴答作响,而你只能得到它的倍数。因此我应该使用
System.time.millis
而不是nano?这取决于你的系统。如果大多数通用计算机都有精确测量纳秒的时钟,而事实上大多数PC风格的计算机过去只以10毫秒的间隔滴答作响,我会感到惊讶。请记住,纳秒溢出长整数的速度要快得多。@rcook在appx之后,以纳秒为单位的时间差将溢出。290年,所以这不应该是一个问题。可能很有趣:所以我应该使用
System.time.millis
而不是nano?这取决于你的系统。如果大多数通用计算机都有精确测量纳秒的时钟,而事实上大多数PC风格的计算机过去只以10毫秒的间隔滴答作响,我会感到惊讶。请记住,纳秒溢出长整数的速度要快得多。@rcook在appx之后,以纳秒为单位的时间差将溢出。290年,所以这不应该是一个问题。可能很有趣: