> On Jun 13, 2024, at 20:54, Martin Storsjö <mar...@martin.st> wrote: > > On Fri, 7 Jun 2024, Martin Storsjö wrote: > >> The default timer register pmccntr_el0 usually requires enabling >> access with e.g. a kernel module. >> --- >> cntvct_el0 has significantly better resolution than >> av_gettime_relative (while the unscaled nanosecond output of >> clock_gettime is much higher resolution). >> >> In one tested case, the cntvct_el0 timer has a frequency of 25 MHz >> (readable via the register cntfrq_el0). >> --- >> libavutil/aarch64/timer.h | 9 +++++++++ >> 1 file changed, 9 insertions(+) >> >> diff --git a/libavutil/aarch64/timer.h b/libavutil/aarch64/timer.h >> index fadc9568f8..966f17081a 100644 >> --- a/libavutil/aarch64/timer.h >> +++ b/libavutil/aarch64/timer.h >> @@ -33,7 +33,16 @@ static inline uint64_t read_time(void) >> uint64_t cycle_counter; >> __asm__ volatile( >> "isb \t\n" >> +#if defined(__ANDROID__) >> + // cntvct_el0 has lower resolution than pmccntr_el0, but is usually >> + // accessible from user space by default. >> + "mrs %0, cntvct_el0 " >> +#else >> + // pmccntr_el0 has higher resolution, but is usually not accessible >> + // from user space by default (but access can be enabled with a >> custom >> + // kernel module). >> "mrs %0, pmccntr_el0 " >> +#endif >> : "=r"(cycle_counter) :: "memory" ); > > Zhao, does this implementation seem useful to you? Does it give you better > (more accurate, less noisy?) benchmarking numbers on Android, than the > fallback based on clock_gettime?
Hi Martin, this works on Android and macOS both, so maybe you can enable it for macOS too. I have compared the result of this implementation and mach_absolute_time, this looks like the implementation has smaller variable Deviation than mach_absolute_time. I guess the result is the same when compared to clock_gettime. We have linux perf on Android, and kperf on macOS. Linux perf has the benefit to reduce interference from other processes on statistical results, if I understand correctly. I’m not sure about the benefit of macOS kperf.l > > // Martin > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org <mailto:ffmpeg-devel@ffmpeg.org> > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org <mailto:ffmpeg-devel-requ...@ffmpeg.org> with > subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".