Google Maps' time estimations seem to somehow take the elevation into account. I've definitely had it give me different time estimates going uphill versus downhill in SF.