取模比相等测试快吗?

问题描述 投票:0回答:1

我的程序从任意索引开始循环遍历列表。这两种方法中哪一种是最有效的方法?

void example(int list[], unsigned int length, unsigned int start) {
  unsigned int i;
  for (i = 0; i < length; i ++) {
    printf("%d\n", list[(start + i) % length]);
  }

void example(int list[], unsigned int length, unsigned int start) {
  unsigned int i;
  i = start;
  do {
    printf("%d\n", list[i]);
    i += 1;
    if (i == length) i = 0;
  } while (i != start); /* fails the first time because i increments before the check */
}
c performance loops if-statement modulo
1个回答
1
投票

最快的很可能是这样的:

for(i=start; i<length; i++) {
    ...
}

for(i=0; i<start; i++) {
    ...
}

而且,对

printf
的调用可能是问题所在,因此可能加快速度的一件事是构建一个缓冲区,然后一次打印所有内容。

但是,在做任何事情之前,请确保这实际上是一个瓶颈。

© www.soinside.com 2019 - 2024. All rights reserved.