关于右值引用测试
不论在win: vs,gcc 测试,使用RightValue,性能出现下降
在Llvm下,使用RightValue,性能也出现下降:
测试参考之前的博客代码,现有的代码也可以:
#include <iostream>
#include <vector>
#include <utility>
#include <chrono>
using namespace std;
using namespace std::chrono;
struct A{
int a = 1000;
int b;
char c;
short s;
char cc[22];
};
void Recurve(int n,A a){
//cout<<n<<endl;
a.a--;
if(n > 0)
Recurve(n-1,a);
}
void RecurveRe(int n,A& a){
//cout<<n<<endl;
a.a--;
if(n > 0)
RecurveRe(n-1,a);
}
void RecurveRV(int n,A&& a){
//cout<<n<<endl;
a.a--;
if(n > 0)
RecurveRV(n-1,forward<A>(a));
}
class Timer
{
public:
void Start()
{
start = steady_clock::now();
}
void Stop()
{
std::chrono::steady_clock::time_point end = steady_clock::now();
steady_clock::duration time_span = end - start;
cout << "total time" << duration_cast<nanoseconds>(time_span).count() << endl;
}
std::chrono::steady_clock::time_point start;
};
int test()
{
A a;
Timer t;
t.Start();
Recurve(10000,a);
//RecurveRe(1000,a);
// RecurveRV(1000,move(a));
cout<<"endl"<<endl;
//Enum(v, n, count);
t.Stop();
return 0;
}
浙公网安备 33010602011771号