成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

揭秘Facebook官方底層C++函數Folly

譯文
開發 后端
Facebook近日公布了其官方底層C++函數Folly,Folly(該縮略語表示Facebook開源代碼庫)其實是C++11組件庫,這些組件在設計時著眼于實用性和高效率。

【51CTO經典譯文】Folly與Boost、當然還有std等組件庫的關系是互為補充,而不是彼此競爭。實際上,只有當我們需要的東西既沒有,也無法滿足所需的性能要求時,我們才開始定義自己的組件。

性能問題貫穿著Folly的大部分,有時導致比較具有特質性的設計(比如PackedSyncPtr.h和SmallLocks.h)。整體上確保良好的性能是所有Folly的統一主題。

邏輯設計

Folly是一組相對獨立的組件的集合體,有些組件就是幾個符號這么簡單。內部依賴方面沒有限制,這意味著某個特定的folly模塊可以使用其他任何的folly組件。

所有符號都在頂層的命名空間folly中加以定義,當然除了宏。宏名稱是ALL_UPPERCASE。命名空間folly定義了其他的內部命名空間,比如internal或detail。用戶代碼應該不依賴那些命名空間中的符號。

物理設計

在頂層,Folly采用經典的“結巴”(stuttering)方案folly/folly,這也是Boost及其他組件庫所采用的。***個目錄充當庫的安裝根目錄(可能是以folly-1.0/這樣的形式);第二個目錄是添加文件時用來辨別組件庫,比如#include "folly/FBString.h"。

目錄結構是扁平的(模仿命名空間結構),也就是說我們沒有復雜的目錄層次結構(這個情況在將來的版本中可能會有變化)。子目錄experimental含有在folly里面使用的文件,可能用在Facebook端,但是被認為不夠穩定,無法在客戶端使用。你的代碼不該使用folly/experimental中的文件,以免你在更新Folly時,出現問題。

folly/folly/test子目錄包括了面向所有組件的單元測試,通常名為ComponentXyzTest.cpp,面向每個ComponentXyz.*。folly/folly/docs目錄含有說明文檔。

兼容性

目前,folly已在64位安裝版Fedora 17、Ubuntu 12.04和Debian wheezy的gcc 4.6上進行了測試。它不用改動,就可以在其他64位Linux平臺上運行。

組件

下面按字母順序介紹了一系列Folly組件,另外附有每個組件的簡短描述。

Arena.h,ThreadCachedArena.h

內存分配的簡單地方:多次內存分配同時被釋放。使用線程版本。

AtomicHashMap.h,AtomicHashArray.h

高性能的原子哈希圖,采用幾乎無鎖的操作。

Benchmark.h

用于代碼基準測試的小型框架。客戶端代碼注冊基準測試,可選情況下使用一個變量來規定基準測試的范圍(迭代和工作集大小等)。框架運行基準測試(受制于命令行標記),生成帶計時信息的格式化輸出。

Bits.h

各種位處理實用組件,針對速度而優化。

Bits.h

位變換函數,使用統一接口包裝ffsl(l)圖元。

ConcurrentSkipList.h

實現了用證實正確的可擴展并發跳躍表(Provably Correct Scalable Concurrent Skip List)描述的結構,這種跳躍表由Herlihy及其他人共同開發。

Conv.h

各種數據轉換例程(尤其是to和from字符串),針對速度和安全進行了優化。

DiscriminatedPtr.h

類似boost::variant,但完全局限于指針。使用指針中***位、未使用的16位作為鑒別器。所以sizeof(DiscriminatedPtr<int, string, Widget>) == sizeof(void*)。

dynamic.h

動態類型對象,創建時關注JSON對象。

Endian.h

Endian轉換圖元。

Escape.h

以C方式轉義字符串。

eventfd.h

針對eventfd系統調用的包裝器。

FBString.h

嵌入式實現std::string,進行了諸多優化。

FBVector.h

基本上嵌入式實現std::vector,進行了諸多優化。

Foreach.h

偽語句(作為宏語句來實現),用于迭代。

Format.h

Python式樣的格式化實用組件。

GroupVarint.h

針對32位值的Group Varint編碼。

Hash.h

各種流行的哈希函數實現。

Histogram.h

一個簡單的類,用于收集直方圖數據。

IntrusiveList.h

方便類型定義,用于使用boost::intrusive_list。

json.h

JSON序列化器和反序列化器。使用dynamic.h。

Likely.h

針對__builtin_expect的包裝器。

