`
febird
  • 浏览: 258859 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

febird.dataio vs boost.serialization 运行性能对比

阅读更多

代码表示的是数据格式,DATA_IO_LOAD_SAVE 在 <febird/io/DataIO.h> 中定义

对boost,DATA_IO_LOAD_SAVE 的定义相当于:

#define DATA_IO_LOAD_SAVE(Class, Members) \

    friend class boost::serialization::access; \

    template<class Archive> \

    void serialize(Archive & ar, const unsigned int version) \

    { ar Members; }

 

数据格式:

 

struct MyData1

{

    uint32_t a, b, c;

    uint32_t d[5];

    DATA_IO_LOAD_SAVE(MyData1, &a&b&c&d)

};

 

struct MyData2

{

    uint32_t a, b, c, d;

    MyData1 e;

DATA_IO_LOAD_SAVE(MyData2, &a&b&c&d&e)

};

 

struct MyData3

{

    uint32_t a, b, c;

    uint32_t d;

};

DATA_IO_DUMP_RAW_MEM(MyData3)

 

struct VarIntD

{

    var_uint32_t a, b, c, d, e, f;

 

    VarIntD()

    {

        a = 127;

        b = 128;

        c = 128*128;

        d = 128*128*128;

        e = 128*128*128*128;

        f = 1;

    }

    DATA_IO_LOAD_SAVE(VarIntD, &a&b&c&d&e&f)

};

typedef pair<MyData2, MyData3> MyData23; 

 

boost_bin_save: loop=10, time[febird, boost, ratio=b/f] in us
    vector<pair<int,int> >.size= 4000, time[   1004,    1004,    1.0000]
    vector<MyData1>       .size= 4000, time[  23918,   23918,    1.0000]
    vector<string>        .size= 4000, time[   9266,    9266,    1.0000]
    map<int,string>       .size= 3756, time[  19434,   19434,    1.0000]
    loop{MyData1 },  loop count= 4000, time[  23592,   23592,    1.0000]
    loop{VarIntD },  loop count= 4000, time[  52832,   52832,    1.0000]
    vector<MyData23>,     .size= 4000, time[  68581,   68581,    1.0000]

boost_bin_load: loop=10, time[febird, boost, ratio=b/f] in us
    vector<pair<int,int> >.size= 4000, time[    766,     766,    1.0000]
    vector<MyData1>       .size= 4000, time[  26738,   26738,    1.0000]
    vector<string>        .size= 4000, time[  41097,   41097,    1.0000]
    map<int,string>       .size= 3756, time[  63985,   63985,    1.0000]
    loop{MyData1 },  loop count= 4000, time[  23486,   23486,    1.0000]
    loop{VarIntD },  loop count= 4000, time[  88218,   88218,    1.0000]
    vector<MyData23>,     .size= 4000, time[  75386,   75386,    1.0000]

File Save Native: loop=10, time[febird, boost, ratio=b/f] in us
    vector<pair<int,int> >.size= 4000, time[    593,    1004,    1.6910]
    vector<MyData1>       .size= 4000, time[   1043,   23918,   22.9288]
    vector<string>        .size= 4000, time[   3741,    9266,    2.4767]
    map<int,string>       .size= 3756, time[   5018,   19434,    3.8723]
    loop{MyData1 },  loop count= 4000, time[   2898,   23592,    8.1390]
    loop{VarIntD },  loop count= 4000, time[   8664,   52832,    6.0977]
    vector<MyData23>,     .size= 4000, time[   5768,   68581,   11.8887]

File Load Native: loop=10, time[febird, boost, ratio=b/f] in us
    vector<pair<int,int> >.size= 4000, time[    400,     766,    1.9156]
    vector<MyData1>       .size= 4000, time[    868,   26738,   30.7855]
    vector<string>        .size= 4000, time[   3812,   41097,   10.7790]
    map<int,string>       .size= 3756, time[  58671,   63985,    1.0906]
    loop{MyData1 },  loop count= 4000, time[   1547,   23486,   15.1780]
    loop{VarIntD },  loop count= 4000, time[   2580,   88218,   34.1866]
    vector<MyData23>,     .size= 4000, time[   4667,   75386,   16.1499]

File Save Portable: loop=10, time[febird, boost, ratio=b/f] in us
    vector<pair<int,int> >.size= 4000, time[   1114,    1004,    0.9010]
    vector<MyData1>       .size= 4000, time[   4044,   23918,    5.9143]
    vector<string>        .size= 4000, time[   3480,    9266,    2.6628]
    map<int,string>       .size= 3756, time[   5089,   19434,    3.8185]
    loop{MyData1 },  loop count= 4000, time[   3622,   23592,    6.5132]
    loop{VarIntD },  loop count= 4000, time[   7255,   52832,    7.2812]
    vector<MyData23>,     .size= 4000, time[   6831,   68581,   10.0397]

File Load Portable: loop=10, time[febird, boost, ratio=b/f] in us
    vector<pair<int,int> >.size= 4000, time[    500,     766,    1.5318]
    vector<MyData1>       .size= 4000, time[   1543,   26738,   17.3266]
    vector<string>        .size= 4000, time[   3924,   41097,   10.4728]
    map<int,string>       .size= 3756, time[  58689,   63985,    1.0902]
    loop{MyData1 },  loop count= 4000, time[   2957,   23486,    7.9425]
    loop{VarIntD },  loop count= 4000, time[   2575,   88218,   34.2497]
    vector<MyData23>,     .size= 4000, time[   5375,   75386,   14.0246]

Memory Save Native: loop=10, time[febird, boost, ratio=b/f] in us
    vector<pair<int,int> >.size= 4000, time[    198,    1004,    5.0705]
    vector<MyData1>       .size= 4000, time[    510,   23918,   46.8615]
    vector<string>        .size= 4000, time[   3088,    9266,    2.9999]
    map<int,string>       .size= 3756, time[   3679,   19434,    5.2817]
    loop{MyData1 },  loop count= 4000, time[   1106,   23592,   21.3311]
    loop{VarIntD },  loop count= 4000, time[   7546,   52832,    7.0006]
    vector<MyData23>,     .size= 4000, time[   2242,   68581,   30.5868]

Memory Load Native: loop=10, time[febird, boost, ratio=b/f] in us
    vector<pair<int,int> >.size= 4000, time[    170,     766,    4.4853]
    vector<MyData1>       .size= 4000, time[    505,   26738,   52.9088]
    vector<string>        .size= 4000, time[   3134,   41097,   13.1104]
    map<int,string>       .size= 3756, time[  58097,   63985,    1.1013]
    loop{MyData1 },  loop count= 4000, time[    114,   23486,  205.5526]
    loop{VarIntD },  loop count= 4000, time[   4586,   88218,   19.2339]
    vector<MyData23>,     .size= 4000, time[   1894,   75386,   39.7889]

Memory Save Portable: loop=10, time[febird, boost, ratio=b/f] in us
    vector<pair<int,int> >.size= 4000, time[    557,    1004,    1.8029]
    vector<MyData1>       .size= 4000, time[   2392,   23918,    9.9960]
    vector<string>        .size= 4000, time[   2916,    9266,    3.1778]
    map<int,string>       .size= 3756, time[   3563,   19434,    5.4539]
    loop{MyData1 },  loop count= 4000, time[   2203,   23592,   10.7061]
    loop{VarIntD },  loop count= 4000, time[   7307,   52832,    7.2294]
    vector<MyData23>,     .size= 4000, time[   3742,   68581,   18.3243]

Memory Load Portable: loop=10, time[febird, boost, ratio=b/f] in us
    vector<pair<int,int> >.size= 4000, time[    301,     766,    2.5464]
    vector<MyData1>       .size= 4000, time[   1182,   26738,   22.6056]
    vector<string>        .size= 4000, time[   3150,   41097,   13.0453]
    map<int,string>       .size= 3756, time[  57657,   63985,    1.1098]
    loop{MyData1 },  loop count= 4000, time[   1549,   23486,   15.1589]
    loop{VarIntD },  loop count= 4000, time[   4610,   88218,   19.1325]
    vector<MyData23>,     .size= 4000, time[   2650,   75386,   28.4410]

Uncheck Save Native: loop=10, time[febird, boost, ratio=b/f] in us
    vector<pair<int,int> >.size= 4000, time[    173,    1004,    5.7797]
    vector<MyData1>       .size= 4000, time[    480,   23918,   49.8057]
    vector<string>        .size= 4000, time[   2480,    9266,    3.7358]
    map<int,string>       .size= 3756, time[   3436,   19434,    5.6552]
    loop{MyData1 },  loop count= 4000, time[   1070,   23592,   22.0381]
    loop{VarIntD },  loop count= 4000, time[   7110,   52832,    7.4300]
    vector<MyData23>,     .size= 4000, time[   2155,   68581,   31.8240]

Uncheck Load Native: loop=10, time[febird, boost, ratio=b/f] in us
    vector<pair<int,int> >.size= 4000, time[    172,     766,    4.4489]
    vector<MyData1>       .size= 4000, time[    530,   26738,   50.3747]
    vector<string>        .size= 4000, time[   2985,   41097,   13.7681]
    map<int,string>       .size= 3756, time[  57228,   63985,    1.1181]
    loop{MyData1 },  loop count= 4000, time[     17,   23486, 1355.9839]
    loop{VarIntD },  loop count= 4000, time[   2472,   88218,   35.6816]
    vector<MyData23>,     .size= 4000, time[   1838,   75386,   40.9979]

Uncheck Save Portable: loop=10, time[febird, boost, ratio=b/f] in us
    vector<pair<int,int> >.size= 4000, time[    518,    1004,    1.9359]
    vector<MyData1>       .size= 4000, time[   2415,   23918,    9.9001]
    vector<string>        .size= 4000, time[   2430,    9266,    3.8126]
    map<int,string>       .size= 3756, time[   3599,   19434,    5.3985]
    loop{MyData1 },  loop count= 4000, time[   2037,   23592,   11.5812]
    loop{VarIntD },  loop count= 4000, time[   7476,   52832,    7.0660]
    vector<MyData23>,     .size= 4000, time[   3740,   68581,   18.3325]

Uncheck Load Portable: loop=10, time[febird, boost, ratio=b/f] in us
    vector<pair<int,int> >.size= 4000, time[    281,     766,    2.7232]
    vector<MyData1>       .size= 4000, time[   1199,   26738,   22.2897]
    vector<string>        .size= 4000, time[   2731,   41097,   15.0437]
    map<int,string>       .size= 3756, time[  57136,   63985,    1.1199]
    loop{MyData1 },  loop count= 4000, time[   1578,   23486,   14.8825]
    loop{VarIntD },  loop count= 4000, time[   2628,   88218,   33.5581]
    vector<MyData23>,     .size= 4000, time[   2420,   75386,   31.1459]

 

项目地址:http://code.google.com/p/febird

分享到:
评论

相关推荐

    febird C++ 库(附带所有源码)

    febird implemented a serialization framework(vs boost.serialization/google.protocolbuffer), can be used in protocol parsing, big/small data serialization, even in very small object serialize, ...

    rpc-Remote Procedure Call源码2

    远程过程调用(RPC,Remote Procedure Call)是分布式计算领域中的一个重要概念,它允许一个程序在不理解...同时,这也是一个很好的实践机会,让我们能够亲手编写和运行一个简单的RPC应用,从而加深对RPC机制的理解。

    [AB PLC例程源码][MMS_044666]Translation N-A.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    kolesar_3cd_01_0716.pdf

    kolesar_3cd_01_0716

    latchman_01_0108.pdf

    latchman_01_0108

    matlab程序代码项目案例:matlab程序代码项目案例MPC在美国高速公路场景中移动的车辆上的实现.zip

    matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    pimpinella_3cd_01_0716.pdf

    pimpinella_3cd_01_0716

    petrilla_01_0308.pdf

    petrilla_01_0308

    [AB PLC例程源码][MMS_041452]Speed Controls in Plastic Extrusion.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    强化学习驱动下DeepSeek技术创新及其对AI发展的影响

    内容概要:本文档由张卓老师讲解,重点探讨DeepSeek的技术革新及强化学习对未来AI发展的重要性。文章回顾了AI的历史与发展阶段,详细解析Transformer架构在AI上半场所起到的作用,深入介绍了MoE混合专家以及MLA低秩注意机制等技术特点如何帮助DeepSeek在AI中场建立优势,并探讨了当前强化学习的挑战和边界。文档不仅提及AlphaGo和小游戏等成功案例来说明强化学习的强大力量,还提出了关于未来人工通用智能(AGI)的展望,特别是如何利用强化学习提升现有LLMs的能力和性能。 适用人群:本资料适宜对深度学习感兴趣的研究人员、开发者以及想要深入了解人工智能最新进展的专业人士。 使用场景及目标:通过了解最新的AI技术和前沿概念,在实际工作中能够运用更先进的工具和技术解决问题。同时为那些寻求职业转型或者学术深造的人提供了宝贵的参考。 其他说明:文中提到了许多具体的例子和技术细节,如DeepSeek的技术特色、RL的理论背景等等,有助于加深读者对于现代AI系统的理解和认识。

    有师傅小程序开源版v2.4.14+前端.zip

    有师傅小程序开源版v2.4.14 新增报价短信奉告 优化部分细节

    [AB PLC例程源码][MMS_047333]Motor Sequence Starter with timers to start.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    商城二级三级分销系统(小程序+后台含源码).zip

    商城二级三级分销系统(小程序+后台含源码).zip

    li_3ck_01b_0918.pdf

    li_3ck_01b_0918

    nicholl_3cd_01_0516.pdf

    nicholl_3cd_01_0516

    1995-2022年 网络媒体关注度、报刊媒体关注度与媒体监督相关数据.zip

    媒体关注度是一个衡量公众对某个事件、话题或个体关注程度的重要指标。它主要反映了新闻媒体、社交媒体、博客等对于某一事件、话题或个体的报道和讨论程度。 媒体监督的J-F系数(Janis-Fadner系数)是一种用于测量媒体关注度的指标,特别是用于评估媒体对企业、事件或话题的监督力度。J-F系数基于媒体报道的正面和负面内容来计算,从而为公众、研究者或企业提供一个量化工具,以了解媒体对其关注的方向和强度。 本数据含原始数据、参考文献、代码do文件、最终结果。参考文献中JF系数计算公式。 指标 代码、年份、标题出现该公司的新闻总数、内容出现该公司的新闻总数、正面新闻数全部、中性新闻数全部、负面新闻数全部、正面新闻数原创、中性新闻数原创、负面新闻数原创,媒体监督JF系数。

    [AB PLC例程源码][MMS_040315]Double INC and Double DEC of INT datatype.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    [AB PLC例程源码][MMS_047773]Convert Feet to Millimeters.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    [AB PLC例程源码][MMS_042349]How to read-write data to-from a PLC using OPC in Visual Basic 6.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    matlab程序代码项目案例:matlab程序代码项目案例论文代码 多篇RMPC 鲁棒模型预测控制Paper-code-implementation.zip

    matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

Global site tag (gtag.js) - Google Analytics