Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6337
  • 博文数量: 0
  • 博客积分: 26
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-06 15:10
我的朋友
最近访客
博文列表
标题:
标题 阅读 评论 转发 发布日期
     暂时没有公开的博文,给他留言提醒一下吧。
    
给主人留下些什么吧!~~

HyryStudio2012-05-06 19:57

garcialook: 你好,我是一位python的爱好者,我想用python进行数值计算,但我发现同样的思路与流程,python的运行速度远慢于fortran的速度。这导致我不可能继续用python作为.....
用Python做计算的目的不是为了运算速度快,而是为了开发快,这一点和MATLAB是类似的。就你给出的网址中的那种循环,Python可能会比C或Fortran慢100倍。

Python的数值计算通常会用NumPy, SciPy这样的扩展库。如果有些任务不能用扩展库完成,会考虑使用C、Fortran或者Cython提高运算速度。

写程序的时候不要过早的开始考虑运算速度以及如何优化计算时间,Donald Knuth曾经说过:

"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil"

用Python开发计算程序的一般步骤是:

1.  首先考虑尽量用扩展库提供的函数解决,避免Python语言的大量循环。

2.  1无法实现时,就用Python实现。如果计算时间可以接受就OK了。

3. 如果无法忍受,就要考虑优化了。优化之前先做Profile,找到需要优化的部分。通常需要优化的部分只占整个程序的很小的一部分。

4. 优化可以考虑尝试新的算法,使用更合适的数据结构。

5. 如果一切Python级别的优化都失败了,那么就用C,Fortran或者Cython将那一部分重写。其中Cython和Python的语法很接近,它将带有类型声明的Python程序翻译成C语言然后编译成扩展程序。现在越来越多的扩展库采用Cython编写。

回复  |  举报
留言热议
请登录后留言。

登录 注册