一直對(duì)各類編程語言中的字符串底層實(shí)現(xiàn)的差異感興趣. 最近在知乎上提了一個(gè)問題
總結(jié)起來, 在腳本里常用的一種字符串處理方法稱之為 字符串駐留技術(shù)(String interning).
此技術(shù)主要為了節(jié)約內(nèi)存, 提高訪問, 操作效率. 這里拿lua來說, lua中低于40個(gè)字節(jié)的字符串駐留在全局hash表中, 大于40個(gè)字符的字符串單獨(dú)有一個(gè)表. 這么處理可以提高cache命中幾率. 但核心的關(guān)鍵是, 字符串的入庫都要進(jìn)行hash化處理, 這個(gè)比較耗時(shí). 但入庫后, 字符串之間的變量賦值只限于字符串引用, 還是唯一的一個(gè)引用, 字符串比較也是基于整數(shù)級(jí)別, 效率很高
一些鏈接
蔣金楠(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