my profiling code is here:
    @contextmanager
    def timeit(msg):
        start = time.time_ns()
        yield
        end = time.time_ns()

        result = round((end - start) * 1e-6, 2)
        msg = f"timeit: {result:<10} ms " + msg

        print(msg)

then I use it like so:
with timeit("normalization"):
    # code here
    torch.cuda.synchronize()

But overall speed (on 1k images) is really different, it is notable w/o any measurements.