链接在这里。连StrongTalk的卖点,一个性能卓越的虚拟机,都被开源了。StrongTalk是SmallTalk的变种,允许静态类型(所以才叫"Strong"而不是small哈。当然,静态类型可用可不用,随喜),支持类型推断。这些还不是主要卖点。StrongTalk的最大卖点还在于速度。他的虚拟机运用所谓的“类型反馈”技术(下面会讲),动态地编译和优化代码,把常用的代码内联,极大地提高了运行速度。StrongTalk的类型系统独立于编译器。也就是说,纯粹动态类型的Smalltalk代码也能在StrongTalk上运行,而且速度和用了静态类型的代码一样快。Sun怎么做到的嗫?关键还是在这个类型反馈机制上:StrongTalk在语言运行时收集性能相关的统计(runtime profiling)。前几百次按通常的方式动态分配函数调用,但数据收集够了后,虚拟机就可以把最常用的函数调用内联到系统里,把常用函数的调用翻译成一个JMP, 跳到最有可能的函数实现那里,然后再来一个CMP,看是不是跳对了地方。只有当CMP失败的时候,系统才执行通常的动态分配,也就是在Hashtable上找来找去。嗯,搞Java的各路英雄不要激动。这个的确是JIT的技术。不过呢,上述的动态内联技术91年就出
论文,类型反馈94年也出
论文了。所以说JIT的技术其实是从Smalltalk那群牛银那里继承来的。不要小看了runtime profiling。其实大部分函数运行时的类型都在很多时候都可以唯一确定。大量的基准测试得出的结果是95%的代码调用可以优化为一个JMP+一个CMP,不需要进一步执行复杂的动态分配查找。呵呵,搞C++的老大们可以留鼻血了。这种优化连vtable都省了。也就是说很多时候动态语言的函数调用比C++还快。有意思的是,虽然StrongTalk的编译器支持静态类型,但编译器优化时完全忽略静态类型!这当然不是因为Sun的程序员2B,而是没有这个必要。静态类型并不能给优化提供多少好处。顺便说一句Ruby。现在CRuby的虚拟机用的是普通的动态分配的方法,每次都在表里面找来找去。现在Sun开源了StrongTalk的虚拟机,也许能让下一代的Ruby虚拟机性能大大提高。
分享到:
相关推荐
回到主题,"C3CRM3GA.exe"很可能是Sun公司开源项目的客户端或安装程序,C3CRM可能代表了一款客户关系管理(CRM)系统。CRM系统用于帮助企业管理和优化与现有及潜在客户的关系,通常包括销售、市场营销和服务模块。...
sun公司开源的jar包,里面封装了log4的日志以及关于自动生成hashcode代码以及重写equal方法的jar
- **Sun公司的开源虚拟化方案**提供了一系列丰富的工具和服务,包括OpenSolaris管理程序、Sun VirtualBox以及Solaris容器等,这些都为用户提供了一个开放且灵活的平台。 ##### 获取更多创新 - **开源社区**的强大之...
### Sun白皮书:企业中的开源技术 #### 执行摘要 在当今的IT世界中,开源软件已经成为一种无处不在的现象。它不仅被广泛应用于《财富》500强公司,还深入到了大学、发展中国家、政府机构乃至学生群体之中。尽管...
"Sunshine v1.4.1 - 超强的阳光系统最新版(官方标准版)" 是一个操作系统软件的更新版本,它很可能是一款基于Linux内核的开源操作系统,旨在提供高性能、安全性和用户友好的体验。这个“阳光系统”可能以它的易用性、...
Sun Microsystems,作为早期的开源倡导者,对开源社区的贡献不可忽视。在这个"Sun提供的有关开源方面的讲座资料"中,我们可以期待深入理解开源的核心理念、实践方式以及其在信息技术领域的影响。 首先,开源(Open ...
标题和描述均提到了“开源技术讲座”,以及Sun公司济南地区的开源大使田贯升,这表明讲座的主题聚焦于开源技术和Sun公司的相关产品,尤其是JavaEE5及其应用服务器GlassFish的介绍。以下是对讲座中提到的关键知识点的...
**Java版本的Sunflower官方学习项目** 在移动应用开发领域,Android平台的示例项目是开发者获取知识和技能的重要资源。Google通常会发布一些官方示例项目,以展示最新的技术特性和最佳实践,例如Sunflower。Sun...
SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN T7-1 固件SUN ...
【标题】"Sun 开源技术高级研讨班(青岛)收获分享(二)" 涉及的知识点主要集中在开源技术和Sun公司的技术应用上。Sun Microsystems是一家在计算机硬件和软件领域具有深远影响力的公司,尤其以其Java编程语言和开源项目...
SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN M10-4 固件SUN ...
补充缺失的sun包源码主要来源于OpenJDK项目,这是一个开源的JDK实现,其源码完全公开。OpenJDK的1.7分支包含了sun包的源代码,可以作为JDK1.7源码的补充。通过以下步骤,我们可以将OpenJDK的sun包源码整合到JDK1.7的...
【标题】:"中文版开源和云计算-大规模的按需、创新型IT.pdf--Sun公司的WhitePaper.pdf" 【描述】:该文档是Sun公司的一份WhitePaper,主要探讨了开源技术和云计算在大规模、按需及创新型IT环境中的应用和重要性。 ...
很抱歉,根据您给出的信息,"sun sun 精华"似乎并不是一个明确的IT相关主题,而且描述中也没有提供具体的技术细节或知识点。标签"sun s un 精华"同样没有提供足够的线索来生成相关的IT内容。至于压缩包子文件的文件...
【标题】"phoneME:Sun官方的开源项目,用于J2ME游戏编程" 【phoneME简介】 phoneME是Sun Microsystems(现已被Oracle收购)官方推出的一个开源项目,旨在提供一个可扩展、高性能且跨平台的Java ME(J2ME)执行环境...
根据提供的文件信息,我们可以归纳出以下关于Sun StorEdge 3510 FC Array的相关知识点: ### 一、产品概述 Sun StorEdge 3510 FC Array是一款由Sun Microsystems公司与Dot Hill Systems Corporation合作开发的企业...
最近项目实验发现导入工具程序后项目有错,查看发现sun.misc.BASE64Decoder和sun.misc.BASE64Encoder不可用,找不到相应的类。 二、原因分析 冲浪后发现JDK中的lib\tools.jar和JRE中的lib\rt.jar已从Java SE 9中...
在Java开发领域,JDK(Java Development Kit)是不可或缺的基础工具,它包含了Java运行环境...通过学习这些源码,开发者可以提升自己的技术水平,理解Java的内部运作,更好地优化代码,甚至参与到Java的开源项目中去。
Java的sun.audio包是Java标准库的一个组成部分,主要用于处理音频数据和播放音频文件。这个包在Java早期版本中被广泛使用,尽管在后续版本中,Java Sound API成为了更推荐的音频处理工具,但sun.audio包仍然保留,为...
另一方面,MySQL是一个流行的开源数据库,2008年被Sun收购,后又随着Sun被Oracle收购。Oracle继续发展MySQL,并将其作为其数据库产品的一部分。 Linux社区中的OpenSUSE和SUSE Linux Enterprise提供了类似.NET开发的...