|
|
1
5
解决方案一些研究和更好的阅读 earlier referred to article 汉斯·帕桑特提到,得出如下结论:
背景:阐述为什么延迟绑定缓存可以帮助VB代码性能
有些人(其中汉斯·帕桑特,见他的答案)可能会想,为什么在后期绑定中缓存或不缓存可能很重要。实际上,它在VB和其他后期绑定技术中都有很大的不同(记住
后期绑定归结为一个简单的原则:给定一个名称及其参数声明,通过可用的方法循环此类及其父类的所有方法
如果您能够查找方法一次,然后将方法指针存储在查找表中,那么这将大大加快此过程。DLR中的缓存方法绑定又进行了一步,如果可能,用指向实际方法的指针替换方法调用。在第一次调用之后,对于随后的每个调用,这将更快地变成一个数量级(以200倍到800倍的速度考虑)。
作为这个问题的一个例子,这里有一些代码说明了这个问题。如果每个班都有一个
这段代码(至少类似)实际上使它与我的一个客户机一起投入生产,并在一个经常被称为Ajax回调中使用。不需要手动缓存
那么,汉斯问题的答案 “难道你没有更大的问题要担心吗?” 很简单:这是一个大问题(或者可能是),特别是对于那些太不注意使用后期绑定的VB程序员来说。
在这种特殊情况下,很多人都喜欢vb.net 2010显然没有升级以引入后期绑定,因此,
PS:后期绑定性能问题很难被跟踪,除非您有一个好的性能分析器,并且知道编译器内部实现的后期绑定有多晚。 |
|
2
2
|
|
|
3
0
问得好。我猜答案是“不”,因为 this article 在msdn杂志上说,vb.net已经被更改为支持动态语言运行时,并简要描述了对运行时的更改,但没有提到缓存。 有人更了解吗? |