Winform 程序运行速度问题
一Winform 程序,基于.Net Framework 2.0 开发
在本地运行速度还可以,但比较占资源(CPU:90%)
但放到服务器上以后,速度反而慢了许多,却相对来说不怎么占资源(CPU:50%)
基本上本地速度是服务器上的4倍
服务器的配置要比本地好许多,Cpu 还是双核的,内存也比本地大一倍
看了许多数据库的配置,没有任何的访问限制.
问题回出在那儿呢??
------解决方案--------------------CPU如果長期佔用90%可能有些問題吧,貼上來看看
------解决方案--------------------本机单核90% 服务器双核50% 正常啊
不过那么高的占用率一般都用异步或者其它方法的,用户不可能接受
------解决方案--------------------是不是程序的优先级有点低,在任务管理器是设置高些看看行不.
------解决方案--------------------不应该占这么多cpu,你看看是不是线程的问题,我以前遇到过类似的问题
------解决方案--------------------自己看你服务器上的配置
我的电脑/属性/高级/性能设置/高级
处理器资源是优先分配给了程序还是后台服务
------解决方案--------------------难道是服务器本身其他负担较重,无暇顾及你的程序?~
------解决方案--------------------你确定一下服务器和你本地cpu数量
双核cpu会导致这种情况
------解决方案--------------------不是,应该访问的时候 权限设置下
------解决方案--------------------程序还能改下么/?
------解决方案--------------------winform CPU占用率应该不高,但是内容占用率还是比较高的!!多半是楼主控件用的太多了,没有释放资源!
------解决方案--------------------服务器的内存性能和CPU性能设置是什么?是程序还是后台服务?是程序还是系统缓存?
------解决方案--------------------极可能是程序本身问题,贴出代码看看
------解决方案--------------------我看主要是程序的问题?多半是程序内存处理有问题,服务器用的是什么操作系统?本地是什么操作系统,多比较看看!
------解决方案--------------------找个测试软件测试一下,看看到底是计算机问题还是程序问题,或者是计算机设置问题!
------解决方案--------------------程序很大时,要用本机图像生成器
生成 一下本机代码
还有.NET 在编译时会生成适合CPU的IL 指令
你可能生成了不适合 你服务器的IL指令了
程序速度应该很快的
------解决方案--------------------超线程的CPU和双核CPU是两码事, 超线程CPU是INTEL前几年放出来的噱头,以前都用过. 任务管理器里面确实有两个CPU,可实际上只单核,性能实在不怎么样,还不如现在出的菜羊,早就被真正的双核淘汰了.
你的任务在这种CPU上很有可能被扭曲了, 再不就是你的服务器同时还担负着其他任务
------解决方案--------------------1。在大数据量,大访问量的情况下,为了提高查询速度,应查询尽可能少的数据发送到客户端或请求该数据的应用程序。以减少数据传送量,节约带宽的方式来提高响应速度。
2。返回到客户端或请求该数据的应用程序的数据,在c#中一般使用DataSet或DataTable储存在内存中,查询少量数据可以节省内存占用空间。
3。如果需要返回大量数据到客户端,为了提高响应速度,应为DataTable建立主键在客户端进行查询操作,提高客户端查询速度。
4。在数据库中为非主键、查询条件字段建立索引,也能提高数据查询速度(数据量大时效果较明显)。
5。设定合适的虚拟内存。虚拟内存过大,会降低系统运行的效率(因篇幅有限,具体原因请上网查询)。
------解决方案--------------------服务器的数据库的数据量是不是比较大
你可以测试下, 看看是不是数据库操作的时间占用较多
------解决方案--------------------我的机器就是超线程的,在这种机器上,性能比单的要稍微低下一些(主频一样的情况),但是无论怎样,系统cpu的最高占用只有50%,这里的50%就相当于被完全占用,甚至是在单核的机器上死机的情况(看来超线程还是有好处的,至少给了你关进程的机会)。
------解决方案--------------------正常。运行单一个程序 双核的本来就比单核的慢!双核的体现在 运行多个程序快,单个程序 比 单核的慢。比如 INTER双核的就和AMD单核的总体是一个档次的。
而你CPU占用百分之90,那是你线程没释放和程序本身的问题了。和内存无关!!!自己检查下!
------解决方案--------------------有文件的写操作,会不会是杀毒软件的问题,
以前我用c写的程序就有在虚拟机的linux里比win下快10倍的问题