Created
September 4, 2015 19:59
-
-
Save spceaza/001a92a775a58a6ea0d7 to your computer and use it in GitHub Desktop.
Benchmark SICS Matrix class
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <type/Matrix.h> | |
#include <iostream> | |
#include <ctime> | |
#include <chrono> | |
using namespace std; | |
Matrix<double>* matrix_obj; | |
double ** matrix_ptr; | |
void ptr_test(); | |
void obj_test(); | |
int main() | |
{ | |
ptr_test(); | |
obj_test(); | |
return 0; | |
} | |
void ptr_test() | |
{ | |
unsigned int size = 21000; | |
matrix_ptr = new double*[size]; | |
for(unsigned int i = 0; i < size; i++) | |
matrix_ptr[i] = new double[size]; | |
auto start = std::chrono::system_clock::now(); | |
for(unsigned int i = 0; i < size; i++) | |
for(unsigned int j = 0; j < size; j++) | |
matrix_ptr[i][j] = i*size + j; | |
auto end = std::chrono::system_clock::now(); | |
auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start); | |
cout << "Llenado: " << elapsed.count()/1000.0 << '\n'; | |
double temp; | |
start = std::chrono::system_clock::now(); | |
for(unsigned int i = 0; i < size; i++) | |
for(unsigned int j = 0; j < size; j++) | |
temp = matrix_ptr[i][j]; | |
end = std::chrono::system_clock::now(); | |
elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start); | |
cout << "Acceso: " << elapsed.count()/1000.0 << '\n'; | |
for(unsigned int i = 0; i < size; i++) | |
delete matrix_ptr[i]; | |
delete matrix_ptr; | |
} | |
void obj_test() | |
{ | |
unsigned int size = 21000; | |
matrix_obj = new Matrix<double>(size,size); | |
auto start = std::chrono::system_clock::now(); | |
for(unsigned int i = 0; i < size; i++) | |
for(unsigned int j = 0; j < size; j++) | |
(*matrix_obj)(i,j) = i*size + j; | |
auto end = std::chrono::system_clock::now(); | |
auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start); | |
cout << "Llenado: " << elapsed.count()/1000.0 << '\n'; | |
double temp; | |
start = std::chrono::system_clock::now(); | |
for(unsigned int i = 0; i < size; i++) | |
for(unsigned int j = 0; j < size; j++) | |
temp = (*matrix_obj)(i,j); | |
end = std::chrono::system_clock::now(); | |
elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start); | |
cout << "Acceso: " << elapsed.count()/1000.0 << '\n'; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment