online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code    Language
#include <iostream> #include <chrono> #include <memory> using namespace std; using namespace std::chrono; #define TIMEUNIT high_resolution_clock::time_point #define TIMENOW high_resolution_clock::now() #define TIMESECONDS(x) duration_cast<seconds>(x).count() #define TIMEMICROSECONDS(x) duration_cast<microseconds>(x).count() const size_t size_x = 300; const size_t size_y = size_x; const size_t windows_x = 10; const size_t windows_y = windows_x; int main() { // unique pointer test { size_t number_of_operations = 0; unique_ptr<bool[]> mask = unique_ptr<bool[]> (new bool[size_y *size_x]); unique_ptr<bool[]> mask_local = unique_ptr<bool[]> ( new bool[(windows_x * 2 + 1) *(windows_y * 2 + 1)]); TIMEUNIT t1 = TIMENOW; for(int i = 0; i<size_y; i++) for(int j = 0; j<size_x; j++) mask[i *size_x + j] = ((i+j)%2) == 0; for(int i = 0; i<size_y; i++) for(int j = 0; j<size_x; j++) { int ii0 = i - windows_y; if(ii0<0) ii0 = 0; int ii1 = i + windows_y; if(ii1>size_y) ii1 = size_y; int jj0 = j - windows_x; if(jj0<0) jj0 = 0; int jj1 = j + windows_x; if(jj1>size_x) jj1 = size_x; for(int ii = ii0; ii< ii1 ; ii++) for(int jj = jj0; jj< jj1 ; jj++) { mask_local[(ii - ii0)*(windows_x * 2 + 1) + jj - jj0] = mask[ii*size_x + jj]; number_of_operations++; } } TIMEUNIT t2 = TIMENOW; cout<<"Unique pointer: "<< TIMEMICROSECONDS(t2 - t1)/1000.0/1000.0 << " sec" << "; nop = " << number_of_operations << endl; } // raw pointer test { size_t number_of_operations = 0; bool * mask = new bool[size_y *size_x]; bool* mask_local = new bool[(windows_x * 2 + 1) *(windows_y * 2 + 1)]; TIMEUNIT t1 = TIMENOW; for(int i = 0; i<size_y; i++) for(int j = 0; j<size_x; j++) mask[i *size_x + j] = ((i+j)%2) == 0; for(int i = 0; i<size_y; i++) for(int j = 0; j<size_x; j++) { int ii0 = i - windows_y; if(ii0<0) ii0 = 0; int ii1 = i + windows_y; if(ii1>size_y) ii1 = size_y; int jj0 = j - windows_x; if(jj0<0) jj0 = 0; int jj1 = j + windows_x; if(jj1>size_x) jj1 = size_x; for(int ii = ii0; ii< ii1 ; ii++) for(int jj = jj0; jj< jj1 ; jj++) { mask_local[(ii - ii0)*(windows_x * 2 + 1) + jj - jj0] = mask[ii*size_x + jj]; number_of_operations++; } } TIMEUNIT t2 = TIMENOW; cout<<"Raw pointer: "<< TIMEMICROSECONDS(t2 - t1)/1000.0/1000.0 << " sec" << "; nop = " << number_of_operations << endl; delete[] mask; delete[] mask_local; } return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue