如何让程序提高的CPU利用率

wangrw21 2013-05-19 10:27:14
程序把EXCEL 加载到dataset,然后循环对比 dataset 中的行,有重复的记录下来。

5000行的数据对比,需要10秒。

发现CPU 只占用到 30% , (cpu:I5 3230M)。

循环更多的数据也是一样, cpu只占用到30%。 怎样提高cpu的利用。
...全文
2815 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
可以试着使用并行计算。并行计算就是为了能够使用多核CPU同时处理一个计算。
wangrw21 2013-06-17
  • 打赏
  • 举报
回复
引用 7 楼 sp1234 的回复:
引用 4 楼 wangrw21 的回复:
程序循环时,判断有重复,就会把数据添加到dataGridView中,再接着循环, 但发现, 显示的结果不是增加一条就显示一条,然后在循环完毕后,才把所有重复结果显示出来。
跟显示有什么关系?难道只有显示的时候才使用CPU,而填充DataSet和查找计算时就不占用CPU?不是的。所以如果你关心的是CPU占用问题,而不是显示问题,就不必纠结这个。
我打错字了,程序本身写的是:循环中,发现一条记录,即写入一条记录到dataGridView中, 但发现程序和实际逻辑不一样,是在所有循环执行完毕后,一下全部显示出来。
wangrw21 2013-05-21
  • 打赏
  • 举报
回复
单线程的程序在发出请求后要一直等待直到请求的数据到达才会做出响应。 ----------------- 程序循环时,判断有重复,就会把数据添加到dataGridView中,再接着循环, 但发现, 显示的结果不是增加一条就显示一条,然后在循环完毕后,才把所有重复结果显示出来。
liubaoen 2013-05-21
  • 打赏
  • 举报
回复
给你几个建议: 1.使用NPOI读取Excel以提高性能. 2.使用多线程分析,例如分四个表,每个线程分析一个.当然这个要注意任务分区.
  • 打赏
  • 举报
回复
引用 4 楼 wangrw21 的回复:
程序循环时,判断有重复,就会把数据添加到dataGridView中,再接着循环, 但发现, 显示的结果不是增加一条就显示一条,然后在循环完毕后,才把所有重复结果显示出来。
跟显示有什么关系?难道只有显示的时候才使用CPU,而填充DataSet和查找计算时就不占用CPU?不是的。所以如果你关心的是CPU占用问题,而不是显示问题,就不必纠结这个。
  • 打赏
  • 举报
回复
通常除非有人只想“玩”,否则谁也不会随随便便通过改变算法来搞。仅仅是把当前的这个方法放到子线程中,从而让程序立刻执行到这个方法之后的语句,让后边的代码跟这个算法的代码“并行”执行,这样来搞。
  • 打赏
  • 举报
回复
这个很慢说。通常是在更大的“粒度”上来并发执行操作,例如保证你的这个程序不在主线程而是在子线程里执行。至于说能不能把CPU占用率提高到50%以上,那不一定。假设你干的事情仅仅是一件非常简单的事情,你也不可能随随便便改变算法,那么就很难提高利用率,这个稍微想想就能明白了。
vssvss 2013-05-21
  • 打赏
  • 举报
回复
一般来说多线程可以提高 如果还要最大化的提高 数据库 算法都是可以考虑的
漫天雪飞 2013-05-20
  • 打赏
  • 举报
回复
多线程可以让CPU的利用率最大化,单线程的程序在发出请求后要一直等待直到请求的数据到达才会做出响应,这段时间内CPU相当于空闲状态。类似的情况很多,所以CPU的利用率低
moonwrite 2013-05-19
  • 打赏
  • 举报
回复
设置进程的优先级 http://msdn.microsoft.com/zh-cn/library/system.diagnostics.processpriorityclass(v=VS.100).aspx 怎么设置,我也不知道~
threenewbee 2013-05-19
  • 打赏
  • 举报
回复
使用多线程。 如果你的机器有4个逻辑处理器,那么如果你使用一个线程,最大只能占用25%的CPU用量。至少你需要4个满载的工作线程才行。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