Python的性能是否值得花费?

NBe*_*tar 5 c python embedded fuzzy-logic

我正在考虑实现基于PyFuzzy(Python)或FFLL(C++)库的模糊逻辑控制器.

我更喜欢使用python,但我不确定它是否可以在嵌入式环境中运行(ARM或嵌入式x86处理~64Mbs的RAM).

主要关注的是响应时间尽可能快(更新速率为5hz +理想情况> 2Hz是必需的).系统将从RS232端口读取多个(可能是5个)传感器,并根据模糊评估结果提供2/3输出.

我是否应该担心Python对于这项任务来说太慢了?

jal*_*alf 35

一般来说,在实际看到它成为一个问题之前,你不应该过度关注性能.由于我们不知道您的应用程序的详细信息,因此我们无法说明如果在Python中实现它的性能.既然你还没有实现它,你也不能.

实现您最熟悉的版本,并且可以首先实现最快的版本.然后测试它.而且,如果实在是太慢了,你应该为了完成三个选项:

  • 首先,优化您的Python代码
  • 如果这还不够,请在C/C++中编写性能最关键的函数,并从Python代码中调用它
  • 最后,如果你真的需要最佳性能,你可能不得不用C++重写整个事情.但至少你会有一个Python的工作原型,你会更清楚地了解它应该如何实现.你会知道要避免哪些陷阱,你将有一个已经正确的实现来测试和比较结果.

  • +1过早优化是万恶之源. (14认同)
  • @tkadlubo:我没有使用那句话,因为人们经常误解它.性能很重要,优化很重要.Knuth的观点仅仅是在大多数代码中,通过优化没有任何好处,直到你知道代码的哪些部分是瓶颈,任何优化尝试都为时过早.不幸的是,人们常常把它作为忽视性能和优化的借口. (5认同)
  • 它是所有邪恶的根源,它遍布堆栈溢出. (4认同)

Lar*_*s D 11

Python处理大量非字符串数据非常慢.对于某些操作,您可能会发现它比C/C++慢1000倍,所以是的,在使用Python制作时间关键算法之前,您应该研究这个并做必要的基准测试.

但是,你可以使用C/C++代码中的模块扩展python,这样时间紧迫的东西很快,同时仍然可以使用python作为主代码.

  • +1我也将作为基线尝试在python中编写它,并在需要时用C替换慢速部分. (4认同)

Kev*_*Dog 5

让它工作,然后让它快速工作.