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

时间:2011-11-03 00:36:57

标签: c++ python c

使用c或c ++来处理python程序中的计算密集型任务会更好,其中速度至关重要。这两者之间有很大的不同吗?哪个更干净?

4 个答案:

答案 0 :(得分:1)

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

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

当然,如果您已经习惯使用Python编写,并且需要更多功能,那么您应该看一下Cython

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用C ++与C获得的运行时性能可以忽略不计。在将代码与Python程序(以及大多数其他语言)集成方面,使用C几乎总是更容易。事实上,如果你使用ctypes加载和运行代码(我推荐),你仍然需要在C ++库周围编写一个C接口。

答案 3 :(得分:0)

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

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

就“表现”而言:

  1. 赞成良好的算法,适当的数据结构和简洁的设计。
  2. 让它工作,基准测试,只有然后 - 如果它甚至重要 - 担心3%。 (这可能意味着根本不用C / C ++编写它!此外,对于具有严格功能要求的应用程序来说,可能需要首先进行基准测试以测试可行性。)
  3. 调用扩展方法可能相对昂贵;它可能并不总是合理的。
  4. “这无所谓” - C和C ++都有无数的高性能应用程序/游戏/库。也就是说,选择一个并不固有地“限制性能”:)
  5. (我发现CPython扩展模块的最大优势之一是能够发布 GIL,从而能够拥有真正的线程代码 - 当然,CPython C API可以[一般]只有在获得GIL时才能安全访问。)

    快乐的代码。