c*******h 发帖数: 1096 | 1 程序里面有很多除法运算,在考虑要不要转换成乘法
如果差得不多就算了,如果差好几倍或者几十倍的话做个转换就很有必要了 |
t****t 发帖数: 6806 | 2 正常的除法和乘法确实差十倍以上.
【在 c*******h 的大作中提到】 : 程序里面有很多除法运算,在考虑要不要转换成乘法 : 如果差得不多就算了,如果差好几倍或者几十倍的话做个转换就很有必要了
|
X****r 发帖数: 3557 | 3 不针对你的问题,不过在做任何优化之前,搞清楚瓶颈在哪里。
【在 c*******h 的大作中提到】 : 程序里面有很多除法运算,在考虑要不要转换成乘法 : 如果差得不多就算了,如果差好几倍或者几十倍的话做个转换就很有必要了
|
b***i 发帖数: 3043 | 4 你是说除法是除以常数吗?
按说,CPU算除法比乘法慢。乘法可以很快。是C/C++语言吗?
【在 c*******h 的大作中提到】 : 程序里面有很多除法运算,在考虑要不要转换成乘法 : 如果差得不多就算了,如果差好几倍或者几十倍的话做个转换就很有必要了
|
k**********g 发帖数: 989 | 5 请看看OpenCV里阵列除法的实现。
传说中的俄罗斯高手写的。在他们面前,我们都是文科生。
https://github.com/Itseez/opencv/blob/master/modules/core/src/arithm.cpp
Look for:
template static void
div_( const T* src1, size_t step1, const T* src2, size_t step2,
T* dst, size_t step, Size size, double scale ) |
X****r 发帖数: 3557 | 6 loop unrolling是常见的技术,如果这个是你指的话。
我还以为你要说那个用整数乘法和其它操作代替整数除法的trick呢。
【在 k**********g 的大作中提到】 : 请看看OpenCV里阵列除法的实现。 : 传说中的俄罗斯高手写的。在他们面前,我们都是文科生。 : https://github.com/Itseez/opencv/blob/master/modules/core/src/arithm.cpp : Look for: : template static void : div_( const T* src1, size_t step1, const T* src2, size_t step2, : T* dst, size_t step, Size size, double scale )
|
p***o 发帖数: 1252 | 7 他是说把4个除法换成1个除法加若干乘法把。
【在 X****r 的大作中提到】 : loop unrolling是常见的技术,如果这个是你指的话。 : 我还以为你要说那个用整数乘法和其它操作代替整数除法的trick呢。
|
t****t 发帖数: 6806 | 8 这个更谈不上什么高明的东西了, 数值计算哪能这么随意变化的. 都是有一堆前提条件
的.
【在 p***o 的大作中提到】 : 他是说把4个除法换成1个除法加若干乘法把。
|
k**********g 发帖数: 989 | 9
Sorry, seems you are right. Even though they checked for zeroes, they didn't
consider the underflow of intermediate products.
【在 t****t 的大作中提到】 : 这个更谈不上什么高明的东西了, 数值计算哪能这么随意变化的. 都是有一堆前提条件 : 的.
|
h****r 发帖数: 2056 | 10 如果有很多浮点除法运算, Newton–Raphson division就很有帮助了。
也可以事先生成reciprocal表,然后就简单了。
【在 c*******h 的大作中提到】 : 程序里面有很多除法运算,在考虑要不要转换成乘法 : 如果差得不多就算了,如果差好几倍或者几十倍的话做个转换就很有必要了
|