您的位置:程序门 -> .net技术 -> c#



winform 程序运行速度问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


winform 程序运行速度问题[已结贴,结贴人:tiandotnet]
发表于:2007-03-26 14:11:03 楼主
一winform   程序,基于.net   framework   2.0   开发

在本地运行速度还可以,但比较占资源(cpu:90%)

但放到服务器上以后,速度反而慢了许多,却相对来说不怎么占资源(cpu:50%)

基本上本地速度是服务器上的4倍

服务器的配置要比本地好许多,cpu   还是双核的,内存也比本地大一倍

看了许多数据库的配置,没有任何的访问限制.

问题回出在那儿呢??
发表于:2007-03-26 14:12:301楼 得分:0
还没有遇到过,帮up
发表于:2007-03-26 14:21:142楼 得分:0
自己顶
发表于:2007-03-26 14:31:383楼 得分:0
我再顶
发表于:2007-03-26 14:51:004楼 得分:2
cpu如果長期佔用90%可能有些問題吧,貼上來看看
发表于:2007-03-26 14:55:405楼 得分:2
本机单核90%   服务器双核50%   正常啊

不过那么高的占用率一般都用异步或者其它方法的,用户不可能接受
发表于:2007-03-26 15:00:436楼 得分:2
是不是程序的优先级有点低,在任务管理器是设置高些看看行不.
发表于:2007-03-26 15:01:517楼 得分:0
那么占资源啊,   难道是网络游戏私服?或者是邮件服务器?
发表于:2007-03-26 15:04:408楼 得分:2
不应该占这么多cpu,你看看是不是线程的问题,我以前遇到过类似的问题
发表于:2007-03-26 15:05:239楼 得分:0
程序很大,是大量的数据库操作

占用资源是一个问题,打算下一步解决

可现在是服务器上居然没有本地快,感觉很奇怪

而且慢的要死,不知道怎么回事啊
发表于:2007-03-26 15:27:1410楼 得分:0
是不是双核cpu有什么特殊的地方啊?
发表于:2007-03-26 16:08:2911楼 得分:0
自己再顶
发表于:2007-03-26 17:00:2512楼 得分:2
自己看你服务器上的配置
我的电脑/属性/高级/性能设置/高级
处理器资源是优先分配给了程序还是后台服务
发表于:2007-03-26 17:14:3613楼 得分:2
难道是服务器本身其他负担较重,无暇顾及你的程序?~
发表于:2007-03-26 17:35:3114楼 得分:0
处理器资源是优先分配给了后台服务

但我本机器也是一样的啊

我的程序的优先级是标准
发表于:2007-03-26 17:50:1915楼 得分:2
你确定一下服务器和你本地cpu数量
双核cpu会导致这种情况
发表于:2007-03-26 17:59:5316楼 得分:0
是的

服务器cpu是超线程的

在sql   server   库属性的处理器选项卡中能看到两个cpu

设备管理器中也是显示cpu

那这种问题怎么解决呢??
发表于:2007-03-26 18:00:2417楼 得分:0
设备管理器中也是显示两个cpu
发表于:2007-03-26 18:08:3418楼 得分:0
fantiyu_sr   还在吗?

这种问题怎么解决的?
发表于:2007-03-26 19:06:5219楼 得分:0
up
发表于:2007-03-26 19:11:4720楼 得分:0
本身.net开的的winform就很慢
发表于:2007-03-26 19:49:0121楼 得分:0
up
发表于:2007-03-26 20:21:1922楼 得分:2
不是,应该访问的时候   权限设置下
发表于:2007-03-26 20:29:5423楼 得分:2
程序还能改下么/?
发表于:2007-03-26 20:30:5724楼 得分:2
winform   cpu占用率应该不高,但是内容占用率还是比较高的!!多半是楼主控件用的太多了,没有释放资源!
发表于:2007-03-26 21:22:5225楼 得分:0
不是的

界面很简单,用的控件也很少

主要进行的就是一些数据库的读写操作很文件的写操作

