我发现了类似的问题:Java - 打印二维数组的最佳方式?但他们没有回答这个问题——它更有效吗?我正在用 C# 编写一个基本的小型控制台游戏,它需要反复清除和写入控制台以刷新游戏状态。在寻找比我当前尝试更有效的方法时,使用嵌套的 for 循环遍历数组并以这种方式打印,我在 Java 中找到了这个:Arrays.deepToString(arrayName);这就是我想要实现的目标。这比在 Java 中使用嵌套循环更有效吗?String[][] map = new String[10][10];for (int i = 0; i < 10; i++){ for (int j = 0; j < 10; j++) { map[i][j] = "="; }}boolean firstRun = true;for (int i = 0; i < 10; i++){ for (int j = 0; j < 10; j++) { if (j == 0 && firstRun == false) { System.out.print("\n"); } System.out.print(map[i][j]); firstRun = false; }}如果效率更高,是否有等效的 C# 库?我似乎无法在任何地方找到一个甚至有人问这个问题。
1 回答
holdtom
TA贡献1805条经验 获得超10个赞
你从错误的角度看这个:
您的代码几乎没有处理任何数据(10x10在 2019 年什么都不是)
您的代码正在执行控制台输出
请放心:像这样打印到 stdout比在内存中处理几乎没有的数组要贵很多倍(有关一些示例数据,请参见此处)。
因此,真正的答案是:您可以放心地忽略这里的性能方面。
而是将时间花在编写易于阅读、理解和维护的代码上。从那里开始,与编写相同的自定义循环相比,单次调用更可取。Arrays.deepToString(arrayName);
请记住:在 Java 世界中,运行时性能并非来自编写“聪明”的源代码。它来自于 JIT 决定“此代码经常使用,我应该将其翻译成机器代码”。如果 JIT 认为“不值得优化”,那么它就不值得优化。如果值得优化,那么让JIT变得容易。通过编写简单易行的代码。
长话短说:实现该功能是一个很好的练习,但既然你已经实现了,就把它扔掉并使用适合你的库调用。
添加回答
举报
0/150
提交
取消
