Looking in open source applications is one approach. OsmAnd is an application for Android that I've used in the past and has given fairly accurate ETAs. This was quite fruitless though, as the only thing I found was 40km/h applied when
maxspeed is set to
none (the standard way of tagging this, as an absent value might mean "unknown" or "not mapped yet").
Testing OsmAnd by routing over a piece of highway that has
maxspeed=none set for almost 40 kilometers, I get around 133km/h. An odd value, but the best estimate that I could make given multiple measurements (different parts of the same stretch). The application reports the estimated ascend and descend, but it's hit and miss: if I see a relatively steep incline at point X and I route 3 kilometers before and after point X, it will suddenly not see the incline anymore. It also doesn't seem to take this into account at all.
OSRM, another routing engine for OpenStreetMap has 140km/h coded in. Testing this service via the interface at openstreetmap.org however, I find that it reports speeds of around 115km/h ±2. At this point I've given up on deep-dives into source code.
Mapzen, also through the openstreetmap.org interface, gives me 105km/h ±1.
GraphHopper, also through the openstreetmap.org interface, gives me 120km/h ±0.003. Finally one that is consistent and makes sense.
YourNavigation, which seems to use Gosmore as the routing engine (operating on OpenStreetMap data), gives me 108km/h ±1. I get the feeling it's one of the older, less-maintained services and it appears to be an outlier in terms of speed.
Google Maps simply does not compute. At 04:30 in the morning, it cannot make up its mind about whether I'll take 8 or 12 minutes to do 15.8km. Hence the speed estimates are between 80km/h and 118km/h at 04:30 in the morning. I'd advise caution when using Google Maps to estimate your ETA and rather use another, more sane service that does not rely 100% on algorithms and 0% on sense.
Bing Maps seems to calculate with 130-135km/h, using its "without traffic" estimate. Currently (15:00 in Germany) it reports "light traffic" on this stretch, which brings the speed down to 115km/h.
Waze also takes traffic into account and has no option to turn it off. The results are quite varied/unreliable, though not as bad as Google's: between 105.6km/h and 125.2km/h at 04:30AM (across 7 tests: all subsets of the same stretch of highway as I tested the previous services with). Again, use common sense, because at 04:30 you'll not suddenly get stuck in 105km/h traffic for 19km, especially when an overlapping stretch of 18km drives 121km/h. (For the Americans, 105-121km/h is is 65-75mph.)
It depends. Some services estimate around 110-115km/h, and others assume you'll reach the advisory speed in Germany of 130km/h.
In the past I've had good results with OsmAnd which is on the 115km/h side, so I suppose there is something to say for accounting some 10% of variance in traffic, curves, etc.
For services that try to take current traffic into account, make sure to apply common sense.