当当网网站建设步骤,美食网站策划书范文,展示网站开发 大概多少钱,做网站为什么要租服务器为什么在某些情况下,Python 3中的连接似乎比Python 2中的连接慢#xff1f;
影响最大的串联方法似乎是字节对象的连续串联,从O(n)到O(n?)操作.
我的分析代码大部分在这里#xff1a;
#!/usr/bin/env python
from operator import concat
from sys import version, version_i…为什么在某些情况下,Python 3中的连接似乎比Python 2中的连接慢
影响最大的串联方法似乎是字节对象的连续串联,从O(n)到O(n?)操作.
我的分析代码大部分在这里
#!/usr/bin/env python
from operator import concat
from sys import version, version_info
from timeit import timeit # Compatibility: ver 2.6
# ver version.partition(
)[0].rstrip()
ver ..join(str(v) for v in version_info[:3])
print(ver)
if version_info[0] 2:
from StringIO import StringIO
else:
from io import StringIO
from functools import reduce
xrange range
def build_plus():
output
for _ in xrange(input_len):
output a
return output
def build_join():
return .join(a for _ in xrange(input_len))
def build_bytes_plus():
output b
for _ in xrange(input_len):
output ba
return output
def build_stringio():
output StringIO()
for _ in xrange(input_len):
output.write(a)
return output.getvalue()
def build_reduce():
return reduce(concat, (a for _ in xrange(input_len)))
builds {str: build_plus,
join: build_join,
reduce: build_reduce,
bytes: build_bytes_plus,
StringIO: build_stringio}
if version_info[0] 2:
import cStringIO
def build_cstringio():
output cStringIO.StringIO()
for _ in xrange(input_len):
output.write(a)
return output.getvalue()
builds[cStringIO] build_cstringio
else:
from io import BytesIO
def build_bytesio():
output BytesIO()
for _ in xrange(input_len):
output.write(ba)
return output.getvalue()
builds[BytesIO] build_bytesio
resfile open(times.csv, a)
size_range 50 # Number of points over the size axis
min_order 1.0 # 10^x byte input min
max_order 5.0 # 10^x byte input max
for allow_gc in (False, True):
setup gc.enable() if allow_gc else pass
for build_name, build_fun in builds.items():
# For a roughly constant confidence interval, aim for uniform sample density across the
# (logarithmic) input size axis.
for size_index in range(size_range1):
input_len int(10**((max_order-min_order)*size_index/size_range min_order))
# Rather than repeating many measurements at one input size, perform one measurement
# per input size for a continuous range of input sizes and apply smoothing later.
dur timeit(build_fun, setup, number1)
resfile.write(%s,%s,%s,%d,%.6g% (ver, str(allow_gc).upper(), build_name,
input_len, dur))
我的R脚本中的一些图形如下所示