我正在编写一个程序,该程序需要进行大量复杂的加法和乘法操作。我想知道是否应该使用
我似乎找不到在线比较GSL复杂算术与
我编写了一个20行程序,生成两个随机的复数数组(1e7个),然后使用
任何链接或建议都将有所帮助。谢谢!
编辑:
gsl_complex
还是std::complex
。我似乎找不到在线比较GSL复杂算术与
std::complex
的优劣的页面。初步的谷歌搜索也没有帮助我找到GSL复杂的基准测试页面。我编写了一个20行程序,生成两个随机的复数数组(1e7个),然后使用
<ctime>
中的clock()
检查了加法和乘法所需的时间。使用此方法(没有编译器优化),我了解到gsl_complex_add
和gsl_complex_mul
的速度几乎是std::complex<double>
的+
和*
的两倍。但我以前从未做过这种事情,所以这是检查哪个更快的方式吗?任何链接或建议都将有所帮助。谢谢!
编辑:
好的,我再次使用了 -O3 标志进行尝试,现在结果非常不同!std::complex<float>::operator+
比 gsl_complex_add
快两倍以上,而 gsl_complex_mul
大约比 std::complex <float> :: operator *
快1.25倍。如果我使用 double,gsl_complex_add
大约比 std::complex <double> :: operator +
快30%,而 std::complex <double> :: operator *
大约比 gsl_complex_mul
快10%。我只需要浮点精度,但我听说 double 更快(并且内存对我来说不是问题)!所以现在我真的很困惑!