gpt4 book ai didi

c - 使用 C99 和 C11 时的效率问题。

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:09 24 4
gpt4 key购买 nike

前几天我正在将一个用 C99 标准编写的程序转换为 C11。基本上动机是将代码与 MSVC 一起使用,但它是用 Linux 编写的,并且大部分是使用默认的 GCC 行为编译的。在代码转换过程中,我发现你不能在任何语句之后对函数的变量进行 decalre,即你必须在函数的顶部声明它们。

但我的问题是,变量应该在接近使用时声明以最大化缓存命中率,这不是违反高效编程规则吗?例如,在一个 200 LOC 的大函数中,我想在函数快结束时使用一些大的静态查找数组。不会在使用之前声明和初始化它导致更多缓存命中吗?还是我只是遗漏了 C11 C 语言标准的一些基本要点?

最佳答案

您似乎对正在编译程序的标准版本感到有些困惑。 AFAIK,MSVC 不支持任何更新的 C 标准。

但要谈到您问题的核心,不,这不是效率问题。只要程序的可观察行为没有改变,编译器就可以根据自己的喜好对语句重新排序。因此,现代编译器总是会在新变量首次使用之前尽可能地触及它。

关于c - 使用 C99 和 C11 时的效率问题。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12899048/

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