"for"循环中的"if"语句

Bun*_*der 7 c

通常当我有一个大的for循环时,我把消息告诉我程序的哪个部分,例如:

for(i = 0; i < large_n; i++) {
    if( i % (large_n)/1000 == 0) {
       printf("We are at %ld \n", i);
    }
    // Do some other stuff
}
Run Code Online (Sandbox Code Playgroud)

我想知道这是否会对性能造成太大的伤害(先验),如果有更聪明的替代方案就是这种情况.谢谢提前.

Chr*_*ger 5

也许你可以拆分大循环以便有时只检查条件,但我不知道这是否真的可以节省时间,这更多地取决于你的"其他东西".

int T = ...; // times to check the condition, make sure large_n % T == 0
for(int t = 0; t < T; ++t)
{
  for(int i = large_n/T * t; i < large_n/T * (t+1); ++i)
  {
    // other stuff
  }
  printf("We are at %ld \n", large_n/T * (t+1));
}
Run Code Online (Sandbox Code Playgroud)