Reflection is still significantly slower than direct calls. Two things have changed:
Runtimes have optimized reflection mechanisms so that the difference has become smaller CPUs have gotten faster so that small inefficiencies are easier to tolerate Together, these two factors have brought the cost of reflection down to the point where you can routinely use it.