CPython和IronPython的多线程性能测试

标签:Python, 性能

IronPython由于去掉了GIL,使用原生线程,所以应该会比CPython快些,更能发挥多核CPU的作用,于是我进行了这次测试。

测试内容是计算小于5千万的自然数的和,CPython使用2.5.4版,IronPython使用2.6版,CPU为Inter Core2 Duo T9400 @ 2.53GHz。

单线程算法:
from time import clock
from threading import Thread

N = 5000000
t = clock()
print sum(xrange(N * 10))
print clock() - t
测试结果:
CPython:6.007
IronPython:5.887
CPU占用率都是50%,IronPython稍快一点,但较长的启动时间没有计算在内。

10个线程的算法:
from time import clock
from threading import Thread

N = 5000000

result = []

def f(start, stop):
  result.append(sum(xrange(start, stop)))

threads = [Thread(target=f, args=(i * N, (i + 1) * N)) for i in xrange(10)]

t = clock()

for thread in threads:
  thread.start()

for thread in threads:
  thread.join()

print clock() - t
print sum(result)
测试结果:
CPython:6.006
IronPython:4.428
CPython的CPU占用率是50%,不考虑误差的话,成绩基本不变。IronPython的CPU占用率顶峰时到了将近90%,成绩提高了33%。

从测试结果可以看出,IronPython的多线程能力确实要比CPython强。

1条评论 你不来一发么↓ 顺序排列 倒序排列

    向下滚动可载入更多评论,或者点这里禁止自动加载

    想说点什么呢?