我将boost的gmp_rational数据类型的性能与C#的SolverFoundation.Rational类型进行比较。除了比较操作之外,使用gmp_rational执行算术比C#SolverFoundation.Rational快得多。 我在C ++和C#中实现了以下功能,并对其性能进行了比较。
typedef mpq_rational NT;
void test()
{
NT x = 3.05325557;
NT y = 2.65684334;
NT z, j, k;
std::clock_t start;
double duration;
start = std::clock();
for(int i = 0; i < 10000; i++)
{
if (i%1000 == 0)
x = 3;
x = x * y;
z = x + y;
j = x + y;
k = x + y;
bool r1 = j > k; // takes very long
}
duration = ( std::clock() - start ) / (double) CLOCKS_PER_SEC;
std::cout<<"duration: "<< duration <<'\n';
}
没有最后的比较操作&#34; j&gt; k&#34;,该功能需要5.5秒。有了它,该功能需要33秒。
我在C#中实现了相同的方法并进行了相同的比较。没有最后的比较操作&#34; j&gt; k&#34;,该方法需要19秒。有了它,该方法需要19.6秒。所以C#代码甚至比C ++代码更快,但我不明白为什么。