首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套多个while循环有问题吗?

问嵌套多个while循环有问题吗?
EN

Stack Overflow用户
提问于 2012-04-26 06:47:13
回答 2查看 5.6K关注 0票数 8

我正在做一些作业,想知道是不是有太多嵌套的while循环。嵌套多个while循环有什么缺点吗?如果是这样的话,如何重构下面的代码片段呢?

下面的代码一次读取一行文件,解析由某些定义的分隔符分隔的字段,并在打印到控制台之前删除前导空格。

代码语言:javascript
复制
// Read the file one line at a time
while (fgets(lineStr, MAXLINELENGTH, fp) != NULL)
{
    charPtr = strtok(lineStr, DELIMITERS);

    // Loop until line is parsed
    while (charPtr != NULL)
    {
        // Skip past leading whitespace
        while (isspace(*charPtr))
            charPtr++;

        puts(charPtr);
        charPtr = strtok(NULL, DELIMITERS);
    }
}
EN

回答 2

Stack Overflow用户

发布于 2012-04-26 06:54:13

唯一真正的缺点是可读性,对于这一点,没有任何硬性的规则……尽管超过3个nests通常会激怒其他任何与你合作的人。正如另一位发帖者所说,有时通过将循环转移到另一个函数来打破嵌套更好,但这里的内容对我来说是完全可读的-这是唯一真正的度量标准;纯粹的主观观点:)

票数 3
EN

Stack Overflow用户

发布于 2012-04-26 07:01:24

如前所述,这是相对主观的。但是,嵌套循环的方式可能会对代码产生直接的性能影响。考虑一下支持缓存的编程。也就是说,您希望以这样一种方式安排代码:处理器可以在需要下一块数据之前将其预取(即预测)到缓存中。这将允许更多的缓存命中和更快的内存访问时间。

请注意,这对于您的示例并不是特别重要,但是,如果您正在进行多次内存访问,这可能会显著提高或降低性能。如果您在以行为主的体系结构上以列方式遍历多维数组,则可能会有许多缓存未命中(请注意,缓存未命中在实时性方面是非常昂贵的)。

所以嵌套循环不一定不好,但它肯定会对性能产生明显的影响,特别是在一些任意数量的n循环之后。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10324890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档