gpt4 book ai didi

java - 我如何优化此代码以使其看起来性能更高?

转载 作者:行者123 更新时间:2023-12-01 18:14:13 25 4
gpt4 key购买 nike

我有这个 Java 代码,它将用户的年龄分为 8 组:

private int[] A0, A1, A2, A3, A4, A5, A6, A7, A8;

public Grouping() {
super();

for (int i = 5; i < 10; i++)
A0[i] = i;

for (int i = 10; i < 20; i++)
A1[i] = i;

for (int i = 20; i < 30; i++)
A2[i] = i;

for (int i = 30; i < 40; i++)
A3[i] = i;

for (int i = 40; i < 50; i++)
A4[i] = i;

for (int i = 50; i < 60; i++)
A5[i] = i;

for (int i = 60; i < 70; i++)
A6[i] = i;

for (int i = 70; i < 80; i++)
A7[i] = i;

for (int i = 10; i < 20; i++)
A8[i] = i;

}

现在我想优化这段代码。有什么想法吗?

最佳答案

You've said你想要它“更短”。这是一个较短的版本,除了我不知道你想用A8做什么,这对A1来说是多余的,所以已经离开关闭:

private int[][] groups; // I assume you initialize `A0` and so on somewhere you haven't shown; initialize this there

public Grouping() {
int i, groupIndex, group;

super();

groupIndex = 0;
group = groups[0];
for (i = 5; i < 80; ++i) {
if (i % 10 == 0) {
++groupIndex;
group = groups[groupIndex];
}
group[i] = i;
}
}

请注意,这仍然是相当奇怪的代码,因为它执行原始代码的操作,并将数组中的各种条目保留为其默认值 (0) 。例如,在您的代码中,A0 的索引 04 永远不会被分配,groups[0 也是如此]04 也是如此。 (后面的差距更大。)

不过,您的标题表明您希望它更加“高效”。 "performant"!= "shorter"您的代码可能执行很好,可能比我上面的代码好得多,因为它不需要 % 操作和 if 在循环内。

或者这是一个实现 Seelenvirtuose's suggestion 的版本:

private int[][] groups; // I assume you initialize `A0` and so on somewhere you haven't shown; initialize this there

public Grouping() {
int i;

super();

for (i = 5; i < 80; ++i) {
groups[i / 10][i] = i;
}
}

...之所以有效,是因为 i/10 位是整数除法。

关于java - 我如何优化此代码以使其看起来性能更高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30680721/

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