Chinaunix首页 | 论坛 | 博客
  • 博客访问: 776326
  • 博文数量: 217
  • 博客积分: 2401
  • 博客等级: 大尉
  • 技术积分: 2030
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-16 06:58
个人简介

怎么介绍?

文章分类

全部博文(217)

文章存档

2023年(2)

2022年(3)

2021年(28)

2020年(12)

2019年(5)

2018年(5)

2017年(5)

2016年(3)

2015年(6)

2014年(12)

2013年(16)

2012年(9)

2011年(6)

2010年(15)

2009年(30)

2008年(59)

我的朋友

分类: C/C++

2013-07-24 23:46:06

是,Facebook于2012年6月初开源的一个基于C++11的C++组件库,提供了类似Boost库和std库的功能,包括散列、字符串、向量、内存分配、位处理等,以满足大规模高性能的需求,对Boost和std进行很好的补充和增强。

Folly的主要作者为C++大N人Andrei Alexandrescu。Folly主要进行了速度上的提高、内存优化,以及数据结构类型的丰富。Folly由分布在61个头文件(还有20个cpp实现文件),40多个组件构成,涉及内存管理(Arena等)、高性能的数据结构(string和vector等)、实用数据结构(延时队列)、线程相关的优化(线程本地内存、旋转锁)等。

Folly在github的地址,如下: 

folly库安装及测试

1、安装folly库

由于folly是c++11的库,需要编译器支持相关功能特性,否则将无法编译通过(目前很多编译器都不支持c++11,所以folly不具备跨平台的通用性)。g++版本序满足>= 4.6.0才可以满足编译要求。具体的安装流程,如下:

特殊说明:

(1)、以下部署使用的是作者fork的folly库分支。主要变更,如下:

- 增加了 autogen.sh 文件,方便生成各Makefile文件;
- 修正了 folly/test/Makefile.am 中存在的问题(会造成 make check 失败);
- 提示:可以克隆原始的库,然后根据作者的fork分支进行相应的修改。 

(2)、安装时,需要先安装gflags库,然后安装google-glog库

- 如果安装顺序反了,执行 make check 时 VLOG 会报错;
- 需要使用最新的版本,否则可能会出现API版本不兼容问题。 作者使用yum安装gflags和google-glog时,就出现此问题。 
  1. #安装依赖工具
  2. sudo yum install gcc gcc-c++ autoconf autoconf-archive automake libtool
  3. sudo yum install boost-devel scons
  4.  
  5. #创建本地操作目录
  6. mkdir -p ~/folly
  7. cd ~/folly
  8.  
  9. #安装google的gflags库
  10. svn checkout http://gflags.googlecode.com/svn/trunk/ gflags
  11. cd gflags
  12. ./configure
  13. make
  14. sudo make install
  15.  
  16. #安装google-glog库
  17. cd ..
  18. svn checkout http://google-glog.googlecode.com/svn/trunk/ google-glog
  19. cd google-glog
  20. ./configure
  21. make
  22. sudo make install
  23.  
  24. #克隆folly库
  25. cd ..
  26. git clone git://github.com/guiquanz/folly.git folly
  27.  
  28. #克隆并安装double-conversion库
  29. git clone https://code.google.com/p/double-conversion/ double-conversion
  30. cd double-conversion
  31. cp ../folly/folly/SConstruct.double-conversion .
  32. scons -f SConstruct.double-conversion
  33.  
  34. #部署googletest库
  35. cd ../folly/folly/test
  36. wget http://googletest.googlecode.com/files/gtest-1.6.0.zip
  37. unzip gtest-1.6.0.zip
  38.  
  39. #编译及安装folly
  40. cd ..
  41. sh autogen.sh
  42. LDFLAGS=-L../../double-conversion CPPFLAGS=-I../../double-conversion/src ./configure
  43. make
  44. sudo make install
  45.  

2、执行folly回归测试

安装好folly库之后,可以通过以下方式执行其回归测试:

  1. cd ~/folly/folly/folly
  2. make check

3、自己动手,写个测试程序

现在我们可以动过手写一个程序,简单测试一下:

(1)、编写测试程序

  1. mkdir -p ~/folly/folly/examples
  2. cd ~/folly/folly/examples
  1. cat <<EOF > fbstring_test.cc
  2. #include
  3. #include
  4. #include
  5.  
  6. using namespace folly;
  7. using namespace std;
  8.  
  9. int
  10. main(void)
  11. {
  12. fbstring str("Hello ");
  13. toAppend("Facebook Folly fbstring.", &str);
  14.  
  15. cout << str << endl;
  16.  
  17. return 0;
  18. }
  19. EOF
  1. cat <<EOF > Makefile
  2. # Makefile for Fedora platform
  3. # Modify it, if needed
  4.  
  5. DCPIC_BASE_DIR=../../double-conversion
  6. LIBDCPIC_DIR= $(DCPIC_BASE_DIR)
  7. LIBDCPIC_INCS= $(DCPIC_BASE_DIR)/src
  8.  
  9. CXX= g++
  10. CXXFLAGS= -std=c++11 -O2 -I. -I$(LIBDCPIC_INCS)
  11. SYSLIB= -L$(LIBDCPIC_DIR)
  12.  
  13.  
  14. CXX_FILES= \
  15. fbstring_test.cc
  16.  
  17. O_FILES= $(CXX_FILES:.cc=.o)
  18.  
  19.  
  20. TESTS= \
  21. fbstring_test
  22.  
  23.  
  24. all: $(TESTS)
  25.  
  26. test: all
  27. for t in $(TESTS); do echo "**** Runing $$t"; ./$$t || exit 1; done
  28.  
  29.  
  30. fbstring_test: fbstring_test.o
  31. $(CXX) -o $@ $< $(SYSLIB)
  32.  
  33.  
  34. %.o: %.cc
  35. $(CXX) -c -o $@ $(CXXFLAGS) $<
  36.  
  37.  
  38. .PHONY: clean test
  39.  
  40. clean:
  41. rm -f $(TESTS) *.o *~
  42.  
  43. EOF

(2)、编译、执行程序

  1. make test
  2.  
  3. 命令输出,如下:
  4. g++ -c -o fbstring_test.o -std=c++11 -O2 -I. -I../../double-conversion/src fbstring_test.cc
  5. g++ -o fbstring_test fbstring_test.o -L../../double-conversion
  6. for t in fbstring_test; do echo "**** Runing $t"; ./$t || exit 1; done
  7. **** Runing fbstring_test
  8. Hello Facebook Folly fbstring.
阅读(8422) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~