为什么Python 比 PHP 更有效率?(不考虑人的主观因素,如编程风格和架构设计等)

WBOY
풀어 주다: 2016-06-17 08:32:49
원래의
1137명이 탐색했습니다.

是不是好比C比Java更有效率一样?是两种语言最初底层设计不一样的缘故吗?

回复内容:

效率是开发效率还是运行效率?
如果是运行效率,我觉得这句话首先就应该加一个前提:在使用复杂框架的情况下。我认为没有这个前提这句话就不成立。
PHP 一开始就为 Web 开发而设计,同时面向的使用者是广泛群体,所以入门简单,运行时环境设计也简单,甚至垃圾回收机制也是求简设计的。众所周知,一个 PHP 脚本的完整生命周期就是从一个请求开始,到该请求结束。这导致了全局性质的复用机制不可用,例如前端控制器模式(Front Controller)是现在很多 Web 框架都会采用的模式,但 PHP 中使用就会导致每次请求都要初始化一个庞大的框架的问题。而在 Python 中,即使是 Django 这样的大型框架,本身框架只需要一个进程初始化一次,随后就可以处理多次请求。我个人认为这一点是用了框架之后不少 PHP 应用性能会比 Python 应用要差。
如果说拿 C 和 Java 比,我反而觉得 PHP 和 Python 之间不是这种关系。二者都是解释型语言,二者都可以缓存字节码(PHP 需要通过 APC 扩展,保存在共享内存;Python 需要文件所在目录可写,保存为 pyc 文件),唯一有点差距的可能是 Python 的垃圾回收机制更强大,这点也可以理解,因为 Python 不像 PHP 一样为短生命周期的运行设计,内存无法及时释放是难以忍受的。所以如果一定要套 C 和 Java 的关系,我觉得 PHP 才对应到 C,Python 对应到 Java,因为后者还需要为更复杂的垃圾回收付出额外开销。
另外,在一些特殊前提下,PHP 和 Python 做出的 Web 应用的性能差距还会非常大。比如在使用 tornado 一类通过 epoll 实现异步的框架,可以承受高并发、做低耗的长连接等,这点 PHP 还很难模仿,其原因在于 PHP 更像是一个人人可用的套餐,封装好了一套操作(内置函数等),但并没有提供系统编程的途径。
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