1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        DirectStructC 結(jié)構(gòu)體工具

        聯(lián)合創(chuàng)作 · 2023-09-28 17:03

        DirectStruct是一個(gè)強(qiáng)有力的代碼自動(dòng)生成工具,它可以自動(dòng)生成C結(jié)構(gòu)體與XML、JSON、二進(jìn)制(帶壓縮)等報(bào)文之間的轉(zhuǎn)換代碼,還能自動(dòng)生成ESQL代碼片段,在應(yīng)用中直接使用自動(dòng)化代碼以提高開發(fā)效率,避免開發(fā)冗余和手工編碼風(fēng)險(xiǎn)。

        DirectStruct生成了哪些自動(dòng)化代碼?

        • C結(jié)構(gòu)體定義
        • 批量初始化缺省值函數(shù)
        • 網(wǎng)絡(luò)/主機(jī)字節(jié)序化函數(shù)
        • 二進(jìn)制序列化/反序列化函數(shù)(可帶壓縮)
        • XML序列化/反序列化函數(shù)(依賴開源庫fasterxml)
        • JSON序列化/反序列化函數(shù)(依賴開源庫fasterjson)
        • 嵌入式SQL代碼
        • 打印結(jié)構(gòu)體內(nèi)所有字段值函數(shù)

        用DirectStruct自動(dòng)生成的代碼能干什么?

        • 直接C結(jié)構(gòu)體通訊交換 : 在特定平臺(tái)之間直接把C結(jié)構(gòu)體變量通過TCP扔給對(duì)方是一個(gè)很誘人的想法,阻礙我們的主要是整型字段的字節(jié)序問題,手工編碼是一件冗余的事情,DirectStruct可以幫助你自動(dòng)化這一過程。解決了字節(jié)序問題后就可以直接交換報(bào)文,避免了通訊發(fā)送前的打包和通訊接收后的解包,所以速度非常快,是某些追求極端性能的場景中的首選報(bào)文格式。
        • 結(jié)構(gòu)體序列化/反序列化 : 使用DirectStruct自動(dòng)生成的序列化/反序列化函數(shù),可以將C結(jié)構(gòu)體打包成二進(jìn)制報(bào)文或XML報(bào)文或JSON報(bào)文等,以及反向解包,是的,打包解包函數(shù)自動(dòng)生成,省卻了你不少麻煩吧。二進(jìn)制報(bào)文如果啟用了壓縮選項(xiàng),壓縮后的二進(jìn)制數(shù)據(jù)塊大幅縮小,更便于通訊高效交換。
        • 基于嵌入式SQL的數(shù)據(jù)庫映射接口的代碼自動(dòng)化生成
        • 快速打印結(jié)構(gòu)體內(nèi)所有字段值 : 對(duì)于一個(gè)大結(jié)構(gòu),編寫他的打印所有字段值的函數(shù)是一件很無聊的事情,你可以用DirectStruct幫助你自動(dòng)生成日志函數(shù),輸出到屏幕,或你自己的日志流中。

        為什么使用DirectStruct?

        • 靈活的報(bào)文定義語法 : 命令行工具dsc讀入定義文件,生成自動(dòng)化代碼,支持子結(jié)構(gòu)嵌套、子結(jié)構(gòu)數(shù)組、定義文件包含等靈活配置方式。
        • 跨平臺(tái):DirectStruct支持WINDOWS、Linux、AIX等主流操作系統(tǒng),尤其是多平臺(tái)中不同的表達(dá)方法,如64位整型,相同的IDL定義文件將生成不同平臺(tái)的標(biāo)準(zhǔn)。

        性能壓測

        壓測結(jié)論:

        • DirectStruct序列化(帶壓縮)后的報(bào)文大小66字節(jié),而Google Protocol Buffer為72字節(jié),DirectStruct在序列化和壓縮報(bào)文大小上險(xiǎn)勝。
        • DirectStruct反復(fù)序列化/反序列化(帶壓縮)1000萬次總耗時(shí)1.080s,而Google Protocol Buffer總耗時(shí)4.248s,DirectStruct在序列化性能上完勝。
        • DirectStruct編譯客戶應(yīng)用代碼時(shí)不需要額外的頭文件和庫文件,只需要工具dsc生成的IDL_AllTypes2.dsc.c、IDL_AllTypes2.dsc.h即可,而Google Protocol Buffer不僅需要PressProtobuf.pb.cc、PressProtobuf.pb.h,還需要/usr/local/include/google/protobuf下的一大堆頭文件以及/usr/local/lib/libprotobuf.a(9MB),還依賴于-lpthread,編譯環(huán)境復(fù)雜。
        瀏覽 23
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日韩欧美成人在线 | www.男人天堂.com | 青娱乐在线视频播放 | 日本高清不卡在线视频 | jzzijzzij日本成熟丰满 | 女人被爽到呻吟喘息 | 污网站在线播放 | 亚洲视频一区 | 性生活直播间 | 美女骚穴 |