Hypothetically, the second program will perform slightly faster than the first. Realistically, the second program takes a long time to initialize. The first is rather zippy anyways. We can thus say that the second program is worse than the first. The lesson here is to not make a lot of unnecessary calculations.
What are some other examples of short, bad programs, and their superior replacements?
The second one is much smoother because the FrontEnd does not need to care about anything but t, when for the first case the whole ContourPlot is recalculated.