包含标签 boost 的文章

boost::flat_map性能测试

文章转自:boost::flat_map and its performance compared to map and unordered_map have run a benchmark on different data structures very recently at my company so I feel I need to drop a word. It is very complicated to benchmark something correctly. Benchmarking On the web we rarely find (if ever) a well engineered benchmark. Until today I only found benchmarks that were done the journalist way (pretty quickly and sweeping dozens of variables under the carpet). 1) You need to consider about cache warming Most people running benchmarks are afraid of timer discrepancy, therefore they run their stuff thousands of times and take the whole time, they just are careful to take the same thousand of times for every operation, and then consider……

阅读全文

使用boost进行CRC64计算

因接入平台,平台提供的是一个字符串的key作为用户标识,而且要用到分布式,所以没法用以前的数据库递增来做用户ID,于是用CRC64来生成uint64_t来作为用户ID,做法也比较简单。如下: std::map<size_t, size_t> xLongMap; char szTemp[128] = {0}; boost::crc_optimal<64, 0x04C11DB7, 0, 0, false, false> crc; for (uint32_t i = 0; i < 1000000000; ++i) { memset(szTemp, 0, sizeof(szTemp)); sprintf_s(szTemp, "%d%s%s%s", i, "1a2b3c", "4d5e6f", "7g8h9i"); crc.process_bytes(szTemp, strlen(szTemp)); size_t nPos = crc.checksum(); crc.reset(); if (!xLongMap.insert(std::map<size_t, size_t>::value_type(nPos, 0)).second) {……

阅读全文

boost相关小知识(长期顶置更新)

2.boost throw_exception unresolved 在项目中(windows VS环境)增加了一些boost库,导致一个链接报错, throw_exception unresolved (link error) 可以修改vs的工程属性,/EH 和 /GX属性 修改方法见: http://msdn.microsoft.com/zh-cn/library/1deeycx5.aspx http://msdn.microsoft.com/zh-cn/library/d42ws1f6(v=vs.80).aspx 1.boost::noncopyable nonycopyable是一个可以通过继承来防止你自己的类拷贝构造或者拷贝赋值的类。有些复杂对象,并没有明确的拷贝构造/拷贝赋值函……

阅读全文

JSON数据格式

看到boost::property_tree类库的时候,发现它可以解析XML、JSON、INI,INFO格式的文件,XML和INI已经使用过,并且用别的库读取过了,而JSON这个看着面熟的格式,完全没有用过,只是知道在web应用里经常用到。所以今天我们就来看看JSON到底是个什么……

阅读全文

Ubuntu下如何安装boost?

最近有开始折腾Linux了,没办法,太多的东西都是在Linux下很高效并且不提供VS的工程文件,所以还是学学Linux吧,免得以后被人说做服务器竟然不懂Linux。 这篇文章的前提是系统是Ubuntu12.04LTS,系统完全更新过,并且一系列编译工具都已经安装过了,如果你还不清楚……

阅读全文

[网络开发]boost::asio简介

boost前几天发布了1.51版本,更新内容请查看:http://www.boost.org/users/history/version_1_51_0.html,asio修改如下内容: Asio: Fixed an incompatibility between ip::tcp::iostream and C++11 (#7162). Decorated GCC attribute names with underscores to prevent interaction with user-defined macros (#6415). Added missing #include <cctype>, needed for some versions of MinGW. Changed to use gcc's atomic builtins on ARM CPUs, when available (#7140). Changed strand destruction to……

阅读全文

Windows下如何编译使用boost?

最近在看boost::asio的东西,所以必须要用到boost库,下载了一个,所以与大家分享下boost库的编译方法。

本方法应该适用于boost的任何版本,应该适用于任何C++编译器(VC6.0可能对某些库不支持,因为模板的原因),因为Linux没怎么用,所以只是分享下windows上的编译方法。

1.下载boost

从boost官网( http://www.boost.org )上下载最新的boost版本,现在最新是1.49版本,解压到自定义目录(为了后面好说明,这里假设为boost_1_49)

2.编译安装boost

boost_1_49目录下会有一个bootstrap.bat批处理,可以直接点击它,会在 boost_1_49\tools\build\v2 文件夹下生成两个exe,b2.exe;bjam.exe,拷贝这两个文件到boost_1_49目录下。从cmd命令进入到boost_1_49路径下,如果你不知道如何编译,可以输入–help查看命令行帮助。

输入如下命令:

b2 toolset=msvc-10.0 --layout=versioned architecture=x86 address-model=64
link=static variant=debug,release threading=multi runtime-link=static 
--without-python --without-mpi --without-wave --without-graph 
--without-math --without-serialization stage

使用不同的命令对你使用boost也会产生很大的影响,因为CPU速度和硬盘现在都已经不是大问题了,所以本例中选择了除了不必要库的完全编译,当然了,你时间够,硬盘够,可以完全编译

b2 --toolset=msvc-10 --build-type=complete

解释完以上的命令后,再说完全编译的后果。

1.toolset:表示编译器工具,我安装的是VS2010,所以是msvc-10(如果你是VS2005,可以使用msvc-8.0 VS2008是msvc-9.0)

2.architecture:表示架构,也就是你的CPU架构,x86,x64,因为我安装的是win7 32位,所以使用了x86的架构

3.instruction-set:表示指令集,依然是8086指令集

4.address-model:表示地址长度为32位

5.link:表示生成动态/静态链接库,动态链接库是shared,静态链接库是static,一般都会编译成静态库,因为给出程序的时候打包boost的库会非常庞大

6.variant:表示生成的Debug或者release版本,一般情况下会两种版本都会编译出来的

7.threading:表示单/多线程编译,一般我们的程序都会用到多线程,所以选择了multi

8.runtime-link:表示动态/静态链接C/C++运行时库(C/C++ Runtime),我们选择了动态链接

9.without/with:表示不需要编译/需要编译哪些库,一些自己不用的库可以无需编译

10.stage/install:stage表示只生成库文件(DLL和Lib),install还会生成包含头文件的include目录,推荐使用stage,因为boost_1_49\boost中就是boost库完整的头文件,所以无需再拷贝一份出来。编译出来的库会放在stage文件夹中

这样一份完整的boost库就生成了,剩下就是直接使用到项目中了。

上面的编译指令可以存成一个批处理,这样进入到boost_1_49目录后,只需要执行批处理就可以了,更方便。

(现在看到为什么不推荐使用完全编译了吧,因为完全编译会编译出各种组合的所有情况,需要占用更多的空间和时间,所以建议各位朋友还是放弃了吧)

使用的时候可以直接包含到项目中,然后在对应的文件中包含相应的头文件即可,例如

#include "boost/asio.hpp"
……

阅读全文

最近文章

分类

标签

0x标准 2003 2011,总结 2013 2014 2015 2d 404 AHCI API AWS Aion Algorithm ArkGame ArkGameFrame Assert Big data BitStreams C++ C++标准 C 11 C/C++ CDT CRC64 CSP CSS Connect CppCheck CryptoAPI Decarator Dll DrawItem Dynamic Lib ECS Fedora Flickr GCC GET GUI GUID HTTP I/O IDE IOCP Intel JQuery JQueryUI JSON K/V Kubernetes LNMP Lib Linux Lua Luabind MFC Malloc Microsoft MsgPack MySQL NoSQL PM POD POST Partten RakNet SIGSEGV Scala Server SkyDrive Socket Spark Sprite Startup Static Lib SystemAddress TBB Threading Building Blocks TortoiseGit TortoiseSVN UI URL UUID Ubuntu Unity Unix VLD VPS VS2010 WebSocket Win7 Win8 Xfce ZMQ ZeroMQ _CrtDumpMemoryLeaks asio auto boost breakpad cloud codeblocks consistent hashing coroutine cx-freeze delete demo dlclose docker easyloggingpp eclipse ensure epoll feed feedburner feedsky flat_map git glog goagent google headonly httpd iOS7 iSpriter ibus jsoncpp leveldb libevent links linode log log库 lxde msysgit mutex mysqlpp nana noncopyable php property_tree protobuf pthread py2exe python recieve packet redis runtime sae sbt selinux share_ptr spinlock spirit svn tcp undefined reference vim vmware web windows live wordpress ws xml xshell 一致性哈希 七宗罪 下载 主机 主题 习惯 云计算 互斥锁 交流 产品 代码 代码分享 价值 优化 使用 例子 保钓事件 修改 元旦 全屏 公司 共享 内存 内存泄露 内容 写作 函数指针 分享 分布式 分析 创业 删除 制度 加密 加班 加速 十一 升级 半自动锁 协程 协议 单词 博客 原则 又拍网 反射 反序列化 发展 可视化 右值引用 命令 命令行 命名规则 唯一标示码 商业 团队 团队建设 国庆 国战 图床 图形用户界面 图片 地震 坚持 垃圾回收器 域名 备案 多核 多线程 多语言 多路复用 天龙八部 字体 学习 安装编译 实战 实现原理 容器 屌丝 工作 工具条 左值引用 年会 并发 序列化 开发环境 开源 异常 异步 异步I/O 引用计数 快速 思路 性能 总结 感悟 感触 扁平化 手游 批处理 技巧 技术 接口 提高订阅量 搭建 效率 教程 数据库 数据类型 数据结构 文人相轻 文件 文件格式 文档 文章 新年 新版本 新特性 新誉 方法 旅行 时间 智慧 智能指针 服务 服务器 服务器框架 架构 桂林 检测 模拟 模拟器 武神 水浒无双 求职 沟通 测试 消息内核 游戏 游戏开发 游戏行业 游戏设计 游戏资源 源代码 源码 漫画 版本控制 理性爱国 生活 电影 疑问 百度分享 百度喜欢 目录 目标 硬盘 祈福 神秘的程序员 程序员 程序猿 端游 简单应用 算法 管理 类库 精灵图 系统 线程锁 细心 经验 结束语 缓存 编程 编程规范 编程语言 编译 编译后事件 编译工具 网游 网游服务器 网站黑白 网络,C++ 网络库 网络开发 网络引擎 网络编程 网络设置 翻墙 翻译 翻译文档 职业 职业规划 职场 自动 自动化 自动类型推演 自助程序 自启动 自定义异常 自旋锁 自然风景 致歉 英语 蓝屏 薪资 虚拟化 行业 装饰器 规则 解密 解析JSON 解答 订阅 记忆 设计 评论 识别 语法 语言 请求 读书 调试 谍影重重5 责任 资本 趣味代码 跨平台 转义字符 软件 软件卸载 软件安装 软件设计 输入法 近况 进阶 连接 选择 道歉 避免错误 配色 链接库 问题 雅安 静态断言 静态编译 非编程 面试 页游 项目 项目经理 高估 高并发 高性能 高效

友情链接

其它