ArchSummit全球架构师峰会门票9折倒计时中~ 了解详情
写点什么

Mono JIT 增强 Trampolines 和代码共享功能

  • 2007 年 10 月 29 日
  • 本文字数:679 字

    阅读完需:约 2 分钟

好奇即时编译器(JIT Compilers)如何工作的吗?最近来自 Mono JIT 团队的两篇帖子通过描述他们在这些领域的工作情况揭示了 Trampolines(弹簧床机制)和代码共享的工作原理。

Mono 是一个主要遵循 ECMA 标准的.NET 平台的开源版本。它被定位于给传统的开源和.NET 开发人员使用,通过最近几年的不懈努力,它已经成为一个可用的平台了。现在,你在可以在 Mono 平台上体验好几个 Gnome 应用程序,以及 MP3 播放器—— Sansa Connect

Paolo Molaro 谈到了 Trampolines(弹簧床机制)和它们是如何影响 JIT 运行时内存使用的。简而言之,一个“弹簧床”就是一个函数存根,它能在被调用的时候,触发 JIT 执行。一旦 JIT 编译这个函数成为机器码,那么“弹簧床”的指针就会被替换为真实函数的指针。

通过寻找一种被虚方法使用的共享“弹簧床” 的途径,Paolo 将会减少 Mono 所需“弹簧床”数量的大约三分之一。这样的节约,能让应用程序之间有着很大的不同。

在上面的情形中,对于 MonoDevelop 来说生成的“弹簧床”的数量从 21000 个减少到 7700 个(节约了 160KB 的内存),对于 IronPython 来说从 17000 个减少到 5400 个,以及对于一个“Hello World”的程序从 800 个减少到 150 个。

与此同时, Mark Probst 也谈到了跨泛型和它们创建出的进程来共享代码的问题。

现在,让我们看看我走过了多少路途来实现泛型共享的。开始的时候,我们只能共享非泛型非静态的方法。接着,我们只能共享所有类型的参数都是引用类型的泛型的实例。后来,Dictionary 类和字典能共享方法了。当然,最后所有的功能都被实现了。

查看英文原文: Mono JIT Enhancements: Trampolines and Code Sharing

2007 年 10 月 29 日 02:52705
用户头像

发布了 254 篇内容, 共 45.6 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

为金融场景而生的数据类型:Numeric

青云技术社区

postgresql 云计算 源码 云原生

LeaRun.Java可视化流程简单配置过程

雯雯写代码

java

2.5 view及Flex布局简介:如何使用view实现常见的UI布局?(二)

李艺

微信小程序专栏

华为云GaussDB深耕数字化下半场,持续打造数据库根技术

华为云开发者联盟

Serverless 云原生 华为云 GaussDB 云数据库

技术分享| 音视频多频道使用的正确姿势

anyRTC开发者

音视频 WebRTC 实时通信 多频道

FastDFS环境搭建

Fox

fastdfs

小红书“致歉滤镜景点”:种草社区的尺度在哪?

石头IT视角

数字货币交易软件系统开发介绍(搭建)

一文读懂「TTS语音合成技术」

澳鹏Appen

人工智能 语音 nlp 语音合成 TTS

数字货币交易所系统软件开发介绍(源码)

《第8章 函数探幽》

IT蜗壳-Tango

10月日更

2.1 icon组件介绍,及如何自定义实现图标

李艺

微信小程序专栏

2.2 progress简介:如何实现一个环形进度条?

李艺

微信小程序专栏

三级等保是不是icp?两者是一样吗?

行云管家

网络安全 等级保护 等保三级 三级等保

2.3 富文本rich-text简介:如何单击预览节点图片并保存?

李艺

微信小程序专栏

Cloud Studio 邀您互动,好礼送不停 | CIF 活动邀请

CODING DevOps

自动化部署 Cloud Studio 开发标准化 可视化编辑 多人协同

2.6 可移动容器及可移动区域介绍:如何实现单条消息左滑删除功能?(一)

李艺

微信小程序专栏

分布式文件系统FastDFS实战

Fox

fastdfs 分布式文件系统

《世界质量报告》重磅发布,人工智能与机器学习成软件质量保证测试焦点

数字货币交易所系统软件开发介绍(案例)

百度智能云大数据全景架构图如何赋能企业数字化

百度开发者中心

大数据 案例分享 行业创新

存储大师班 | 浅谈数据保护之快照与备份

QingStor分布式存储

分布式存储 快照 备份

堡垒机的品牌那么多,用哪个品牌更好?

行云管家

云计算 云服务 堡垒机 混合云 云厂商

2.4 view及Flex布局简介:如何使用view实现常见的UI布局?(一)

李艺

微信小程序专栏

IP地址溯源 从源头遏制计算机恶意程序感染

郑州埃文科技

网络安全 ipv6 IP地址 木马病毒

DBA面试资源合集(含Oracle、MySQL、Redis等)

墨天轮

MySQL 数据库 oracle redis 面试

Tensorflow Lite移动平台编译|Bazel实践

轻口味

人工智能 tensorflow ios android 10月日更

直播预告 | Apache APISIX × Apache SkyWalking 线上分享

Apache APISIX 中国社区

Apache Skywalking API网关 APISIX Meetup

一看就懂|焱融 SaaS 数据服务平台上手指南

焱融科技

云计算 技术 分布式 高性能 文件存储

AI在游戏反外挂中的应用与实践

AI在游戏反外挂中的应用与实践

Mono JIT 增强Trampolines和代码共享功能_.NET_Jonathan Allen_InfoQ精选文章