整数类型之间的转换成本

时间:2014-12-02 03:20:35

标签: c++ optimization type-conversion overloading

我正在创建一个数学函数的补充库,供我的程序使用,并希望实现gcd function。我可能会经常使用此功能,因此优化非常重要。

我想知道,就优化而言,为不同的整数类型实现几个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版本并将其称为"足够好"?

1 个答案:

答案 0 :(得分:6)

嗯,首先,你可以模板化它:

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

如果您的主要问题只是代码重复,请致电gcd<int>(a, b)或您需要的任何类型。

那就是说,虽然我怀疑整体类型转换会出现在分析中,但这是你应该以最方便的方式编写的那种东西,并且担心在实际需要优化它时优化它。