gpt4 book ai didi

c++ - 在繁重的模拟代码中,C++ 类/结构会比 C 数组明显慢吗

转载 作者:行者123 更新时间:2023-11-30 21:32:40 24 4
gpt4 key购买 nike

由于添加了“不同级别的间接寻址”,据说创建数据类/结构比 c 数组慢,并且显然是“错误”的 here 。我已经研究模拟代码一段时间了,尽管我知道人们总是说不要预先优化,但在深入研究之前了解要使用的数据结构是至关重要的。

如果我要运行 >10,000 个主循环,其中包含 1->50 个“迷你循环”,甚至可能是 1->10 个“迷你迷你循环”(即,最多可以有约 10,000,000 个循环)总计),将我的所有数据保存在 C 代码中会有好处吗?或者速度上的差异是否足够小,以至于我可以利用类来避免编写一个大的 c 文件?

最佳答案

除非您使用虚函数或虚基类,否则生成的代码应该绝对没有区别。在 C++ 中,类和结构之间没有任何运行时差异;唯一的区别与成员可见性有关,这纯粹是编译时的。

从这个问题中并不清楚你如何将 C++ 类与 C 数组进行比较。 C 有结构体,C++ 有数组,一般来说,在 C 中使用数组和在 C++ 中使用数组将产生相同的结果,并且与“POD”(普通旧数据)类类似(除了上面提到的仅限 C++ 的功能之外)。 )

您可能正在考虑 C++ std::vector 与 C 数组之间的区别。 std::vector 确实涉及间接寻址,尽管在许多情况下优化器能够避免它。但是,除非您在编译时知道数组的大小,否则很难在不产生完全相同的间接寻址的情况下使用 C 数组。如果您在编译时知道数组的大小,则可以使用 C++11 std::array,它将生成与 C 数组相同的代码。

关于c++ - 在繁重的模拟代码中,C++ 类/结构会比 C 数组明显慢吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20008334/

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