首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有人能解释一下CLR / DLR子类的开销吗?

有人能解释一下CLR / DLR子类的开销吗?
EN

Stack Overflow用户
提问于 2011-01-04 01:22:51
回答 1查看 163关注 0票数 1

如果我有一个使用CLR兼容代码(例如,在C#中)编写的库,并且我使用DLR (即,在IronPython中)子类化了其中的一些类,与仅使用CLR兼容代码进行子类化相比,这是否会对我的CLR库的速度(例如,强制转换等)产生影响?

我希望答案是‘否’,只要DLR不覆盖我的CLR库所需的任何代码。我可以写一些代码来对答案进行经验基准测试,但我想知道你们中是否有人知道。

非常感谢你,祝你新年快乐!

约翰

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-05 10:55:54

在你的库代码中根本没有额外的开销。引入新的子类根本不会改变CLR的行为。您可以想象这样一个版本的CLR,它执行类层次结构分析或运行时优化,其中内联方法或优化类型转换,其中附加子类的存在可能会默认这些优化。但我不知道有什么CLR实现做了这些优化(当然MS CLR没有)。

但是使用Python子类可能会稍微慢一点。这是因为Python子类将覆盖所有虚拟成员-然后需要将这些覆盖分派给实现重载的Python函数或基类。因此,无论何时使用Python中的子类化对象,调用虚方法都会稍微慢一点。额外的开销将包括对Python类型对象的一个或多个字典查找,以查看该方法是否在那里实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4586657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档