软件在长时间开着不使用(可能5-10分钟),然后过5-10分钟后,开始使用,速度会变慢,但是慢了一会,又会快起来,一直使用下去,速度就很快,不知道为何,明白的指点一条明路,我该怎么查找这个问题?
   还有,第一次打开界面速度慢,这个就不说了!但是性能差距在,6-7倍,这太夸张了,第一次运行需要1秒钟,而第二次,200毫秒就搞定了。

解决方案 »

  1.   

    自己测程序,比如在一些重要的业务过程,耗时方法等,用stopwatch计时,看这些方法处理数据的性能怎样,写日志记录下来,就知道了啊。
      

  2.   

    要用.net就得这样,把机器配置升一下,能快些
      

  3.   

    第一次开始的时候,系统需要配置一下环境,所以比较慢,第二次已经存在了一些必要条件,就快一点
    .NET 在一段时间没有使用,会自动释放一些资源
      

  4.   

    同意楼上
    其次:你线程是不是空闲时间占资源太多,见意在空闲时间用,Thread.Sleep(1000);空闲一秒钟
    再次:你程序中写的静态变量是不是过多,所以会产生这样结果,静态变量是程序使用中一直加载在内存的,所以在你内存过小的情况下,会转存硬盘的扩充缓存
      

  5.   

    这种状况,在有动态访问数据库的情况下,更为显示。连接到数据库服务器是个费时的过程。必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次连接,必须分析连接字符串信息,必须由服务器对连接进行身份验证,等等。ADO.NET中,使用了连接池的优化方法,来管理维护连接。Open时,连接池就会检查池中是否有可用的连接。如果有,直接返回给调用者,而不是建新。 Close 时,会判断该连接是否在最小连接数之内,如果“是”会将连接回收到活动连接池中,而不是真正关闭。以备下次使用。这样,第一次使用时比较慢,紧接着再用就很快。如果,长期不用,超过连接的生命周期(有限时的),或着长期不用被连接池优化清理掉了。这就再用,那就和第一次一样,从头再来一遍,当然就慢了。
      

  6.   

    .net程序执行过程如下:1 一个方法执行之前,CLR首先检测Main中代码引用的所有类型,CLR会分配一个内部的数据结构,该数据结构用于管理对所引用类型的访问。2、当该数据结构被初始化时,CLR将把每一个条目设置 为CLR内部的一个没有正式记录的函数,我们暂且称该函数为 JITCompiler。3、当Main方法第一次调用引用的类型的方法成员时,JITCompiler函数将被调用,该函数负责将一个方法的IL代码编译成本地CPU指令。1、 JITCompiler将前面第2步的数据结构中的要调用的真实方法的地址替换成包含刚刚编译好的CPU指令的内存块地址。2、 JITCompiler跳转到该内存块中的代码上,开始执行。注意:一个类型的所有方法只会编译一次,当这个类型的方法又被调用时,将会使用之前已经编译过的代码,这样只有在首次调用时,才会产生性能损失。也就是说托管代码跟非托管代码相比,性能上的损失是非常小的,近乎微不足道。