青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

msgpack[C++]使用筆記 和 msgpack/cPickle性能對比

轉(zhuǎn)載自:http://blog.csdn.net/xiarendeniao/article/details/6801338

python版本msgpack安裝:

wget http://pypi.python.org/packages/source/m/msgpack-python/msgpack-python-0.1.9.tar.gz

python2.x setup.py install --prefix=/usr/local/similarlib/


python版本的msgpack灰常好用,速度上比python內(nèi)置的pickle和cpickle都要快一些,C++版本的使用比較麻煩,下面是本人學(xué)習(xí)時(shí)的一個(gè)demo,解析python-msgpack dump的一個(gè)復(fù)雜字典

  1. #include <msgpack.hpp>  
  2.   
  3. #include <fstream>  
  4. #include <iostream>  
  5. using namespace std;  
  6.   
  7. template <class T>  
  8. void msgunpack(const char* binary_file, T& t, char* buff, uint32_t max){  
  9.     msgpack::unpacked msg;  
  10.     ifstream tf_file(binary_file,ios::in|ios::binary|ios::ate);  
  11.     uint32_t size = tf_file.tellg();  
  12.     tf_file.seekg(0, ios::beg);  
  13.     tf_file.read(buff, size);  
  14.     tf_file.close();  
  15.     msgpack::unpack(&msg, buff, size);  
  16.     msg.get().convert(&t);  
  17. }  
  18.   
  19.   
  20. typedef map<uint32_t, uint32_t> WordsMap;  
  21. typedef map<uint32_t, WordsMap> FieldsMap;  
  22. typedef map<uint64_t, FieldsMap> DocsMap;  
  23.   
  24. int main(int argc, char** argv)  
  25. {  
  26.     uint32_t MAX_BUFF = 1024*1024*100; //100MB  
  27.     char* BUFF = new char[MAX_BUFF];  
  28.   
  29.     DocsMap docsMap;  
  30.     msgpack::unpacked msg;  
  31.     msgunpack("/data/wikidoc/tf_dict_for_nodes/1-1000", docsMap, BUFF, MAX_BUFF);  
  32.     //        msg.get().convert(&docsMap);  
  33.     cout << docsMap.size() << endl;  
  34.         delete[] BUFF;  
  35. }  



參考: http://wiki.msgpack.org/pages/viewpage.action?pageId=1081387#QuickStartforC%2B%2B-ImplementationStatus


下面是本人自己封裝的一個(gè)msgpack接口頭文件mymsgpack.h

  1.  #ifndef MY_MSGPACK_H  
  2.   
  3. #ifndef MY_MSGPACK_H  
  4. #define MY_MSGPACK_H  
  5. #include <fstream>  
  6. #include <msgpack.hpp>  
  7. using namespace std;  
  8.   
  9. template <class T>  
  10. void load_from_file(const char* binary_file, T& t) {  
  11.         ifstream binaryFstream(binary_file,ios::in|ios::binary|ios::ate);  
  12.         uint32_t size = binaryFstream.tellg();  
  13.         char* buff = new char[size];  
  14.         binaryFstream.seekg(0, ios::beg);  
  15.         binaryFstream.read(buff, size);  
  16.         binaryFstream.close();  
  17.         msgpack::unpacked msg;  
  18.         msgpack::unpack(&msg, buff, size);  
  19.         msg.get().convert(&t);  
  20.         delete[] buff;  
  21. }  
  22.   
  23. template <class T>  
  24. void load_from_str(const char* binary_str, int len, T& t) {  
  25.         msgpack::unpacked msg;  
  26.         msgpack::unpack(&msg, binary_str, len);  
  27.         msg.get().convert(&t);  
  28. }  
  29.   
  30. template <class T>  
  31. void dump_to_file(T& t, const char* dump_file) {  
  32.     msgpack::sbuffer sbuf;  
  33.     msgpack::pack(sbuf, t);  
  34.     ofstream dumpFstream(dump_file, ios::out|ios::binary|ios::trunc);  
  35.     dumpFstream.write(sbuf.data(), sbuf.size());  
  36.     dumpFstream.close();  
  37. }  
  38.   
  39. template <class T>  
  40. void dump_to_str(T& t, char** dump_str, int& len) { //外部釋放*dump_str  
  41.     msgpack::sbuffer sbuf;  
  42.     msgpack::pack(sbuf, t);  
  43.     len = sbuf.size();  
  44.     *dump_str = (char*)malloc(sbuf.size());  
  45.     memcpy(*dump_str, sbuf.data(), sbuf.size());  
  46. }  
  47.   
  48. #endif  


 


