Python和C之间的性能差异
在不同的项目中工作,只要任务完成,我就可以选择不同的编程语言 我想知道,在性能方面,用Python编写程序与用C编写程序的真正区别是什么 要完成的任务多种多样,例如排序文本文件、磁盘访问、网络访问、文本文件解析 例如,在C语言中使用相同的算法对文本文件进行排序与在Python中使用相同的算法进行排序是否真的有明显的区别Python和C之间的性能差异,python,c,performance,Python,C,Performance,在不同的项目中工作,只要任务完成,我就可以选择不同的编程语言 我想知道,在性能方面,用Python编写程序与用C编写程序的真正区别是什么 要完成的任务多种多样,例如排序文本文件、磁盘访问、网络访问、文本文件解析 例如,在C语言中使用相同的算法对文本文件进行排序与在Python中使用相同的算法进行排序是否真的有明显的区别 根据您的经验,考虑到当前CPU(i7)的强大功能,这真的是一个明显的区别吗(考虑到它是一个不会让系统屈服的程序)。一般来说,IO绑定的工作更多地取决于算法,而不是语言。在本例中,
根据您的经验,考虑到当前CPU(i7)的强大功能,这真的是一个明显的区别吗(考虑到它是一个不会让系统屈服的程序)。一般来说,IO绑定的工作更多地取决于算法,而不是语言。在本例中,我将使用Python,因为它将具有一流的字符串和许多易于使用的库来操作文件,等等 例如,在C语言中使用相同的算法对文本文件进行排序与在Python中使用相同的算法进行排序是否真的有明显的区别 对 值得注意的区别是
#包括三明治,并且使.h
文件正确无误非常耗时
使用python直到出现性能问题。如果你曾经有过一次机会,你会发现问题是什么(通常不是你事先猜到的)。然后解决可能是算法或数据结构更改的特定性能问题。如果你的问题确实需要C语言,那么你可以用C语言编写这一部分,并从python代码中使用它。计算机性能问题的第一条规则:你的里程数会有所不同。如果小的性能差异对您很重要,那么获得有效信息的唯一方法就是使用配置、数据和基准测试。比如说,这里的“小”是两个左右的因子 计算机性能问题的第二条规则:对于大多数应用程序来说,性能并不重要——编写应用程序的最简单方法可以提供足够的性能,即使当问题扩大时也是如此。如果是这样的话(通常也是这样),不要担心性能 也就是说:
- C编译为机器可执行文件,因此有可能执行速度至少与任何其他语言一样快
- Python通常是解释的,因此可能比编译语言占用更多的CPU
- 很少有应用程序是“CPU受限”的。I/O(到磁盘、显示器或内存)不受编译或解释考虑因素的影响,通常是花在应用程序上的计算机时间的主要部分
- Python比C具有更高的抽象级别,因此您的开发和调试时间可能更短
是的,有时你可能需要放弃工作,重新开始,以获得所需的绩效。但拥有一个运行(尽管速度较慢)的应用程序版本将大大有助于取得进展。当你达到并征服了这个性能目标时,你将用SO来回答性能问题,而不是问它们。如果你正在排序和解析的文本文件很大,请使用C。如果它们不是,则无所谓。不过,您可以用任何语言编写糟糕的代码。我见过C中计算三角形面积的简单代码运行速度比其他C代码慢10倍,这是因为内存管理差、使用结构、指针等
I/O算法应该独立于计算算法。如果是这样的话,那么使用C作为计算算法会快得多。C绝对会在几乎所有性能类别中击败Python,但C编写和维护起来要困难得多,而且高性能并不总是值得在增加的时间和开发难度之间进行权衡 你说你在做文本文件处理之类的事情,但你忽略了你在做多少文本文件处理。如果您每小时处理1000万个文件,您可能会受益于用C编写它。但是如果您每小时处理100个文件,为什么不使用python呢?你真的需要在10毫秒和50毫秒内处理一个文本文件吗?如果你在为未来做计划,问问自己,“这是我以后可以投入更多硬件的事情吗?”
用C编写可靠的代码是很难的。请确保您可以证明在这方面的投资是合理的。这在很大程度上取决于您所做的工作,以及所讨论的算法是否在Python中通过本机编译的库可用。如果是的话,那么我相信您将仔细查看性能数据,Python很可能是您的答案——假设它是您的首选语言。如果必须自己实现算法,则根据所需的逻辑量和数据集的大小,C/C++可能是更好的选择。如果没有更多的信息,很难给出一个不那么模糊的答案。(假设-这个问题意味着作者熟悉C语言,但不熟悉Python,因此我将以我的答案为基础