国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

翻String.Format源碼發現的新東西:StringBuilderCache

2019-11-17 02:34:30
字體:
來源:轉載
供稿:網友

翻String.Format源碼發現的新東西:StringBuilderCache

起因:

記不清楚今天是為毛點想F12看String.Format的實現源碼了,反正就看到了下圖的鳥東西:

image

瞬間石化有沒有,StringBuilder還能這么獲取?

研究StringBuilderCache類

下面的事件也簡單,果斷在StringBuilderCache上面點了F12看源碼(Resharpe真是好東西啊。。。)

image

首先看到的是這是一個internal的類,怪不得沒見有人這么寫過呢!

研究一番之后,終于弄清楚這貨是干嘛的了:這個類的作用就是緩存一個StringBuilder對象,給那些并不是要做很多Append操作的地方使用的,我們也看到PRivate const int MAX_BUILDER_SIZE = 360,它內部用來判斷是用緩存的StringBuilder函數新new出來一個的界限閥值是360.

這個類的流程是這樣:

1、調用Acquire方法獲取一個StringBuilder,capacity大于360直接new,否則就用StringBuilderCache.CachedInstance這個ThreadStatic變量,當然之后要清空CachedInstance這個變量以防止線程內連續調用Acquire方法獲得同一個StringBuilder引用。

2、GetStringAndRelease返回最后的string對象,然后緩存StringBuilder到CachedInstance變量上去。

測試性能

寫了簡單的驗證StringBuilderCache的控制臺程序:

image

最終的結果,可以明顯看到大量調用的優勢:

image

本文源碼地址:https://github.com/a407121393/MyDotNetTestProj/tree/master/MyTestSln/TestStringBuilderCache

用到的Util類在另一個目錄里面:https://github.com/a407121393/MyDotNetTestProj/tree/master/MyTestSln/Util


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陆丰市| 江门市| 上虞市| 来安县| 安顺市| 同德县| 东城区| 温宿县| 龙州县| 浦县| 三亚市| 吴川市| 樟树市| 淮安市| 林甸县| 孟连| 江达县| 巨野县| 方正县| 景洪市| 集贤县| 太白县| 溧水县| 都匀市| 永宁县| 库尔勒市| 新干县| 贺州市| 鹤壁市| 黑水县| 石嘴山市| 扎鲁特旗| 长丰县| 葫芦岛市| 土默特右旗| 镇坪县| 海伦市| 丁青县| 呼图壁县| 南康市| 河北区|