【问题标题】:Can Python ever be faster than C in C based OS? Why? [closed]在基于 C 的操作系统中,Python 能比 C 更快吗?为什么? [关闭]
【发布时间】:2021-07-10 19:23:07
【问题描述】:

如果 Python 是基于 C 编写的,那么 Python 能否超越 C? 我知道下一阶段是汇编,二进制文件与操作系统和硬件通信时。我有两个假设,因为大多数操作系统都是用 C 编码的,那么如果任何代码都可以在该操作系统之上运行,那么 Python 不可能更快。

【问题讨论】:

  • 操作系统是用 C 编写的这一事实与此无关。
  • 我认为你很难让 python 比 C 运行得更快。
  • 如果 C 程序写得不好,我可以看到 Python 程序如何更快。
  • Python 解释器是否用 C 编码也没关系。 C(和 Python)正在图灵完备。
  • @klutt:Python 实现是用 C 编码的这一事实意味着,在该 Python 实现中实现的任何算法至少可以在 C 中以同样快的速度实现,因此 Python 只能通过比较Python 中的良好算法实现到次优的 C 实现。图灵完备性无关紧要。

标签: c performance assembly architecture operating-system


【解决方案1】:

在所有条件相同的情况下,在解释器中运行的代码将比在本机运行的代码执行得更慢。然而,事情很少是平等的,虽然我想不出一个临时的例子,但如果在某些情况下 Python 解决方案可以比基于 C 的解决方案执行得更快,我不会感到惊讶(它可能非常深奥,不过)。

除此之外,原始执行速度只是一个指标,并不是最重要的。不管你的代码有多快,如果它做错事,或者如果有人打喷嚏,核对服务器,或者你的系统暴露于恶意软件,或者你需要一年的时间来提供解决方案,都无关紧要。

Python 提供了一堆 C 不提供的高级抽象和工具,从而缩短了开发时间(这正是成本的真正所在)。您不必(尽可能多地)担心内存泄漏、缓冲区溢出等问题。

没有灵丹妙药,也没有语言是最好的。有时基于 C 的解决方案是正确答案,有时基于 Python 的解决方案是正确答案。

【讨论】:

  • 很好的答案!!!
  • 另一种说法是,如果您可以编写 Python 程序并在比编写 C 程序并无错误地编译它的时间更短的时间内运行它,那么它可能会更快。
  • 如果你的 C 程序使用简单的算法,比如在大型数组上使用手写的插入排序而不是库排序,或者手动低效的数据结构/算法而不是 Python 哈希表,那么 Python 会更快.或者其他可怕的事情,比如一次手动调用read 1 个字符,而不是使用使事情变得更容易的 I/O 库。为了更好地衡量,编译你的 C 并禁用优化。 (以及来自Deoptimizing a program for the pipeline in Intel Sandybridge-family CPUs 的其他无能措施:P)
  • 由于高级语言(甚至 C++)提供了更容易访问良好的固定算法,人们更有可能使用它们而不是(在 C 中)滚动他们自己的一些可能涉及双重的简单想法或三重嵌套循环(例如,为另一个数组的每个元素遍历一个数组)。所以是的,编写慢速 C 语言是完全有可能的,特别是如果你想通过花时间寻找好的算法和它们的实现来尝试与 Python 的代码编写速度竞争。
猜你喜欢
  • 2010-10-22
  • 2012-11-30
  • 2013-06-12
  • 2019-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
相关资源
最近更新 更多