commit (HEAD): uuid stuff and rationale

From: Tomas Frydrych (
Date: Tue Jan 27 2004 - 07:37:40 EST

  • Next message: "Hello"

    * renamed AD_Document::get/setUUID() to more appropriate

    * added
            UT_UUID * AD_Document::getNewUUID()
            UT_uint32 AD_Document::getNewUUID32()
            UT_uint64 AD_Document::getNewUUID64()

    The middle one is intended to be used where numerical uid's are
    needed instead of UT_rand() (which I have always voiced concerns
    about, see below) and the old UT_UniqueId class (which too has
    problems; I will remove the UT_UniqueId class in the foreseeable

    It is perhaps worth noting that the numerical uuid's are hashed
    values of the 128-bit UUID proper, so they are only as unique as the
    hash is collision free. The FNV hash seems to have pretty good
    collision resistance, certainly better than the UT_rand() function.

    Just to answer those who feel UT_rand() is good enough to create
    uids, in tests I managed to generate the same random number twice in
    less than 6500 calls to UT_rand() !!!. This simply demonstrates the
    fact that randomness does not imply uniqueness. Running tests on a
    large samples (280,000 uids), I found that the uuid hash has
    collision resistance around 3 times better than the UT_rand()


    files: xad_Document.h/cpp, pd_Document.h/ccp, ut_uuid.h/cpp,

    This archive was generated by hypermail 2.1.4 : Tue Jan 27 2004 - 07:40:49 EST