一直对各类编程语言中的字符串底层实现的差异感兴趣. 最近在知乎上提了一个问题
总结起来, 在脚本里常用的一种字符串处理方法称之为 字符串驻留技术(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