77 lines
1.7 KiB
C++
77 lines
1.7 KiB
C++
#include <Eigen/Dense>
|
|
#include <iostream>
|
|
#include <algorithm>
|
|
#include <igl/sort.h>
|
|
#include <igl/unique.h>
|
|
#include <igl/get_seconds.h>
|
|
#include <igl/colon.h>
|
|
#include <igl/slice.h>
|
|
#include <igl/sortrows.h>
|
|
#include <igl/readDMAT.h>
|
|
#include <igl/writeDMAT.h>
|
|
|
|
int main(int argc, char * argv[])
|
|
{
|
|
using namespace Eigen;
|
|
using namespace std;
|
|
using namespace igl;
|
|
//MatrixXd X;
|
|
//if(!readDMAT("X.dmat",X))
|
|
//{
|
|
// X = MatrixXd::Random(766443,2);
|
|
// for(int x = 0;x<X.size();x++)
|
|
// {
|
|
// X(x) = floor(X(x)*680);
|
|
// }
|
|
//}
|
|
MatrixXd X(4,2);
|
|
//X << 1,2,1,2,1,1,2,2;
|
|
X << 1,3,2,4,6,1,7,2;
|
|
cout<<X<<endl<<endl;
|
|
typedef MatrixXi::Scalar Scalar;
|
|
bool ascending = false;
|
|
const int dim = 2;
|
|
double t;
|
|
|
|
//#define NUM_RUNS 100
|
|
// MatrixXd Y;
|
|
// MatrixXi IX;
|
|
// t = get_seconds();
|
|
// for(int r = 0;r<NUM_RUNS;r++)
|
|
// sort(X,dim,ascending,Y,IX);
|
|
// cout<<(get_seconds()-t)/(double)NUM_RUNS<<endl;
|
|
// //cout<<Y<<endl<<endl;
|
|
// //cout<<IX<<endl<<endl;
|
|
// MatrixXd Y2;
|
|
// MatrixXi IX2;
|
|
// t = get_seconds();
|
|
// for(int r = 0;r<NUM_RUNS;r++)
|
|
// sort2(X,dim,ascending,Y2,IX2);
|
|
// cout<<(get_seconds()-t)/(double)NUM_RUNS<<endl;
|
|
// //cout<<Y2<<endl<<endl;
|
|
// //cout<<IX2<<endl<<endl;
|
|
|
|
#define NUM_RUNS 1
|
|
MatrixXd Y;
|
|
VectorXi IA,IC;
|
|
|
|
t = get_seconds();
|
|
for(int r = 0;r<NUM_RUNS;r++)
|
|
unique_rows(X,Y,IA,IC);
|
|
cout<<(get_seconds()-t)/(double)NUM_RUNS<<endl;
|
|
|
|
t = get_seconds();
|
|
for(int r = 0;r<NUM_RUNS;r++)
|
|
sortrows(X,true,Y,IC);
|
|
cout<<(get_seconds()-t)/(double)NUM_RUNS<<endl;
|
|
writeDMAT("X.dmat",X,true);
|
|
writeDMAT("Y.dmat",Y,true);
|
|
writeDMAT("IC.dmat",IC,true);
|
|
|
|
//cout<<Y<<endl<<endl;
|
|
//cout<<IA<<endl<<endl;
|
|
//cout<<IC<<endl<<endl;
|
|
cout<<Y.rows()<<endl;
|
|
|
|
}
|