ubuntu 14.04 上的多线程 cstringio 慢了 17%
multi threaded cstringio is 17% slower on ubuntu 14.04
我是运行以下程序:
import cStringIO
import time
import threading
def func(tid):
buff = 'a'*4096
i = 0
while (i < 40000000):
output = cStringIO.StringIO()
output.write(buff)
contents = output.getvalue()
output.close()
i = i + 1
threads = 16
threadlist = []
start = time.time()
for tc in range(threads):
thr = threading.Thread(target=func, args=(tc,))
threadlist.append(thr)
thr.start()
for thr in threadlist:
thr.join()
end = time.time()
print "Time taken is %s" % (end - start)
在硬件完全相同的机器上,但是一个 运行 ubuntu 10.04 和另一个 运行 14.04。我观察到它在 10.04 上花费了 1409.54 秒,而在 14.04 上花费了 1656.81 秒,显示 14.04 上的性能下降了 17%。有什么想法吗?
此行为是由于 14.04 上的超线程所致。有趣的是,在我的 2 核机器上禁用超线程后(在单个超线程上有效 运行),14.04 的性能与 10.04 相当。
我是运行以下程序:
import cStringIO
import time
import threading
def func(tid):
buff = 'a'*4096
i = 0
while (i < 40000000):
output = cStringIO.StringIO()
output.write(buff)
contents = output.getvalue()
output.close()
i = i + 1
threads = 16
threadlist = []
start = time.time()
for tc in range(threads):
thr = threading.Thread(target=func, args=(tc,))
threadlist.append(thr)
thr.start()
for thr in threadlist:
thr.join()
end = time.time()
print "Time taken is %s" % (end - start)
在硬件完全相同的机器上,但是一个 运行 ubuntu 10.04 和另一个 运行 14.04。我观察到它在 10.04 上花费了 1409.54 秒,而在 14.04 上花费了 1656.81 秒,显示 14.04 上的性能下降了 17%。有什么想法吗?
此行为是由于 14.04 上的超线程所致。有趣的是,在我的 2 核机器上禁用超线程后(在单个超线程上有效 运行),14.04 的性能与 10.04 相当。