There is variation, without any doubt. Eg for a linear speed curve of one of the locomotives I've been profiling (Brawa 41030), stopping from external speed 12 will result in distances covered between 29.9 and 31.55 cm, averaging 31.12 cm over the 10 runs used to gather the data). Since the test section of track at the time was the same, and given the measurements were done in a relative small time window, the difference might also have something to do - aside from the internal mechanics - with the precision of the decoder itself (eg how fast it cycles through the speed steps internally). I'm just interested in the range of the values, since based on this I can extract the equations and get the computed stopping distances. Then I get this in my computer code that's doing train control, and the trains get to stop in front of the signals gently.
Why do I want all this precision, since I could already measure to the tenth of a millimetre ? Because that was done using a 50-cm ruler right next to a section of straight track on my layout itself, and stopping from high speeds - with various speed curves - will result in far greater stopping distances than mere 50 cm. An oval track section will solve that problem.
Why do I want to do this instead of using any of the computer software that can do train control (eg Freiwald's Railroad & Co.) ? For the pure fun.