2009年8月13日星期四

[PerlChina] Re: 性能、多线程

不要盲目使用多进程或多线程,首先看看你现在程序的 IO 和 CPU 消耗,
如果单进程的情况下 IO 和 CPU 都是满负荷的话,多进程和多线程也
并不能带来性能提升,反而很容易使性能下降。

如果 IO 和 CPU 都有空闲,多进程/线程就有很好的效果了。

还有,你所谓的计算密集是什么计算,在文本处理等方面 C 并不比 Perl
效率高,很多情况下 C 的效率更低(这不是语言的问题,Perl 也是 C 写的,
之所以出现这个情况,是因为没几个人能写出和 Perl 开发者一样好的 C 代码。)。
如果是数值计算,我的测试结果是 C++(本人不会C)至少比 Perl 快一个数量级。

如果在单线程的情况下 IO 的 CPU 都满负荷,(排除你算法有问题的情况)
优化的首选方案就是改用 C++ 

> 在2009-08-13,"yi wang" <wangyi2412@gmail.com> 写道:
> Hi, all!请教一个性能方面的问题,应该是常碰到的吧。需要下载远程
> xml文件(千万量级的文件数量,每个有10k左右)并进行处理后保存
> (处理后每个约3k)。现使用的是get函数,一次请求若干xml后,
> 直接调用xml::smart进行xml相关内容的提取,而后进行我们的计算,
> 然后保存为新的若个个xml文件。速度非常非常的低,平均5秒/xml,
> 无法完成要求(照这个速度得用两年时间)!想请教各位,
> 除了提升处理算法的速度,有没有什么其他的办法提高整体性能。
> 比如我用的请求函数是否还有更好的,xml处理时候还有更好的,
> 用多线程/多进程,文件打开、保存、关闭的方式等,有没有什么建议?
> 搜索引擎的爬虫也会做类似更高难度的工作,不知道是怎么做的,
> 有没有什么可以借鉴的?另外,有没有人做过这种IO计算都密集的程序,
> 用c和perl的效率比较?


没有广告的终身免费邮箱,www.yeah.net --~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

没有评论: