Commit ab300d4b authored by Tristan Matthews's avatar Tristan Matthews Committed by Erik de Castro Lopo
Browse files

microbench: add benchmarking code for Darwin


Signed-off-by: Erik de Castro Lopo's avatarErik de Castro Lopo <erikd@mega-nerd.com>
parent d91eb4ae
......@@ -29,6 +29,8 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <config.h>
#include <stdlib.h>
#include "util.h"
......@@ -63,6 +65,36 @@ benchmark_function (void (*testfunc) (void), unsigned count)
return counter_diff (&start, &end) / count ;
} /* benchmark_function */
#elif defined FLAC__SYS_DARWIN
#include <mach/mach_time.h>
static double
counter_diff (const uint64_t * start, const uint64_t * end)
{
mach_timebase_info_data_t t_info;
mach_timebase_info(&t_info);
uint64_t duration = *end - *start;
return duration * ((double)t_info.numer/(double)t_info.denom);
}
double
benchmark_function (void (*testfunc) (void), unsigned count)
{
uint64_t start, end;
unsigned k;
start = mach_absolute_time();
for (k = 0 ; k < count ; k++)
testfunc();
end = mach_absolute_time();
return counter_diff (&start, &end) / count ;
} /* benchmark_function */
#else
#define _GNU_SOURCE
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment