const generates more optimal code if it adheres to the the rule that the parameter will not be changed inside the procedure or function. This is especially the case with parameters of a managed type:strings, classes, advanced records etc. because the compiler knows it can skip reference counting code. But it can also be beneficial with simple types: depending on the complexity of the code it can save a register and/or a copy