接手一个项目,要把程序优化一下,使运行速度提高4倍左右.( 感觉有难度,可能完成不了).已有程序是这样的,通过IE组件接口来抓取Web页面的元素.再将这些元素处理一下,提取出感兴趣的数据,写入一个新的Web页面中.现在它是单线程依次抓取多个web页面,速度很慢,3个复杂一点的页面要25秒左右. 考虑用多线程,可是在单CPU下效果不明显.
我再将各个用CString的地方都用string来代替,大概能提高1秒, 将十几个for循环处理放入一个for中去,大概能提高0.5秒. 总之效果很不理想.限于硬件条件,我不能在多CPU环境下去测试. 现在我想问一下,如果在多CPU环境下,比如4个子线程在4颗CPU环境下,总的速度大概能提高多少?谁能提一些理论上可行的办法么? 以前没做过优化方面的事情,请有经验的师兄们指点指点呀.
我再将各个用CString的地方都用string来代替,大概能提高1秒, 将十几个for循环处理放入一个for中去,大概能提高0.5秒. 总之效果很不理想.限于硬件条件,我不能在多CPU环境下去测试. 现在我想问一下,如果在多CPU环境下,比如4个子线程在4颗CPU环境下,总的速度大概能提高多少?谁能提一些理论上可行的办法么? 以前没做过优化方面的事情,请有经验的师兄们指点指点呀.
解决方案 »
- !!OleDbConnection的Fill方法怎么总出错?????????????
- C#winform timer事件中循环取数据的问题
- 请问如何判断鼠标所在位置是否有控件(WinForm) ?
- 请教大侠,问题应该会是简单的,但我解决不了!
- 三个表的SQL怎么写??
- 不能在vs2005工具栏中可视话建立用户和角色,会不会影响我用登陆控件?
- C#关闭电脑谁有源码????????
- 如何从鼠标事件里引发paint?
- 怎样做虚拟窗体
- 向做过局域网内聊天工具的高手请假!大家来看哦!
- 局域网内也能ping通IP,但是在局域网其他机器上无法访问网页,请问如何解决
- 将一个Button对象序列化时,提示Button未标记为可序列化,怎么办?
2) 多线程肯定可以提高速度,因为服务器返回页面需要时间,收页面的线程记得有空就 Sleep 一下。PS: 页面解析要用几十个 for ?
---
这个不行吧? 程序原作者说他做过试验,发现这样会慢一些.有朋友提出用汇编,不知道汇编在提高速度方面效果明显不明显呢?
我用java写过webgame的挂机程序,比别人用vb用IE控件的要快上很多。
朋友用vc的一个新的IE的开发包比我的又快很多,他的也是分析源文件的。
谢谢大家讨论,看来得好好改造一下它的数据结构
1、是网络数据传输;
2、是内容分析;如果前者造成比较大的瓶颈,多cpu对效率来说提升并不会很大;
如果是后者的话,多cpu会有明显的改善。