繁体   English   中英

这是用于python c或c ++的速度优化的更好的扩展语言

[英]Which is a better extension language for speed optimization for python c or c++

最好使用c或c ++处理python程序中的计算密集型任务,而速度最重要。 两者之间有很大区别吗? 哪个更清洁?

好吧,C ++应该是C的超集。因此,您可以用C ++编写C程序,并获得相同的速度。 这实际上取决于您需要完成什么。

如果不需要C ++的任何功能(OOP,模板,异常等),那么C应该没问题。

当然,如果您已经很熟悉使用Python编写代码,并且还需要更大的吸引力 ,那么您应该给Cython看一下。

两者都被编译为本地代码,并且通常使用相同的编译器,因此可以使用相同的编译器优化。 您为支持C ++语言构造而付出的性能差异应该可以忽略不计。 选择一个您喜欢的/与Python集成更好的一个/与您要使用的其他本​​机库更好的一个。

通过使用C ++和C获得的运行时性能可以忽略不计。 就将代码与Python程序(和大多数其他语言)集成而言,使用C几乎总是更容易。实际上,如果您正在使用ctypes加载和运行代码(我建议这样做),您仍然需要围绕C ++库编写一个C接口。

如果使用SWIG ,则很容易生成C ++包装器。

与CPython的交互全部使用CPython C API完成 ,可以从C ++完全访问它(是的!)。 过去,当我完成一些SWIG编程时,我在“ normal C”中执行了实际代码,然后仅通过生成的SWIG类包装了访问权限-这只是我发现的简单方法:)

至于“性能”:

  1. 支持好的算法,合适的数据结构和简洁的设计。
  2. 让它正常工作,进行基准测试,直到这时 -即使是重要的-还要担心这3%。 (这可能意味着根本不使用C / C ++编写它!而且,对于功能要求严格的应用程序,可能需要首先进行基准测试,以测试其可行性。)
  3. 调用扩展方法可能相对昂贵 它可能并不总是合理的。
  4. “没关系” -C和C ++都有无数的高性能应用程序/游戏/库。 也就是说,选择一个并不会固有地“限制性能” :)

(我发现CPython扩展模块的最大优势之一是能够发布 GIL,从而能够拥有真正的线程代码-当然,[Python] CPython C API通常只能在获取GIL后安全地访问。 )

快乐的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM