c++ - C 和 C++ 的效率

标签 c++ c performance

所以我的老师告诉我,我应该根据需要即时计算中间结果而不是存储它们,因为现在处理器的速度比内存速度快得多。

所以当我们计算一个中间结果时,我们也需要使用一些内存,对吗?谁能给我解释一下吗?

最佳答案

你的老师是对的如今处理器的速度比内存的速度快得多。访问 RAM 比访问内部存储器:高速缓存、寄存器等更慢。

假设您要计算一个三角函数:sin(x)。为此,您可以调用函数(数学库提供一个函数,或者实现您自己的函数)计算值;或者您可以使用存储在内存中的查找表来获取结果,这意味着存储中间值(某种程度上)。

调用一个函数会导致执行许多指令,而使用查找表会导致更少的指令(获取LUT的地址,获取所需元素的偏移量,从地址+偏移量读取)。我在这种情况下,存储中间值更快

但如果您要执行 c = a+b,计算该值将比从 RAM 中的某处读取它快得多。请注意,在这种情况下,要执行的指令数将是相似的。

因此,虽然访问 RAM 确实较慢,但是否值得访问 RAM 而不是进行计算是一个明智的问题,需要考虑几件事:要执行的指令数,如果计算发生在循环,您可以利用架构管道、缓存内存等。 没有唯一的答案,您需要单独分析每种情况。

关于c++ - C 和 C++ 的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22303126/

相关文章:

c - socket 。设置 sockaddr_in 结构的 s_addr 字段

c - 预增量和后增量

python - 根据第三个列表过滤列表列表的最快方法?

python - 具有不同位置的 NumPy 索引

c++ - 如何评估交换机中的QChar对象?

c++ - 语法说明

c++ - 同样的for循环在其他项目中有效,但在本项目中无效。为什么?

C++:在不禁用 UAC 的情况下截取 Windows 登录屏幕/UAC 提示

c - C 中的返回值

performance - 在express中使用nodejs可以采取哪些措施来提高jade模板渲染性能