gpt4 book ai didi

c++ - 如何在C++中高效实现无穷大和负无穷大的支持算术?

转载 作者:太空狗 更新时间:2023-10-29 23:53:30 25 4
gpt4 key购买 nike

简单的解决方案是:

class Number
{
public:
bool isFinite();
bool isPositive();
double value();

...

private:
double value_;
bool isFinite_;
bool isPositive_;

...
};

让我担心的是效率:

来自 Scott Meyers 的 Effective C++:改进程序和设计的 55 种具体方法(第 3 版):

Even when small objects have inexpensive copy constructors, there can be performance issues. Some compilers treat built-in and user-defined types differently, even if they have the same underlying representation. For example, some compilers refuse to put objects consisting of only a double into a register, even though they happily place naked doubles there on a regular basis. When that kind of thing happens, you can be better off passing such objects by reference, because compilers will certainly put pointers (the implementation of references) into registers.

有没有办法绕过效率问题?例如,一个使用某种汇编语言魔法的库?

最佳答案

几乎没有理由为 double 实现 Number 类。 double 格式已经实现了 Infinity、NaN 和 signage 作为原始基本 double 类型的一部分。

其次,你应该先写你的代码以正确性为目标,然后再尝试优化,这时候你可以考虑分解出特定的数据结构并重写代码和算法。

现代编译器在编写优质代码方面通常非常高效,而且通常比大多数人类程序员做得更好。

关于c++ - 如何在C++中高效实现无穷大和负无穷大的支持算术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10611930/

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