积分类型之间的转换成本

Cost of conversion between integral types

本文关键字:转换 之间 类型      更新时间:2023-10-16

我正在创建一个数学函数的补充库,用于我的程序,并希望实现一个gcd函数。我最终可能会经常使用这个函数,所以优化是非常重要的。

我想知道,关于优化,为不同的积分类型实现多个 gcd 重载是否有任何意义。如图所示:

int gcd(const int lhs, const int rhs);
long gcd(const long lhs, const long rhs);
long long gcd(const long long lhs, const long long rhs);

在整数类型之间转换时是否有任何固有成本,或者我可以只实现long long版本并称其为"足够好"?

好吧,首先,你可以模板化它:

template <typename T>
T gcd(const T lhs, const T rhs);

如果您主要关心的只是代码重复,请调用gcd<int>(a, b)或任何您需要的类型。

也就是说,虽然我怀疑整型转换是否会出现在分析中,但这是您应该首先以最方便的方式编写的东西,并在实际必须优化它时担心优化它。