Use performance.now() for precision timing when available