msgpack編譯通過,鏈接不上的問題 undefined reference to `__sync_sub_and_fetch_4'

在x84_64機(jī)器上正常,在32bit機(jī)器上出現(xiàn)上述問題

[plain] view plaincopy
  1. [xudongsong@BigServerU-4 msgpack-0.5.7]$ cat /etc/issue  
  2. CentOS release 5.4 (Final)  
  3. Kernel \r on an \m  
  4.   
  5. [xudongsong@BigServerU-4 msgpack-0.5.7]$ file /sbin/init  
  6. /sbin/init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped  

./configure不報(bào)錯(cuò),但是查看config.log顯示有錯(cuò)誤,程序鏈接msgpack的庫時(shí)也報(bào)錯(cuò)

原因:gcc不能識別CPU體系,需要手動(dòng)指明

[plain] view plaincopy
  1. [xudongsong@BigServerU-4 msgpack-0.5.7]$ CFLAGS="-march=pentium -mtune=pentium" ./configure --prefix=/home/xudongsong/msgpack_static --enable-static=yes --enable-shared=no  

make, make install

[xudongsong@BigServerU-4 jobs]$ g++ job_calc_weight.cpp -o job_calc_weight -I/home/xudongsong/msgpack_static/include/ -L/home/xudongsong/msgpack_static/lib/ -lmsgpack

通過!

 


 

下面是msgpack和cPickle進(jìn)行性能pk的demo程序(不比較pickle,是因?yàn)樗萩Pickle更慢,《Python cook book》里面有說明):

[python] view plaincopy
  1. mport sys,time,msgpack,pickle,cPickle,random  
  2.   
  3. test_list = []  
  4. i = 0  
  5. while i<100000:  
  6.     test_list = random.randrange(1,100000)  
  7.     i += 1  
  8.   
  9. print "common len(serialize) = %s"%len(cPickle.dumps(test_list,0))  
  10. print "compress len(serialize) = %s"%len(cPickle.dumps(test_list,1))  
  11.   
  12. #------------------------------------------------------------------------  
  13. results = {}  
  14. time_start = time.time()  
  15. for i in range(1,1000000):  
  16.         results[i] = cPickle.dumps(test_list,1)  
  17. time_mid_1 = time.time()  
  18. print "cPickle dumps eats %s s"%str(time_mid_1-time_start)  
  19.   
  20. for i in range(1,1000000):  
  21.     cPickle.loads(results[i])  
  22. time_mid_2 = time.time()  
  23. print "cPickle loads eats %s s"%str(time_mid_2-time_mid_1)  
  24.   
  25. #------------------------------------------------------------------------  
  26. results = {}  
  27. time_start = time.time()  
  28. for i in range(1,1000000):  
  29.     results[i] = msgpack.dumps(test_list)  
  30. time_mid_1 = time.time()  
  31. print "msgpack pack eats %s s"%str(time_mid_1-time_start)  
  32.   
  33. for i in range(1,1000000):  
  34.     msgpack.loads(results[i])  
  35. time_mid_2 = time.time()  
  36. print "msgpack unpack eats %s s"%str(time_mid_2-time_mid_1)  

 

posted on 2014-05-29 09:15 楊粼波 閱讀(1840) 評論(0)  編輯 收藏 引用 所屬分類: C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲大胆美女视频| 亚洲精品国偷自产在线99热| 亚洲无线视频| 亚洲另类在线一区| 国产精品久久久久高潮| 亚洲欧美综合| 午夜精品一区二区三区在线视| 国产日韩欧美综合| 免费观看欧美在线视频的网站| 美女视频网站黄色亚洲| 日韩一区二区精品视频| 99国产精品99久久久久久粉嫩| 国产精品爽爽爽| 久久人人97超碰人人澡爱香蕉| 老司机一区二区三区| 一区二区三区精品| 午夜精品久久久久久99热软件| 精品成人乱色一区二区| 亚洲美女精品久久| 国产丝袜一区二区| 欧美激情精品久久久久久免费印度 | 中国亚洲黄色| 亚洲一区国产一区| 伊人春色精品| aa国产精品| 一区一区视频| 一道本一区二区| 黄色在线一区| 亚洲私人影院| 亚洲三级性片| 欧美影院成人| 亚洲视频免费在线| 久久久久久久久久久久久女国产乱| 中日韩美女免费视频网站在线观看| 欧美在线播放一区二区| 一区二区三区毛片| 久久天堂av综合合色| 欧美一区二区三区久久精品| 欧美激情第8页| 玖玖综合伊人| 国产丝袜一区二区三区| 一区二区三区蜜桃网| 亚洲精品日产精品乱码不卡| 久久久99国产精品免费| 欧美一级成年大片在线观看| 欧美日韩一二区| 欧美国产日韩精品| 樱桃成人精品视频在线播放| 亚洲欧美卡通另类91av| 亚洲综合丁香| 国产精品高潮呻吟久久av黑人| 蜜臀99久久精品久久久久久软件| 欧美体内she精视频| 亚洲精品久久久久久久久久久久久| 国产综合一区二区| 亚洲欧美色婷婷| 欧美一级二级三级蜜桃| 国产精品青草综合久久久久99| 99re视频这里只有精品| 99精品视频免费观看视频| 欧美高清在线观看| 欧美大片在线观看| 亚洲国产欧美日韩| 免费久久精品视频| 亚洲国产精品久久久久婷婷老年| 亚洲高清久久网| 欧美va天堂| 91久久精品日日躁夜夜躁国产| 亚洲久久成人| 欧美久久久久久久| 99人久久精品视频最新地址| 亚洲视频一二| 国产精品日韩久久久| 亚洲欧美日韩国产一区二区| 欧美在线1区| 黄色精品免费| 欧美成人性网| 一区二区国产日产| 久久成人av少妇免费| 尤妮丝一区二区裸体视频| 久久综合给合久久狠狠色| 亚洲黄色成人| 亚洲性图久久| 国产亚洲欧洲997久久综合| 久久婷婷国产麻豆91天堂| 亚洲欧洲综合| 午夜精品久久| 在线精品高清中文字幕| 欧美日韩国产色站一区二区三区| 亚洲私人影院| 欧美www在线| 亚洲四色影视在线观看| 国产亚洲精久久久久久| 欧美国产视频在线观看| 亚洲一区二区av电影| 欧美成人精品一区二区| 亚洲一区二区三区高清| 悠悠资源网亚洲青| 欧美日韩专区| 老司机免费视频一区二区三区| 日韩亚洲欧美中文三级| 久久精品夜夜夜夜久久| 99re66热这里只有精品3直播| 国产欧美一区二区三区视频| 欧美成人一区二区| 午夜精品久久久久久久男人的天堂 | 91久久午夜| 国产精品亚洲网站| 欧美国产日韩精品| 久久国产精品72免费观看| 99在线|亚洲一区二区| 免费日韩成人| 欧美一区成人| 一区二区三区蜜桃网| 亚洲国产精品一区二区尤物区| 欧美午夜在线视频| 欧美激情综合五月色丁香小说| 久久久综合网| 欧美日韩国产综合新一区| 亚洲免费网址| 日韩天天综合| 亚洲成色999久久网站| 欧美一区午夜精品| 亚洲亚洲精品在线观看| 夜夜嗨一区二区三区| 亚洲国产精品精华液2区45| 国产婷婷色综合av蜜臀av | 亚洲午夜av电影| 亚洲人成网在线播放| 欧美激情一区二区三区在线视频| 久久午夜精品一区二区| 欧美在线一级va免费观看| 亚洲婷婷在线| 亚洲午夜精品久久| av成人免费观看| 欧美一区二区黄色| 久久久视频精品| 一区二区三区四区国产| 亚洲自拍偷拍视频| 久久成人免费日本黄色| 99亚洲伊人久久精品影院红桃| 亚洲第一在线| 亚洲大胆人体在线| 亚洲东热激情| 亚洲日韩视频| 99国产精品久久久| 一区二区激情小说| 亚洲在线一区| 性感少妇一区| 久久精品视频一| 另类尿喷潮videofree| 欧美成人69av| 欧美精品一区二区三区很污很色的| 欧美激情第五页| 欧美视频亚洲视频| 国产毛片一区| 伊人久久av导航| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲福利小视频| 亚洲国产高清高潮精品美女| 欧美在线二区| 久久婷婷国产综合尤物精品| 美国十次成人| 欧美日韩国产精品成人| 国产精品video| 国产深夜精品| 亚洲国产另类久久久精品极度| 亚洲精品一区二区在线观看| 亚洲一区二区久久| 久久久久在线| 亚洲欧洲中文日韩久久av乱码| 亚洲天堂偷拍| 狼人社综合社区| 欧美色另类天堂2015| 国产自产女人91一区在线观看| 亚洲日本视频| 午夜精品一区二区三区在线| 免费成人av在线| aⅴ色国产欧美| 久久久久久91香蕉国产| 欧美日韩一区二区三区免费看| 国产日韩欧美一区二区三区在线观看 | 国产精品久久久久久久app| 国内成人精品2018免费看| 一本色道久久综合狠狠躁篇的优点| 午夜精品国产更新| 91久久国产自产拍夜夜嗨| 另类成人小视频在线| 一本大道久久精品懂色aⅴ| 亚洲精品小视频| 久久9热精品视频| 亚洲国产精品嫩草影院| 亚洲欧美在线另类| 欧美另类视频| 在线观看一区二区精品视频| 性色av一区二区三区在线观看 | 欧美激情一区二区三区在线| 午夜精彩视频在线观看不卡| 欧美日韩精品久久久| 亚洲第一毛片|