远离循环
Stepping away from loops
我在倒数一年中有多少个第一个星期日让我们说
2000/1/1 和 2020/5/2
我已经为它创建了运行良好的函数,但问题是我在其中嵌套了循环,这使得它非常慢。
int sundaycount = 0;
for (i = year1; i<year2; i++) { // years
for (j = 0; j<12; j++) {
if (isdate(i, j, 1)) {
sundaycount++;
}
}
}
- ofc 循环内有正确工作的条件,我怎样才能摆脱嵌套循环并使 iteration/code 更快?
您应该 post isdate()
的代码。我们无法验证您的问题。我无法相信对 mkdate()
的 240 次调用可以算作 slow.
如果你真的想使用更少的计算能力,计算第一年 1 月 1 日的工作日并迭代年份范围,通过添加天数模 7 来测试每个月。小心点有闰年。这可能会消耗少一点 CPU,但我怀疑你是否可以测量它。
我在倒数一年中有多少个第一个星期日让我们说 2000/1/1 和 2020/5/2
我已经为它创建了运行良好的函数,但问题是我在其中嵌套了循环,这使得它非常慢。
int sundaycount = 0;
for (i = year1; i<year2; i++) { // years
for (j = 0; j<12; j++) {
if (isdate(i, j, 1)) {
sundaycount++;
}
}
}
- ofc 循环内有正确工作的条件,我怎样才能摆脱嵌套循环并使 iteration/code 更快?
您应该 post isdate()
的代码。我们无法验证您的问题。我无法相信对 mkdate()
的 240 次调用可以算作 slow.
如果你真的想使用更少的计算能力,计算第一年 1 月 1 日的工作日并迭代年份范围,通过添加天数模 7 来测试每个月。小心点有闰年。这可能会消耗少一点 CPU,但我怀疑你是否可以测量它。