The reason I then change to this is according to the javadoc of DataType.compare() as follows, the last sentence
"
public static int compare(Object o1,
                          Object o2,
                          byte dt1,
                          byte dt2)

    Same as compare(Object, Object), but does not use reflection to determine the type of passed in objects, relying instead on the caller to provide the appropriate values, as determined by findType(Object). Use this version in cases where multiple objects of the same type have to be repeatedly compared. 
"