CUDA operations are executed asynchronously, so you would need to synchronize the code before starting and stopping the timers. Based on your code snippet you might profile the CUDA context initialization etc. which would increase the measured time.
Yes, non_blocking=True would allow the transfer to be executed in the background. Profiling it could still show the same time as the advantage would be a potential overlap with other workloads.