免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8049 | 回复: 11
打印 上一主题 下一主题

[C++] 一般公司开发用什么c++函数库 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-21 17:25 |只看该作者 |倒序浏览
做游戏或通信相关,c++一般用什么函数库

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2013-08-21 18:53 |只看该作者
boost最靠谱, 其他都忽略吧.

论坛徽章:
0
3 [报告]
发表于 2013-08-21 22:25 |只看该作者
Germin 发表于 2013-08-21 17:25
做游戏或通信相关,c++一般用什么函数库


有些使用ACE,不过不推荐,有些使用ICE,不过基础类库推荐使用boost。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2013-08-22 12:52 |只看该作者
大些的公司都有长年积累下来的库和工具的。 其他的就是各种开源库随便用。。

论坛徽章:
0
5 [报告]
发表于 2013-08-22 15:44 |只看该作者
准确地说,大多都是c库,c++库用的比较少。
比如网络用libevent,libev,libuv
http相关用libcurl
正则用libpcre
图像用freeimage,imagemagick,opencv
音视频用ffmpeg
内存库用tcmalloc或Zmalloc
xml用libxml2
json用jsonc
还有openssl什么的

不过,大多数框架都是自己写的,里面需要什么时再用相关的开源库
boost是个很不错的库,很适合学习,不过很少直接拿来用到自己项目上,最多是参考或使用其中一部分,比如boost.python。

论坛徽章:
7
天蝎座
日期:2013-09-28 10:45:42双子座
日期:2013-10-16 16:27:09射手座
日期:2013-10-23 10:21:32处女座
日期:2014-09-17 16:44:332015年亚洲杯之巴林
日期:2015-04-09 17:28:01冥斗士
日期:2015-11-26 16:19:0015-16赛季CBA联赛之山东
日期:2018-03-02 23:59:31
6 [报告]
发表于 2013-08-22 17:38 |只看该作者
牛,mark。

sxcong 发表于 2013-08-22 15:44
准确地说,大多都是c库,c++库用的比较少。
比如网络用libevent,libev,libuv
http相关用libcurl

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2013-08-22 21:01 |只看该作者
一般把各种库成功的编译过去,就要死要活的了

论坛徽章:
17
处女座
日期:2013-08-27 09:59:352015亚冠之柏太阳神
日期:2015-07-30 10:16:402015亚冠之萨济拖拉机
日期:2015-07-29 18:58:182015年亚洲杯之巴勒斯坦
日期:2015-03-06 17:38:17摩羯座
日期:2014-12-11 21:31:34戌狗
日期:2014-07-20 20:57:32子鼠
日期:2014-05-15 16:25:21亥猪
日期:2014-02-11 17:32:05丑牛
日期:2014-01-20 15:45:51丑牛
日期:2013-10-22 11:12:56双子座
日期:2013-10-18 16:28:17白羊座
日期:2013-10-18 10:50:45
8 [报告]
发表于 2013-08-22 22:34 |只看该作者
回复 1# Germin


    大部分公司都是直接复用成功项目的代码,不管成功项目的代码有多么的不合理,改善的余地很小。C++项目 boost+stl可以满足绝大多数需求了,但国内C++程序员对stl和boost的掌握程度很成问题,最后国内公司的普遍现况是C++项目都在用着C的库(有的库的确没有C++版的,但更多的人其实理解和使用的就是C++里的C而不是C++,类型转换全用(),atoi等等,文件操作从来不用stream)。由于C++技术水平的问题很少有公司在这上面有称得上成功的积累,既使有牛人,由于项目历史负担、公司文化守成、不重视技术等问题这个积累总是很难完成。

真正的项目开发过程中需要各种各样的工具类和功能模块,能在这个大方向满足这个需求的只两个库,boost,poco。poco比boost的功能还要全面,但是代码风格很MFC化,质量也比不过boost。
通常项目需求量最大的基础库功能基本上是以下功能模的不同集合:正则表达式、多线程、IO、算法、容器、网络通信、日期时间、日志、配置文件处理(json,text,xml) ,而这些在stl+boost中都涵盖了。所以用好stl+boost是不需要那么多库的。

论坛徽章:
7
天蝎座
日期:2013-09-28 10:45:42双子座
日期:2013-10-16 16:27:09射手座
日期:2013-10-23 10:21:32处女座
日期:2014-09-17 16:44:332015年亚洲杯之巴林
日期:2015-04-09 17:28:01冥斗士
日期:2015-11-26 16:19:0015-16赛季CBA联赛之山东
日期:2018-03-02 23:59:31
9 [报告]
发表于 2013-08-23 10:27 |只看该作者
myworkstation 发表于 2013-08-22 22:34
回复 1# Germin


你好,请教下c++的文件操作使用stream,和c的fopen ,fprintf这类有什么区别,性能呢?

论坛徽章:
17
处女座
日期:2013-08-27 09:59:352015亚冠之柏太阳神
日期:2015-07-30 10:16:402015亚冠之萨济拖拉机
日期:2015-07-29 18:58:182015年亚洲杯之巴勒斯坦
日期:2015-03-06 17:38:17摩羯座
日期:2014-12-11 21:31:34戌狗
日期:2014-07-20 20:57:32子鼠
日期:2014-05-15 16:25:21亥猪
日期:2014-02-11 17:32:05丑牛
日期:2014-01-20 15:45:51丑牛
日期:2013-10-22 11:12:56双子座
日期:2013-10-18 16:28:17白羊座
日期:2013-10-18 10:50:45
10 [报告]
发表于 2013-08-23 10:43 |只看该作者
回复 9# cxytz01


    这个要去具体的测试,不同的编译器和库版本都会有性能差异。但从使用来讲无异stream是更方便的,适配性更强。以下是别人做一个测试,读取1G大小的2进制文件,使用不同的buffer size,性能有很大区别。
32k buffer reads
fstream.read: 23.343s
fread: 22.625s
64k buffer reads
fstream: 22.625s
fread: 58.594s
128k buffer reads
fstream.read: 21.565s
fread: 41.25s
256k buffer reads
fstream.read: 23.578s
fread: 41.188s


问题是的关健是为什么用C++,却一定要使用c style的代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP