JavaScriptCore内存分配的战争-阿里云开发者社区

开发者社区> horky> 正文

JavaScriptCore内存分配的战争

简介: 原文来自:http://webkit.sed.hu/content/war-allocators-javascriptcore-another-participant 由zoltan.horvath发表于02/22/2010,虽然现在的状况已经不同了,但还是有一定的参考价值。
+关注继续查看

原文来自: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内存分配的战争
原文来自:http://webkit.sed.hu/content/war-allocators-javascriptcore-another-participant 由zoltan.horvath发表于02/22/2010,虽然现在的状况已经不同了,但还是有一定的参考价值。
1319 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9498 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13190 0
+关注
horky
Web及移动开发技术
294
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载