Overheads (2023)
2 months ago
- #systems programming
- #hidden costs
- #performance
- 高级语言存在隐藏的性能开销,例如垃圾回收器暂停,这在系统编程中是不可接受的
- Swift采用写时复制(CoW)机制避免昂贵的数据拷贝,但在修改数据时仍可能产生隐藏成本
- Swift中的Unicode分段处理使得字符串索引操作复杂度为O(n)而非O(1),这不适合系统编程
- C和C++同样存在栈溢出和隐式内存拷贝等隐藏成本,但这些通常被认为可以忽略不计
- 判断不可接受隐藏成本的关键因素是时间复杂度——任何超过O(1)的操作都应在源代码中显式体现
- 系统编程语言应避免时间复杂度超过O(1的开销,以保持性能可预测性