JavaScriptCore内存分配的战争
2012-06-01 00:32
253 查看
原文来自:http://webkit.sed.hu/content/war-allocators-javascriptcore-another-participant
由zoltan.horvath发表于02/22/2010,虽然现在的状况已经不同了,但还是有一定的参考价值。
世界上有很多的自定义内存分配库,让我们尝试下另一个后起之秀,它就是DLMalloc,
由Doug Lea开发。我已经通过JSC的自定义内存分配框架把DLMalloc集成到JavaScriptCore了。因为它不同使用QTWebKit的多线程,所以我只测试了在JavaScriptCore中的表现。测量的程序由QtWebKit编译,运行在x86上的Debian
Lenny (5.10)。
性能
令人惊讶的是,在SunSpider的情况下,DLMalloc甚至稍稍超越了TCMalloc。JEMalloc仍是最慢,它比DLMalloc慢了9.5%。V8的基准性能测试结果表现出了同SunSpider相同的趋势。WindScorpion基准表现则不同(其中包含了现实生活中的JavaScript应用),
TCmalloc表现最快,在这种情况下,它甚至比DLmalloc 快了3.1%。
内存消耗
DLMalloc的内存消耗与系统的malloc相同,在使用SunSpider的情况下相对TCMalloc减少了19.6%。在V8和WindScorpion测试基础下,系统的内存分配机制仍然获胜,它使用了最低的内存消耗却能达到同DLMalloc相同的结果。
总结
从性能的角度,虽然根据SunSpider和V8测试基准,DLMalloc最快的,它似乎是一个不错的TCMalloc的替代品,但同TCMalloc的差异不显著,而且在WindScorpion测试基准下它比TCMalloc慢。针对内存消耗,DLMalloc有个好的特性,就是它几乎使用像系统malloc的一样少的内存消耗。不过不幸的是,正如我所说的,DLMalloc无法在QtWebKit的多线程下工作,所以在目前的状况仍然无法简单用它替换TCmalloc,还需要再一步的发展。
附:
DLMalloc:
http://g.oswego.edu/dl/html/malloc.html (中文参考资料)
TCMalloc:
http://code.google.com/p/gperftools
作者基于Valgrind开发一个新的性能分析工具 Freya: http://webkit.sed.hu/node/29
相关文章推荐
- JavascriptCore 内存分配
- 深入理解javascript之内存分配。
- 一 javascript的内存分配
- 详细分析 javascript 的内存分配
- Javascript_01_理解内存分配
- 理解Javascript_01_理解内存分配原理分析
- JavaScript对内存分配及管理机制详细解析
- javascript-对象在内存中的分配
- 深入理解javascript之内存分配
- JavaScript对内存分配及管理机制详细解析
- 理解Javascript_01_理解内存分配原理分析
- JavaScript对内存分配及管理机制详解
- 动态内存分配导致Javascript性能的问题
- 动态内存分配导致Javascript性能的问题
- javascript内存分配原理实例分析
- [原]JavaScript必备知识系列-变量内存分配
- 理解Javascript_01_理解内存分配
- 由javascript 没有重载 引起的 内存分配问题学习
- 理解Javascript_01_理解内存分配
- JavaScript学习笔记3-附录(Java的各类型数据在内存中分配情况详解)