c++ - 函数调用的成本是多少?

标签 c++ optimization architecture memory

对比

  • 简单的内存访问
  • 磁盘访问
  • 另一台计算机上的内存访问(在同一网络上)
  • 另一台计算机上的磁盘访问(在同一网络上)

在 Windows 上的 C++ 中。

最佳答案

相对时间(偏差不应超过 100 倍;-)

  • 缓存中的内存访问 = 1
  • 缓存中的函数调用/返回 = 2
  • 内存访问超出缓存 = 10 .. 300
  • 磁盘访问 = 1000 .. 1e8(摊销取决于传输的字节数)
    • 主要取决于寻道时间
    • 传输本身可以非常快
    • 至少涉及几千次操作,因为用户/系统阈值必须至少超过两次;一个 I/O 请求必须被调度,结果必须被写回;可能分配了缓冲区...
  • 网络调用 = 1000 .. 1e9(摊销取决于传输的字节数)
    • 与磁盘 i/o 相同的参数
    • 原始传输速度可能相当高,但另一台计算机上的某些进程必须完成实际工作

关于c++ - 函数调用的成本是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/94794/

相关文章:

c++ - shrink_to_fit() 与交换技巧

api - 谁与 API (REST) 对话? Web 客户端与服务器?

c++ - Linux GUI 开发

c++ - 由 CreateEx() 创建的子窗口被兄弟窗口重叠

ruby - 数组优化 : what is more expensive?

python - 代码优化-组合数量

architecture - BEAM 和 JVM 之间有哪些基本的功能/架构差异?

ios - Swift View 模型 : function vs setter with side effect

c++ - 在 Qml 场景下使用 OpenGL 渲染时出现奇怪的错误

optimization - 编译器优化问题