|
@@ -216,32 +216,35 @@ int main(int argc, char *argv[]) {
|
|
|
|
|
|
long cpptime_nsec, best_cpp;
|
|
|
long ctime_nsec, best_c;
|
|
|
-
|
|
|
+ long cpptime_sec, ctime_sec;
|
|
|
+ long repeats = 209;
|
|
|
//HeapProfilerStart("heapprof");
|
|
|
- for (int i = 0; i<150000; ++i) {
|
|
|
- //for (int i = 0; i<100; ++i) {
|
|
|
- // clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
|
|
|
- // nMie(L, x, m, nt, Theta, &Qext, &Qsca, &Qabs, &Qbk, &Qpr, &g, &Albedo, S1, S2);
|
|
|
- // clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2);
|
|
|
- // //ctime_nsec = std::min(ctime_nsec,diff(time1,time2).tv_nsec);
|
|
|
- // ctime_nsec = diff(time1,time2).tv_nsec;
|
|
|
- // if (ctime_nsec < best_c) best_c = ctime_nsec;
|
|
|
-
|
|
|
- // clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
|
|
|
- nmie::nMie_wrapper(L, x, m, nt, Theta, &Qextw, &Qscaw, &Qabsw, &Qbkw, &Qprw, &gw, &Albedow, S1w, S2w);
|
|
|
- // clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2);
|
|
|
- // //cpptime_nsec = std::min(cpptime_nsec, diff(time1,time2).tv_nsec);
|
|
|
- // cpptime_nsec = diff(time1,time2).tv_nsec;
|
|
|
- // if (cpptime_nsec < best_cpp) best_cpp = cpptime_nsec;
|
|
|
- //printf("-- C++ time consumed %ld sec : %ld nsec\n",diff(time1,time2).tv_sec,cpptime_nsec);
|
|
|
-
|
|
|
-
|
|
|
- //printf("-- C/C++ time ratio: %Lg\n", static_cast<long double>(ctime_nsec)/static_cast<long double>(cpptime_nsec));
|
|
|
- //printf("--best C/C++ time ratio: %Lg\n", static_cast<long double>(best_c)/static_cast<long double>(best_cpp));
|
|
|
- }
|
|
|
- //HeapProfilerStop();
|
|
|
-
|
|
|
- //printf("--best C/C++ time ratio: %Lg\n", static_cast<long double>(best_c)/static_cast<long double>(best_cpp));
|
|
|
+ do {
|
|
|
+ clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
|
|
|
+ for (int i = 0; i<repeats; ++i) {
|
|
|
+ nmie::nMie_wrapper(L, x, m, nt, Theta, &Qextw, &Qscaw,
|
|
|
+ &Qabsw, &Qbkw, &Qprw, &gw, &Albedow, S1w, S2w);
|
|
|
+ }
|
|
|
+ clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2);
|
|
|
+ cpptime_nsec = diff(time1,time2).tv_nsec;
|
|
|
+ cpptime_sec = diff(time1,time2).tv_sec;
|
|
|
+ clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
|
|
|
+ for (int i = 0; i<repeats; ++i) {
|
|
|
+ nMie(L, x, m, nt, Theta, &Qext, &Qsca, &Qabs, &Qbk, &Qpr, &g, &Albedo, S1, S2);
|
|
|
+ }
|
|
|
+ clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2);
|
|
|
+ ctime_nsec = diff(time1,time2).tv_nsec;
|
|
|
+ ctime_sec = diff(time1,time2).tv_sec;
|
|
|
+ if ( ctime_sec == 0 && cpptime_sec == 0) {
|
|
|
+ printf("-- total repeats: %ld\n", repeats);
|
|
|
+ printf("-- C++ time consumed %lg sec\n", (cpptime_nsec/1e9));
|
|
|
+ printf("-- C time consumed %lg sec\n", (ctime_nsec/1e9));
|
|
|
+ printf("-- C/C++ time ratio: %Lg\n", static_cast<long double>(ctime_nsec)/static_cast<long double>(cpptime_nsec));
|
|
|
+ } else {
|
|
|
+ printf("==Test is too long!\n");
|
|
|
+ }
|
|
|
+ repeats *= 10;
|
|
|
+ } while (cpptime_nsec < 1e8 && ctime_nsec < 1e8);
|
|
|
|
|
|
// clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
|
|
|
nMie(L, x, m, nt, Theta, &Qext, &Qsca, &Qabs, &Qbk, &Qpr, &g, &Albedo, S1, S2);
|