source: src/benchmark/bench.h@ 2449aef

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors deferred_resn demangler enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr new-env no_list persistent-indexer pthread-emulation qualifiedEnum resolv-new with_gc
Last change on this file since 2449aef was 0cf5b79, checked in by Thierry Delisle <tdelisle@…>, 8 years ago

Added generic containers for runtime.
Moved some internal code to bits folder.
consistently used cforall instead of CFORALL define.

  • Property mode set to 100644
File size: 997 bytes
RevLine 
[8cb6fcd]1#pragma once
2
[0cf5b79]3#if defined(__cforall)
[8cb6fcd]4extern "C" {
[d67cdb7]5#endif
[034165a]6 #include <stdlib.h>
[8cb6fcd]7 #include <unistd.h> // sysconf
8 #include <sys/times.h> // times
9 #include <time.h>
[0cf5b79]10#if defined(__cforall)
[8cb6fcd]11}
[d67cdb7]12#endif
[8cb6fcd]13
[d67cdb7]14static inline unsigned long long int Time() {
15 struct timespec ts;
[8cb6fcd]16 clock_gettime(
17#if defined( __linux__ )
18 CLOCK_THREAD_CPUTIME_ID,
19#elif defined( __freebsd__ )
20 CLOCK_PROF,
21#elif defined( __solaris__ )
22 CLOCK_HIGHRES,
23#else
24 #error uC++ : internal error, unsupported architecture
25#endif
26 &ts );
27 return 1000000000LL * ts.tv_sec + ts.tv_nsec;
28} // Time
29
[034165a]30#ifndef BENCH_N
31#define BENCH_N 500 //10000000
[7286a40]32#endif
33
[034165a]34#define BENCH(statement, output) \
[b7170a64]35 size_t n = BENCH_N; \
36 if( argc > 2 ) return 1; \
37 if( argc == 2 ) { \
38 n = atoi(argv[1]); \
39 } \
[034165a]40 long long int StartTime, EndTime; \
[b7170a64]41 StartTime = Time(); \
42 statement; \
43 EndTime = Time(); \
[034165a]44 unsigned long long int output = \
[b7170a64]45 ( EndTime - StartTime ) / n;
[034165a]46
[7286a40]47unsigned int default_preemption() {
48 return 0;
49}
Note: See TracBrowser for help on using the repository browser.