gpt4 book ai didi

c++ - 这种错误检查方法在性能上会不会太昂贵了?

转载 作者:行者123 更新时间:2023-11-28 03:00:27 24 4
gpt4 key购买 nike

在我的项目中,错误处理和日志记录是通过名为 Error 的类执行的。任何可能需要记录错误或警告的函数或对象方法,都会有一个 Error & error 作为它的最后一个函数参数,并且会调用 Error::report(...) 如果遇到问题。

一个例子是:

float ratioBetweenBounds(  float between, 
float lowerBound,
float upperBound,
Error & error) // <--
{
if(upperBound != lowerBound){
return (between - lowerBound) / (upperBound - lowerBound);
}else{
error.report(Error::DivideByZero, __LINE__, __FILE__, lowerBound); // <--
return NAN;
}
}

我的问题是,传递这样一个庞大的引用是否会导致每帧调用大约 5,000 次的小函数出现性能问题?我会(并且会!)自己对它进行概要分析,但是要过几天我才能(在路上)编译任何东西。也许很明显它会或不会影响 SO 的性能,并且分析也不是太必要。

到目前为止,这在可读性和调试方面对我来说效果很好,所以如果性能损失微不足道,那么我会很高兴。

(我能看到的唯一开销是添加的分支,但分支预测器应该处理这个问题。它也可能会把一个已经很大的函数翻过来,这样它就不会被内联。尽管在这些事情之外,我真的不知道。至少,它看起来可以与 try/catch block 创建的任何小性能相媲美,除了抛出的分支会静态偏见,我假设)

最佳答案

引用通常由编译器实现为隐藏指针,因此您实际上是在函数调用中添加了一个指针参数。每帧 5000 次调用对于现代处理器来说确实不算多。继续分析,但我不会担心它,除非它被证明是一个问题。

关于c++ - 这种错误检查方法在性能上会不会太昂贵了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20986558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com