`
febird
  • 浏览: 254287 次
  • 性别: 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机制的理解。

    20190313-100538-非对称电容在变压器油中10kv高压电作用下产生力的现象

    这个实验展示了非对称电容在高压电场中出现的力学现象。 非对称电容悬挂在悬臂梁传感器上,变压器油保持了两极的绝缘良好,高压产生的力的效应使得传感器测量的非对称电容的重量减轻。 这个实验有力的驳斥了用于解释非对称电容力学现象的离子风假说。 实验使用设备为STM32F429+HX711+悬臂梁传感器,上位机由C# WPF实现。

    基于以太坊区块链的车险理赔系统全部资料+详细文档.zip

    【资源说明】 基于以太坊区块链的车险理赔系统全部资料+详细文档.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    银行家算法的C++实现.zip

    银行家算法 【项目资源】:包含前端、后端、移动开发、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源,毕业设计等各种技术项目的源码。包括C++、Java、python、web、C#、EDA等项目的源码。 【适用人群】:适用于希望学习不同技术领域的初学者或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

    基于MATLAB公路裂缝检测系统【含界面GUI】.zip

    计算机网络课后题答案

    基于hyperledger fabric区块链的工作流审批应用全部资料+详细文档.zip

    【资源说明】 基于hyperledger fabric区块链的工作流审批应用全部资料+详细文档.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    【创新未发表】基于蝠鲼觅食优化算法MRFO-Kmean-Transformer-LSTM实现负荷预测附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    JEEWEB Mybatis版本是一款基于SpringMVC+Spring+Mybatis+Mybatis Plus的JAVA WEB敏捷开发系统.zip

    JEEWEB Mybatis版本是一款基于SpringMVC+Spring+Mybatis+Mybatis Plus的JAVA WEB敏捷开发系统.zip

    毕业设计-基于微信小程序的共享雨伞租借系统项目源码

    毕业设计-基于微信小程序的共享雨伞租借系统项目源码,本项目是一套98分毕业设计系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业,包含:项目源码、项目说明等。该项目可以直接作为毕设使用,项目都经过严格调试,确保可以运行! 毕业设计-基于微信小程序的共享雨伞租借系统项目源码,本项目是一套98分毕业设计系统,毕业设计-基于微信小程序的共享雨伞租借系统项目源码主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,毕业设计-基于微信小程序的共享雨伞租借系统项目源码可作为课程设计、期末大作业,包含:项目源码、项目说明等。该项目可以直接作为毕设使用,项目都经过严格调试,确保可以运行! 毕业设计-基于微信小程序的共享雨伞租借系统项目源码,本项目是一套98分毕业设计系统,毕业设计-基于微信小程序的共享雨伞租借系统项目源码主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,毕业设计-基于微信小程序的共享雨伞租借系统项目源码可作为课程设计、期末大作业,包含:项目源码、项目说明等。该项目可以直接作为毕设使用,项目都经过严格调

    【创新未发表】基于布谷鸟优化算法CS-Kmean-Transformer-BiLSTM实现负荷预测附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    朴素贝叶斯分类器算法Python代码实现

    用Python代码实现了一个朴素贝叶斯分类器算法,代码中包含拟合函数、预测函数、简单数据运行示例。并列给出了调用sklearn中的代码。 代码解释说明的博文:https://blog.csdn.net/u013172930/article/details/144042608

    基于JAVA+SpringBoot+Vue+MySQL的音乐翻唱与分享平台 源码+数据库+论文(高分毕业设计).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:maven 数据库工具:navicat

    基于JAVA+SpringBoot+Vue+MySQL的学生毕业离校系统 源码+数据库+论文(高分毕业设计).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:maven 数据库工具:navicat

    我国2007-2022年上市银行绿色信贷余额、绿色信贷比率、资本充足率等关键指标数据-最新出炉.zip

    1、资源特点 全新整理:今年全新力作,手工精心打磨。 权威数据:数据来自权威渠道,精准可靠。 放心引用:杜绝数据造假,品质保证。 2、适用人群 在校专科生、本科生、研究生、大学教师、学术科研工作者 3、适用专业 经济学、地理学、城市规划、公共政策、社会学、商业管理、工商管理等

    论文实证模型(回归、面板熵值法、中介调节、内生性检验等代码+数据)-最新出炉.zip

    1、资源特点 全新整理:今年全新力作,手工精心打磨。 权威数据:数据来自权威渠道,精准可靠。 放心引用:杜绝数据造假,品质保证。 2、适用人群 在校专科生、本科生、研究生、大学教师、学术科研工作者 3、适用专业 经济学、地理学、城市规划、公共政策、社会学、商业管理、工商管理等

    OpenCV如何找到角点.docx

    前言 问:基于OpenCV如何找到角点,有什么思路?OpenCV方法有什么好的思路吗?找到下面的图中白色矩形的角点的方法。 其实就是用角点检测 + 轮廓分析 搞定。 OpenCV解决 基于OpenCV实验大师工具软件1.1 设计的流程如下: 最终每一步的运行结果如下: 面积计算数据跟统计结果如下: OpenCV工作流引擎SDK支持 通过导出的vm配置文件,加载到工作流引擎,可以实现流程复用,处理多张图像,支持的SDK调用代码如下: #include "main_workflow.h"#include <iostream>#include <fstream> int main(int argc, char** argv) { std::shared_ptr<QTongCoreCVWorkFlow> engine(new QTongCoreCVWorkFlow()); bool succ = engine->initWorkFlow("D:/12121.vm", "69585e470300cdb5a6910131eb639882"); if (!succ) {

    (完整数据)全国各省、市、县逐年水纹数据(降水量到2022

    数据年份:1950-2022年,年度数据 数据范围: 省级数据:全国33省份(含直辖市,香港/台湾); 城市数据:全国371城市地级市、直辖市、地区州盟 ; 区县数据:全国2876区县、市辖区、自治县、县域县级市;

    基于JAVA+SpringBoot+Vue+MySQL的网上商城购物系统 源码+数据库+论文(高分毕业设计).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:maven 数据库工具:navicat

    editor是由web前端研发部开发的所见即所得富文本web编辑器.zip

    editor是由web前端研发部开发的所见即所得富文本web编辑器.zip开发

Global site tag (gtag.js) - Google Analytics