C#插件,使用Assembly.LoadFrom()加载类会更慢吗?

3

我正在制作一个音频应用程序,它使用dll插件,这些插件是使用Assembly.LoadFrom(file).GetTypes()加载的...然后使用Activator.CreateInstance(T)。我的问题不是加载过程是否慢,初始化时间不重要,我想知道如果插件中有一个音频处理循环,那么这种方法是否比直接添加类而不使用插件要慢?


3
进行一些测试应用程序的分析,然后自己找出答案。这其实相当简单。 - M.Babcock
1
程序集中的IL代码会被即时编译器转换为机器码。只有一种机器码,没有低速或高速版本,JIT编译器不关心IL代码的来源。 - Hans Passant
3个回答

3
一旦程序集被加载到内存中并使用“Activator.CreateInstance(T)”方法实例化后,它的性能应该和直接引用没有任何区别。

插件是您不会直接引用的。 - Ry-
我所说的“activated”是指实例化。 :) - Developer
你所说的“激活”具体是什么意思?是指从该程序集中创建类型实例(例如使用Activator.CreateInstance())吗?因为从你的回答中并不是很清楚。 - svick
谢谢,那是答案,但我认为你错过了一些解释 :) - Rafael

2

0

这看起来很奇怪...

当程序集被加载时,没有任何区别...

因此,我建议在以下方面进行诊断:

  1. 程序集是否加载在同一个应用程序域中?
  2. 您加载的程序集是以调试模式还是发布模式编译的?
  3. 检查您的反射操作,因为反射对性能有负面影响。
  4. 检查程序集的 .net 运行时版本,性能问题是否由 side by side 引起?

希望这些提示能够帮到您~


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接