Timing and result output moved to benchmark function