好吧,我不知道我是否想把它叫做“缓冲区”,你只是用两种复杂的方法把一个字符串乘以100。这里有一个简单的方法:def meth3(string):
return string * 100
如果我们将其添加到您的测试中:if __name__ == '__main__':
from timeit import Timer
string = "This is test string"
# Make sure it all does the same:
assert(meth1(string) == meth3(string))
assert(meth2(string) == meth3(string))
print(Timer("meth1(string)", "from __main__ import meth1, string").timeit())
print(Timer("meth2(string)", "from __main__ import meth2, string").timeit())
print(Timer("meth3(string)", "from __main__ import meth3, string").timeit())
结果证明,这是一种更快的奖励:21.0300650597
22.4869811535
0.811429977417
如果要创建一组字符串,然后将它们连接起来,meth1()是正确的方法。把它写到StringIO是没有意义的,这是完全不同的,即一个具有类似文件的流接口的字符串。