Malloc.h

內存分配助手,尤其是使用jemalloc時。

MapUtil.h

一種助手,用于查找聯合容器中的項目(比如std::map和std::unordered_map)。

PackedSyncPtr.h

一種高度專業化的數據結構,含有指針、1位旋轉鎖和15位整數,它們都在一個64位單詞中。

Preprocessor.h

不好但又必不可少的組件。

PrettyPrint.h

針對數字的美化打印組件,用于添加所用單元的后綴:字節(kb、MB等)、度量單位后綴(k、M和G等)以及時間(s、ms、us和ns等)。

ProducerConsumerQueue.h

無鎖單讀取器單寫入器隊列。

Random.h

只定義了一個函數:randomNumberSeed()。

Range.h

Boost式樣的范圍工具和StringPiece專門化。

RWSpinLock.h

快速而緊湊的讀取器/寫入器旋轉鎖。

ScopeGuard.h

老式ScopeGuard用語的C++11版本。

SmallLocks.h

非常小的旋轉鎖(1字節和1位)。

small_vector.h

一種向量,含有小緩沖器方面的優化和可選的嵌入式PicoSpinLock。

sorted_vector_types.h

類似std::map的集合體,但是作為排序向量來實現。

StlAllocator.h

標準模板庫(STL分配器),包裝簡單的分配/取消分配接口。

String.h

連接folly::fbstring和std::string的字符串實用組件。

Synchronized.h

高級同步庫。

System.h

解碼和errno實用組件。

ThreadCachedInt.h

使用線程緩存的高性能原子增量。

ThreadLocal.h

經過改進的線程本地存儲,用于存儲非平凡類型。

TimeoutQueue.h

按項目設定超時的隊列。

Traits.h

類型特性,補充了在標準的C++11頭<traits>中定義的那些類型特性。

Unicode.h

定義了codePointToUtf8函數。

【編輯推薦】

  1. Facebook發布HTML 5應用中心
  2. HTML 5平臺對于Facebook未來至關重要
  3. Facebook版《憤怒的小鳥》為何選用Flash
  4. 揭秘Google與Facebook開發之道
  5. 揭秘Facebook是如何開發軟件的
責任編輯:彭凡 來源: 51CTO
相關推薦

2012-06-05 09:39:16

Facebook

2012-06-27 14:04:22

folly

2021-06-11 10:53:40

Folly組件開發

2011-04-26 09:18:53

FacebookPHPmysql

2011-03-10 09:37:52

Facebook代碼

2010-01-22 14:53:21

2010-01-27 17:16:52

C++構造函數

2010-01-26 10:42:26

C++函數

2010-01-18 16:56:30

C++函數

2010-01-28 13:35:41

調用C++函數

2010-01-19 13:43:59

C++函數

2013-10-17 22:38:24

FacebookWindows 8.1

2025-06-24 08:05:00

函數重載編譯器編程

2011-06-17 16:09:04

freadfwrite

2010-01-19 14:28:41

C++ main()函

2010-01-21 11:23:58

C++函數調用

2010-02-01 11:22:09

C++虛函數

2022-07-18 15:32:37

C++虛函數表

2023-11-28 11:51:01

C++函數

2023-12-13 10:51:49

C++函數模板編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 伊人免费网 | 免费一级黄色录像 | 国产一区二| 久久久久久a | 欧美一区二区三区在线观看 | 四虎最新视频 | 99精品久久| 成人h电影在线观看 | 国内自拍视频在线观看 | 亚洲www啪成人一区二区 | 黄色片免费 | 日韩www | 午夜极品| 看一级毛片 | 久久成人国产 | 在线看亚洲 | av色站| 亚洲国产成人av好男人在线观看 | 免费a在线 | 中文字幕日韩欧美一区二区三区 | 欧美日韩电影一区 | 国产精品欧美一区二区三区不卡 | 91亚洲精品久久久电影 | 久久久蜜桃一区二区人 | 国产一区二区三区四区在线观看 | 国产精品一区久久久 | 一级片av | 一区二区三区四区视频 | 久久国产精品免费一区二区三区 | 91在线视频精品 | 81精品国产乱码久久久久久 | 97国产在线视频 | 国产电影一区 | 色成人免费网站 | 日韩一区二区三区四区五区 | 欧美精品综合在线 | 一区二区视频在线观看 | 久在线| 日日夜夜精品视频 | 日本一卡精品视频免费 | 亚洲国产一区在线 |