为什么C#连接dll动态库时第一次运行速度极慢,怎么解决?

标题不清楚,问题描述如下:
使用C#和matlab混合编程,已经用matlab编译好DLL函数,C#代码也顺利实现该函数的调用,现在的问题是:程序运行后进行第一次计算时耗时较长(8秒钟左右),而第二次计算的时候就非常快了(不到1秒钟)。
第一次给人的印象还是蛮重要的,所以有没有什么方法提高第一次的计算时间呢?比如加载一些必要的东西,偶是新手^_^,我能想到最笨的办法就是在load事件中预先计算一次,请问各位大侠有没有不笨的方法捏?谢谢~

第一次计算的耗时,主要还是花在了加载DLL上;我们是这么做的,在下面的事件里先实例化要用到的类
public Form1()
{
InitializeComponent();
public myClass mc;
}
这样就把加载动作放到了窗体生成事件中,调用的时候自然就快了。
但是加载的东西多了,打开程序时就会慢,所以一般会做个类似动画的东西,让用户知道是在加载而不是死机
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-01
C#第一次慢,是因为CLR要用JIT(即时编译)将DLL编译成本地代码,这样程序才能执行。慢的原因就是在生成本地代码上了。如果你非要加快首次调用速度的话,可以向先生成本地代码这个方面考虑。
第2个回答  2013-01-02
这个没办法解决,是.net运行机制的问题,每次都要转换成中间语言。当运行过一次之后,第二次就不用重新转了。这个是没办法的事。
第3个回答  2013-01-02
推荐答案的结果即可,但是为了显示不是死机,我建议你另开线程
相似回答