reduce calls to time.time() (performance)