<分区>
问题很简单 - 检查函数的实际参数是否会导致性能下降?
导出的库函数通常倾向于检查用户代码传递的实际参数:
if (arg1 == NULL || arg2 == NULL)
return -EINVAL;
此检查会导致性能下降吗?我尝试通过从一些导出的函数中删除这些检查来优化一些库代码(依赖于我是一个行为良好的用户并且始终传递有效参数)但我没有发现真正的改进。
我的第一个猜测是,现代处理器上的分支预测将假定 if 分支未被采用,并继续执行代码而没有真正的惩罚。如果这确实是原因——这种分支预测机制的局限性是什么?是否存在消除这些检查会提高性能的情况?这在 C 等 native 编译语言与 Python 和 Java 等解释或 VM 语言之间有何变化?
顺便说一句——我意识到检查运行时参数的重要性。我只对性能方面感兴趣。