积分类型之间的转换成本
Cost of conversion between integral types
我正在创建一个数学函数的补充库,用于我的程序,并希望实现一个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)
或任何您需要的类型。
也就是说,虽然我怀疑整型转换是否会出现在分析中,但这是您应该首先以最方便的方式编写的东西,并在实际必须优化它时担心优化它。
相关文章:
- 构造函数和转换运算符之间的重载解析
- C ++中无符号位长度类型之间的隐式转换,即uint8_t,uint16_t
- 模板转换运算符在 clang 6 和 clang 7 之间的区别
- 派生类(构造函数具有参数)和基类(构造函数缺少参数)之间没有可行的转换
- Cxx.jl 在 Julia Complex 和 std::complex 之间进行转换
- 如何在 std::string 和 Aws::String 之间进行转换?
- 转换字符时Arduino DUE 和 Arduino UNO 之间的区别
- 如何使用静态多态性在 int 和指针类型之间进行转换?
- 指向 POD 类型的指针之间的静态转换与重新解释转换
- 在 Rcpp 中的字符串类型之间转换时出错
- 如何声明不同类型的模板化类之间的转换
- C 和 C++ 中的函数指针转换之间的差异
- 与浮点转换之间的规范化整数
- 重新解释强制转换和 C 样式转换之间的 C++ 区别
- C++ get 和类型转换之间的用法有什么区别?我应该使用哪一个?
- printf函数参数之间的序列点;转换之间的顺序点是否重要
- Clang和GCC中不明确基类转换之间的行为差异
- 转换之间的双和字节数组,为传输ZigBee API
- 隐式转换和显式转换之间的区别
- interpret_cast和C样式强制转换之间的区别是什么