Not always excellent
At first sight a GPS unit should be able to produce an odometer reading with almost total accuracy, unlike older devices such as pedometers. Careful reflection makes it clear that there are at least two problems that make it difficult to achieve the full accuracy promised.
The first problem is trivial. A GPS track is a polygon rather than a curve (think UK 50P coins) so there is a slight "corner-cutting" effect that very slightly reduces the recorded distance. If you want an illustrated example then click here. In practice this error is so small that it should not worry anyone.
The second problem is variable in magnitude and could be very serious. In some places, for example in leafy woodlands, a GPS struggles to receive the satellite signals and often records false points which are off the track. Because of this the writers of GPS software go to some considerable lengths to remove these false points. Usually they can be recognised as movements to one side of the continuing track followed by a quick return. Unfortunately this is also a good description of a path zigzagging up a hill. So removing the false points sometimes removes real trackpoints as well. There is no answer to this challenge; the software writer can only try to increase the successes and minimise the mistakes. Even so I have seen one case where about 1.5km of track was ignored by a GPS odometer!
If you want a really accurate track length after some false points have been recorded then there is only one answer available. You will have to put your recorded track on to either a digital map or an aerial (aka satellite) image and use your human knowledge and judgement to correct the track and then re-assess its length. To do this, you will need some computer software. I have listed a few of the programs/facilities that I have found useful.
You may be interested in an example of the difficulties encountered. I have studied the odometer results from a single GPS model operating in flat country with unrestricted line of sight to satellites. The answers were surprisingly bad because (in my opinion) the odometer software was frequently rejecting perfectly valid data and so under-recording the distance.