1*d4514f0bSApple OSS Distributions #include <stdio.h> 2*d4514f0bSApple OSS Distributions #include <stdlib.h> 3*d4514f0bSApple OSS Distributions #include <unistd.h> 4*d4514f0bSApple OSS Distributions #include <sys/stat.h> 5*d4514f0bSApple OSS Distributions #include <mach/mach_time.h> 6*d4514f0bSApple OSS Distributions #include <sys/time.h> 7*d4514f0bSApple OSS Distributions 8*d4514f0bSApple OSS Distributions #include <darwintest.h> 9*d4514f0bSApple OSS Distributions #include <darwintest_perf.h> 10*d4514f0bSApple OSS Distributions 11*d4514f0bSApple OSS Distributions T_GLOBAL_META(T_META_TAG_PERF); 12*d4514f0bSApple OSS Distributions 13*d4514f0bSApple OSS Distributions T_DECL(gettimeofday_tl, "gettimeofday performance in tight loop", T_META_TAG_VM_NOT_ELIGIBLE) { 14*d4514f0bSApple OSS Distributions { 15*d4514f0bSApple OSS Distributions struct timeval time; 16*d4514f0bSApple OSS Distributions dt_stat_time_t s = dt_stat_time_create("gettimeofday tight loop"); T_STAT_MEASURE_LOOP(s)17*d4514f0bSApple OSS Distributions T_STAT_MEASURE_LOOP(s){ 18*d4514f0bSApple OSS Distributions gettimeofday(&time, NULL); 19*d4514f0bSApple OSS Distributions } 20*d4514f0bSApple OSS Distributions dt_stat_finalize(s); 21*d4514f0bSApple OSS Distributions } 22*d4514f0bSApple OSS Distributions } 23*d4514f0bSApple OSS Distributions 24*d4514f0bSApple OSS Distributions extern int __gettimeofday(struct timeval *, struct timezone *); 25*d4514f0bSApple OSS Distributions T_DECL(__gettimeofday_tl, "__gettimeofday performance in tight loop", T_META_TAG_VM_NOT_ELIGIBLE) { 26*d4514f0bSApple OSS Distributions { 27*d4514f0bSApple OSS Distributions struct timeval time; 28*d4514f0bSApple OSS Distributions 29*d4514f0bSApple OSS Distributions dt_stat_time_t s = dt_stat_time_create("__gettimeofday tight loop"); T_STAT_MEASURE_LOOP(s)30*d4514f0bSApple OSS Distributions T_STAT_MEASURE_LOOP(s){ 31*d4514f0bSApple OSS Distributions __gettimeofday(&time, NULL); 32*d4514f0bSApple OSS Distributions } 33*d4514f0bSApple OSS Distributions dt_stat_finalize(s); 34*d4514f0bSApple OSS Distributions } 35*d4514f0bSApple OSS Distributions } 36*d4514f0bSApple OSS Distributions 37*d4514f0bSApple OSS Distributions T_DECL(gettimeofday_sl, "gettimeofday performance in loop with sleep", T_META_TAG_VM_NOT_ELIGIBLE) { 38*d4514f0bSApple OSS Distributions { 39*d4514f0bSApple OSS Distributions struct timeval time; 40*d4514f0bSApple OSS Distributions dt_stat_time_t s = dt_stat_time_create("gettimeofday loop with sleep"); 41*d4514f0bSApple OSS Distributions while (!dt_stat_stable(s)) { T_STAT_MEASURE_BATCH(s)42*d4514f0bSApple OSS Distributions T_STAT_MEASURE_BATCH(s){ 43*d4514f0bSApple OSS Distributions gettimeofday(&time, NULL); 44*d4514f0bSApple OSS Distributions } 45*d4514f0bSApple OSS Distributions sleep(1); 46*d4514f0bSApple OSS Distributions } 47*d4514f0bSApple OSS Distributions dt_stat_finalize(s); 48*d4514f0bSApple OSS Distributions } 49*d4514f0bSApple OSS Distributions } 50