template <int M, int N> intsumarrayrows(int a[M][N]) { int sum = 0; for (int i = 0; i != M; ++i) for (int j = 0; j != N; ++j) sum += a[i][j]; return sum; }
template <int M, int N> intsumarraycols(int a[M][N]) { int sum = 0; for (int j = 0; j != N; ++j) for (int i = 0; i != M; ++i) sum += a[i][j]; return sum; }
template <int M, int N> voidtestCase() { cout << "testCase: " << M << "," << N << endl; int data[M][N] = {1}; { auto start = chrono::steady_clock::now(); int sum = 0; for (int loop = 0; loop < 10000; loop++) { sum += sumarrayrows<M, N>(data); } autoend = chrono::steady_clock::now(); cout << "\tsum: " << sum << " time: " << chrono::duration_cast<chrono::microseconds>(end - start).count() << endl; }
{ auto start = chrono::steady_clock::now(); int sum = 0; for (int loop = 0; loop < 10000; loop++) { sum += sumarraycols<M, N>(data); } autoend = chrono::steady_clock::now(); cout << "\tsum: " << sum << " time: " << chrono::duration_cast<chrono::microseconds>(end - start).count() << endl; } }