我在我的应用程序中使用system.nanoTime,并计算相对于starttime的时间.
我的应用程序运行得非常好,直到我将其复制到新计算机上并且在其上纳米时间给了我较慢的值.
我写了一个简单的应用程序,以确保.
将纳米时间与系统时间进行比较.
它在除我的新计算机之外的其他计算机中显示相同的值.有什么建议?
这是我的代码:首先我有
private long initNanoTime = System.nanoTime();
private long initTime = System.currentTimeMillis();
Run Code Online (Sandbox Code Playgroud)
比我循环每秒运行一次的线程:
long timeUsingNanoTime = initTime + (System.nanoTime() - initNanoTime) / 1000000;
long timeUsingMilis = System.currentTimeMillis();
long nanotimeOffset = Math.abs(timeUsingNanoTime - timeUsingMilis);
if (nanotimeOffset < 100l) ? print("close") : print(far);
Run Code Online (Sandbox Code Playgroud)
编辑:我正在使用nano因为我需要处理纳秒时间内发生的ts并将其打印到日志中的纳米时间
我有一些代码在数组中生成1000个数字然后对它们进行排序:
import java.util.Arrays;
import java.util.Random;
public class OppgA {
public static void main(String[] args) {
int[] anArray;
anArray = new int[1000];
Random generator = new Random();
for(int i=0; i<1000; i++){
anArray[i] = (generator.nextInt(1000)+1);
}
Arrays.sort(anArray);
System.out.println(Arrays.toString(anArray));
}
}
Run Code Online (Sandbox Code Playgroud)
现在我被要求计算并打印排序数组所花费的时间.我有什么线索可以做到这一点?我真的找不到太多可以帮助我解决的问题.
谢谢!
我刚刚在填充大数组时对Java和Swift进行了一次小的速度比较.我想出了以下结果:
import Foundation
let start = CFAbsoluteTimeGetCurrent()
var intArray = Int[]()
for var i = 0; i <= 300000; ++i {
intArray.append(0)
}
let timeTaken = CFAbsoluteTimeGetCurrent() - start
println(timeTaken)
Run Code Online (Sandbox Code Playgroud)
结果:1.66182696819305
long start = System.currentTimeMillis();
int[] intArray;
int i = 0;
intArray = new int[300000];
for (i = 0; i < 300000; i++) {
intArray[i]=0;
}
System.out.println("Time: "+(System.currentTimeMillis()-start)+"ms");
Run Code Online (Sandbox Code Playgroud)
结果:时间:3毫秒
这让我感到震惊;
据我所知,流比传统的旧编程更快。
但是,当我运行以下代码时,结果出乎我的意料。
public class Application {
public static void main(String[] args) {
long startTime = System.nanoTime();
int[] a = { 1, 2, 3, 4 };
int m = Arrays.stream(a).reduce(Integer.MIN_VALUE, Math::max);
long endTime = System.nanoTime();
long totalTime = endTime - startTime;
System.out.println(totalTime);
}
}
Run Code Online (Sandbox Code Playgroud)
输出为:22857304
public class Application {
public static void main(String[] args) {
long startTime = System.nanoTime();
int[] a = { 1, 2, 3, 4 };
int e = a.length;
int m = Integer.MIN_VALUE;
for (int i = 0; …Run Code Online (Sandbox Code Playgroud) java ×4
arrays ×2
java-8 ×1
java-stream ×1
nanotime ×1
performance ×1
sorting ×1
swift ×1
timer ×1