标签归档:csapp

CSAPP-记录

  • Question In CSAPP:
    • switch比if-else高效吗?
    • switch可能更高效,比较相关的开销移动可能会移动到编译期.
    • while比for高效吗?
    • 二者相同
    • 指针比数组索引更高效吗?
    • 二者相同
    • 为什么在求和时,将结果存在本地变量中要比存储在传入的指针中更快?
      • 本地对象一般是在寄存器中, 而通过指针IO时,可能会触发内存操作
    • 为什么表达式的求值顺序会影响性能(括号的位置)
      • 限定求值顺序会影响编译器的优化.
      • 限定求值顺序有可能会改善内存访问的模式.
    • 函数调用的开销到底有多大?
    • 现代编译器中,一般可以忽略,部分toolchain甚至有链接期inline的机制.(用栈来模拟递归通常是得不偿失的,损失的可读性要远大于性能的微弱提升)
    • 主要是需要避免系统调用,系统调用将触发context switch
    • 为什么有些链接错误是在运行时触发的?
Read More