战魂小筑

讨论群:309800774 知乎关注:http://zhihu.com/people/sunicdavy 开源项目:https://github.com/davyxu

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  257 随笔 :: 0 文章 :: 506 评论 :: 0 Trackbacks

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

posted on 2015-05-06 11:33 战魂小筑 阅读(564) 评论(2)  编辑 收藏 引用

评论

# re: 字符串驻留技术 2015-06-08 10:38
你好,我加你的QQ群显示被接受了,但是没有加上呢  回复  更多评论
  

# re: 字符串驻留技术 2015-06-08 10:39 战魂小筑
再申请一次呢@刚
  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理