现在的问题是本地运行不慢,服务器运行很慢,而且慢的出奇

本地是服务器的5倍,夸张吧

服务器要比本地机器好的多啊,所以搞不懂怎么回事
发表于:2007-03-26 21:28:2626楼 得分:2
服务器的内存性能和cpu性能设置是什么?是程序还是后台服务?是程序还是系统缓存?
发表于:2007-03-26 21:30:0427楼 得分:2
极可能是程序本身问题,贴出代码看看
发表于:2007-03-26 21:31:2228楼 得分:0
处理器是后台服务

内存是程序

但本地也是一样的
发表于:2007-03-26 21:33:0329楼 得分:0
什么数据库呀?数据库在本地还是在服务器上(数据服务器)?
发表于:2007-03-26 21:34:3930楼 得分:2
我看主要是程序的问题?多半是程序内存处理有问题,服务器用的是什么操作系统?本地是什么操作系统,多比较看看!
发表于:2007-03-26 21:41:2731楼 得分:0
服务器windows   server   2003   sp1   ,数据库就在服务器本机上,是sql   server   2000  

本地也是windows   server   2003   sp1,数据库也是一样的

在服务器上运行的时候,内存占的不多,cpu   平均在50%左右
发表于:2007-03-26 21:52:3932楼 得分:2
找个测试软件测试一下,看看到底是计算机问题还是程序问题,或者是计算机设置问题!
发表于:2007-03-26 22:06:0633楼 得分:4
程序很大时,要用本机图像生成器
生成   一下本机代码
还有.net   在编译时会生成适合cpu的il   指令
你可能生成了不适合   你服务器的il指令了
程序速度应该很快的
发表于:2007-03-26 22:38:5834楼 得分:0
试试看....
发表于:2007-03-26 23:03:4735楼 得分:4
超线程的cpu和双核cpu是两码事,   超线程cpu是intel前几年放出来的噱头,以前都用过.   任务管理器里面确实有两个cpu,可实际上只单核,性能实在不怎么样,还不如现在出的菜羊,早就被真正的双核淘汰了.


你的任务在这种cpu上很有可能被扭曲了,   再不就是你的服务器同时还担负着其他任务
发表于:2007-03-27 00:20:4136楼 得分:2
1。在大数据量,大访问量的情况下,为了提高查询速度,应查询尽可能少的数据发送到客户端或请求该数据的应用程序。以减少数据传送量,节约带宽的方式来提高响应速度。
2。返回到客户端或请求该数据的应用程序的数据,在c#中一般使用dataset或datatable储存在内存中,查询少量数据可以节省内存占用空间。
3。如果需要返回大量数据到客户端,为了提高响应速度,应为datatable建立主键在客户端进行查询操作,提高客户端查询速度。
4。在数据库中为非主键、查询条件字段建立索引,也能提高数据查询速度(数据量大时效果较明显)。
5。设定合适的虚拟内存。虚拟内存过大,会降低系统运行的效率(因篇幅有限,具体原因请上网查询)。
发表于:2007-03-27 08:40:0737楼 得分:0
昨天晚上搞了大半夜,还是没结果

我把服务器重启了,把iis也停了(本服务器主要承担的任务就是web服务)

运行的结果还是一样的,很慢,跟没停iis的时候是一样的

我的数据库和程序都在服务器上,不存在客户端的问题

大家都帮我想想啊!!!急死了

服务器cpu   是intel(r)   xeon(tm)   2.80ghz   ,不知道与这个有没有关系
发表于:2007-03-27 08:52:4838楼 得分:2
服务器的数据库的数据量是不是比较大

你可以测试下,   看看是不是数据库操作的时间占用较多
发表于:2007-03-27 09:02:4039楼 得分:0
数据量也不是很大,也就10w   条数据而已,

分了很多次读的

不知道与环境有没有关系,服务器上仅装了一个.net   framework2.0   我看才88多兆

