gpt4 book ai didi

java - 如何在不增加运行时间的情况下打印 1000 x 1000 的点网格?

转载 作者:太空宇宙 更新时间:2023-11-04 09:41:32 25 4
gpt4 key购买 nike

int[][] graph = new int[1000][1000];

for (int i = 0; i < graph.length; i++) {
for (int j = 0; j < graph.length; j++) {
System.out.print(new Point(i, j));
}

System.out.println();
}

public class Point {
private final double x;
private final double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public double getX() {
return x;
}
public double getY() {
return y;
}
@Override
public String toString() {
return ("(" + x + ", " + y + ")");

我可以让代码打印出 1000 x 1000 的点网格,但我希望程序在没有过多运行时间的情况下打印出网格。

最佳答案

John Bollinger上面的评论中指出,“I/O 是计算机可以做的最慢的事情之一。”

因为您的目标是将网格打印到控制台,所以我建议构建一个包含网格的String,然后打印它(而不是按顺序打印其中的每个元素)。

您更新后的代码将如下所示:

int[][] graph = new int[1_000][1_000];

StringBuilder sb = new StringBuilder(1_000_000);

for (int i = 0; i < graph.length; i++) {
for (int j = 0; j < graph.length; j++) {
sb.append(new Point(i, j));
}

sb.append('\n');
}

System.out.println(sb);

如果没有正确地进行基准测试,它仍然会在平均不到 400 毫秒的时间内完成,而我的旧代码在不到 4 秒的时间内完成。

关于java - 如何在不增加运行时间的情况下打印 1000 x 1000 的点网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55926257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com