php python 性能_python为何效率慢点?PHP跟Python的解释器都是C写的,PHP为什么能快点?...

python并不一定慢,许多Python的科学计算库通过用C来编写可以获得和全用c或者c++写的程序相同或者慢一到两倍的体验。

很多人认为他慢。他其实也确实慢。

一是GIL,其实GIL也只是CPython python解释器的特性,其主要是在多核机器上python无法获得多核所带来的性能优势。单核其实就差不多了。

楼下起风了不认可。首先大多数Python程序都是运行在CPython上的。无数用c语言为Python编写的好的库也是只能运行在cpyhon上的。所以GIL是大多数Python程序绕不开的东西。你说多进程可以解决。但是这也导致了一个问题就是进程间的数据共享问题。因为不在一个进程中共享内存空间这种高效的共享方式不能使用(当然GIL也是为了处理多线程共享内存所带来的风险而设置的。)这样你多线程间通信也会带来性能的损耗。当然你说可以通过多线程解决也没错,但是也不能说GIL不是导致大多数python慢的原因。

二是python是一门解释形语言,其是边运行边将python字节码编译成系统可以执行的可执行代码。这会带来一定的性能损耗,但是一个程序的快慢主要还是由其热点部分决定。通过将热点部分使用C语言编写,基本就可以获得很好的性能。

楼下起风了说python运行一次后编码就完成了。我想他可能没有理解解释型语言的编译。 Python在运行前编译好的文件是Python字节码。如果没有Python虚拟机是不能运行的。当在运行的时候Python虚拟机又吧Python字节码翻译成可以被CPU执行的二进制字节码。而像C语言这种是直接编译连接就可以生成直接被机器执行的二进制码。

其实对于大型应用影响其性能的首先是架构其次是程序编写逻辑然后是语言特性。大部分系统瓶颈都输数据库读取。加个redis缓存就可以获得不错的性能提升。 ins还不是用django撑起了全球最大图片分享网站。

手机打的错别字可能多一点??

import time

calNum = 100000000

def test():

sum = 0

for x in range(1, calNum + 1):

sum += x

return sum

def test1():

sum = 0

for x in xrange(1, calNum + 1):

sum += x

return sum

def test2(mylist):

sum = 0

for x in mylist:

sum += x

return sum

def test3():

sum = 0

i = 0

while i < calNum:

sum += i

i += 1

return sum

start = time.time()

test()

end = time.time()

print 'test time: {0}'.format(str(end-start))

start = time.time()

test1()

end = time.time()

print 'test1 time: {0}'.format(str(end-start))

mylist = range(1, calNum + 1)

start = time.time()

test2(mylist)

end = time.time()

print 'test2 time: {0}'.format(str(end-start))

start = time.time()

test3()

end = time.time()

print 'test3 time: {0}'.format(str(end-start))

四种不同的写法

test time: 7.10620498657

test1 time: 4.30882191658

test2 time: 4.70718193054

test3 time: 8.60779190063

四种不同的写法 获得时间也不同。 我之后再写一个链接了c语言库的实例补上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值