本地是与开发环境一块装的,我看了一下比较大,是148兆,还有语言包之类的.
发表于:2007-03-27 09:06:2440楼 得分:2
我的机器就是超线程的,在这种机器上,性能比单的要稍微低下一些(主频一样的情况),但是无论怎样,系统cpu的最高占用只有50%,这里的50%就相当于被完全占用,甚至是在单核的机器上死机的情况(看来超线程还是有好处的,至少给了你关进程的机会)。
发表于:2007-03-27 09:19:1141楼 得分:0
cpu占用情况大部分情况在50%以下,在30左右活动,偶尔会高于50%,但比较少
发表于:2007-03-27 09:50:3042楼 得分:0
我自己哭着顶啊~~~~~~~~~~~~~~~~
发表于:2007-03-27 11:19:1143楼 得分:0
90%的   cpu     肯定代码有没处理好的地方
发表于:2007-03-27 11:31:0944楼 得分:0
你试着在服务器上编译一下看看,或者看看vs.studio的编译选项
发表于:2007-03-27 11:50:0445楼 得分:2
正常。运行单一个程序   双核的本来就比单核的慢!双核的体现在   运行多个程序快,单个程序   比   单核的慢。比如   inter双核的就和amd单核的总体是一个档次的。
而你cpu占用百分之90,那是你线程没释放和程序本身的问题了。和内存无关!!!自己检查下!
发表于:2007-03-27 11:55:0346楼 得分:0
看看有没有死循环
或者大量的数据库操作
发表于:2007-03-27 11:57:1047楼 得分:2
有文件的写操作,会不会是杀毒软件的问题,
以前我用c写的程序就有在虚拟机的linux里比win下快10倍的问题

发表于:2007-03-27 13:09:2448楼 得分:0
程序确实存在一些大的循环,但肯定没有死循环

也存在大量的数据库操作,主要就是是读操作
发表于:2007-03-27 13:18:3949楼 得分:0
也可能是网络慢,在取数据的时候服务器提供一个服务耗资源过多,多个请求上来以后更不得了
发表于:2007-03-27 14:27:3650楼 得分:2
客户端程序本来就不应该放在数据库服务器上运行啊.
大量的数据库操作要占用很多的内存与cpu时间.以前在自己机器上的时候占cpu多就说明了这个问题.当你放到服务器上去的时候,服务器操作系统自己会调节,将cpu占用率等降下来,速度自然就会降下来了.服务器嘛,当然不能为了一个程序的运行而引起后台程序的不正常工作,所以在保障后台程序的基础上,实际上降低了你的程序的优先级.
发表于:2007-03-27 22:37:3451楼 得分:0
也存在大量的数据库操作,主要就是是读操作

不同因素可能会导致同一表象的发生,很难说得清楚。。在这里能问出多少东西出来?
自己跟踪调试看看嘛。
发表于:2007-03-28 07:30:0552楼 得分:0
程序很大时,要用本机图像生成器
生成   一下本机代码
还有.net   在编译时会生成适合cpu的il   指令
你可能生成了不适合   你服务器的il指令了

发表于:2007-03-28 08:27:5753楼 得分:0
网络问题
发表于:2007-03-28 08:36:1454楼 得分:2
越快的电脑上运行反而跟慢,说明你程序里有类似
while(true)
{
...
}
的循环操作。
如果有的话里面加上适当的等待语句,
while(true)
{
...
therad.sleap(1);
}
发表于:2007-07-01 05:05:4155楼 得分:0
若在主线程中有类似while(true){...}的,用在{。。。}中加application.doevent();
若是在主线程中创造出的子线程,在while(true){...}中加获取当前线程休眠片克 "thread.currentthread.join(1); "内存占用大,应该是你有些无用的对像没有消取。。我曾试过写出的程序内存只加大,没有减。这绝对是个问题。不过最后,还是解决了。至于如何解决实际情况来说。,一般来说,在你的机中占90%,在服务器占用50%,这很正常,因为你的机一单核,用90%,而
server机双核,相对减小一半。


快速检索

最新资讯
热门点击