I would like to get the number of different values found in a List.
For example:
The output for the List a={1,2,3,4,5} would be 5 whereas it would b
Just for amusement, all the following commands also give the desired result:
Length@Gather@l
Length@Union@l
Length@Tally@l
Count[BinCounts@l, Except@0]
Count[BinLists@l, Except@{}]
Length@Split@Sort@l
Length@GatherBy[l, # &]
Length@Split@SortBy[l, # &]
And many more, of course.
Edit
Here is a little timing experiment (not serious)
l = RandomInteger[{1, 10^2}, 10^7];
t2[x_] := {Timing[x], ToString[HoldForm@x]};
SetAttributes[t2, HoldAll]
Grid[Reverse /@
{t2[Length@DeleteDuplicates[l]],
t2[Length@Tally[l]],
t2[Length@Gather[l]],
t2[Count[BinCounts[l], Except@0]],
t2[Length@Union[l]],
t2[Length@Split@Sort@l],
t2[Count[BinLists[l], Except@0]]},
Frame -> All]

BTW: Note the difference between BinLists[ ] and BinCounts[ ]
Edit
A more detailed view of DeleteDuplicates vs Tally
t = Timing;
ListLinePlot@Transpose@
Table[l = RandomInteger[{1, 10^i}, 10^7];
{Log@First@t@Length@DeleteDuplicates@l,
Log@First@t@Length@Tally@l},
{i, Range[7]}]
Beware! Log Plot!

Length[DeleteDuplicates[a]]
would do the trick. Depending on what else you're going to do, you could use Union or Tally instead of DeleteDuplicates.
Use DeleteDuplicates (or Union in older versions) to remove duplicate elements. You can then count the elements in the returned list.
In[8]:= Length[DeleteDuplicates[a]]
Out[8]= 5
In[9]:= Length[DeleteDuplicates[b]]
Out[9]= 2
CountDistinct[a]
would also do the trick, which is a function introduced in Mathematica 10.0, a function equivalent to
Length[DeleteDuplicates[a]]