一直對各類編程語言中的字符串底層實現的差異感興趣. 最近在知乎上提了一個問題
總結起來, 在腳本里常用的一種字符串處理方法稱之為 字符串駐留技術(String interning).
此技術主要為了節約內存, 提高訪問, 操作效率. 這里拿lua來說, lua中低于40個字節的字符串駐留在全局hash表中, 大于40個字符的字符串單獨有一個表. 這么處理可以提高cache命中幾率. 但核心的關鍵是, 字符串的入庫都要進行hash化處理, 這個比較耗時. 但入庫后, 字符串之間的變量賦值只限于字符串引用, 還是唯一的一個引用, 字符串比較也是基于整數級別, 效率很高
一些鏈接
蔣金楠(Artech)博客園中C#的例子
http://www.cnblogs.com/artech/archive/2007/03/04/663728.html
C#微軟官方的例子
https://msdn.microsoft.com/en-us/library/system.string.intern(v=vs.110).aspx