c/c++獲取uuid

c/c++標準庫中沒有自帶的uuid工具函數/類,可以使用三方庫libuuid,boost,或者手工實現,如下:

[zjh@hs-10-20-xxx lib]$ sudo yum install libuuid-devel
[sudo] password for zjh: 
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
base                                                                                                                                                                   | 1.8 kB  00:00:00     
extras                                                                                                                                                                 | 1.4 kB  00:00:00     
updates                                                                                                                                                                | 1.5 kB  00:00:00     
Package libuuid-devel-2.23.2-65.el7_9.1.x86_64 already installed and latest version
Nothing to do

測試程序

// boost版本異常慢
void test_uuid_perf()
{
    // boost::uuids::uuid a_uuid;
    vector<string> myvertor;
    uuid_t uu;
    char uuid_str[37];
    
    struct timeval start, stop, diff;
    gettimeofday(&start, 0);   //開始計時
    for (int i=0;i<100000;i++)
    {
        // a_uuid = boost::uuids::random_generator()();
        // myvertor.emplace_back(boost::uuids::to_string(a_uuid));
        uuid_generate(uu);
    
        uuid_unparse_lower(uu, uuid_str);
        string str1(uuid_str);
        myvertor.emplace_back(str1);

    }
    cout << myvertor[10] << endl;
    gettimeofday(&stop, 0);   //結束計時
    timeval_subtract(&diff, &start, &stop);
    printf("總計用時:%d秒%d微秒\n",diff.tv_sec, diff.tv_usec);  // boost版本,10萬個uuid 17秒多; uuid版本, 10萬個0.5秒,35倍
    printf("完成");
}

 

https://www.cnblogs.com/nanfei/p/11742249.html libuuid,性能最佳,是手工和boost的幾十倍

https://www.jianshu.com/p/33639aee1ffa,https://blog.51cto.com/u_14508933/5565901 手工編寫

https://blog.csdn.net/chiefarbiter/article/details/90201581 boost

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章