There are many apps available for iOS and Android. Some of the big names:

 - [Strava][1]
 - [EndoMondo][2]
 - [Runkeeper][3]
 - [MapMyRide][4]

They all have a mobile application that tracks your ride and then uploads it to a central server, accessible via a website. The website often provides reports and breakdowns of your performance.

They also add elevation data, but I'm not sure how accurate it is.

Additional performance metrics can be added through the use of [ANT+][5] compatible devices to allow monitoring speed, cadence, heart rate and many more metrics.

My personal favorite, having evaluated all of them, is Strava. It is free, has a unique feature of tracking "Segments" of your ride, where you can see your performance for shorter stretches of your overall ride, relative to your past performance and also to other riders.


  [1]: http://strava.com
  [2]: http://endomondo.com
  [3]: http://runkeeper.com
  [4]: http://mapmyride.com
  [5]: http://en.wikipedia.org/wiki/ANT+