commit (HEAD): uuid stuff and rationale

From: Tomas Frydrych (tomasfrydrych_at_yahoo.co.uk)
Date: Tue Jan 27 2004 - 07:37:40 EST

  • Next message: tamas_at_pressflex.com: "Hello"

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

    * 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
    future).

    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()
    function.

    Tomas

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



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