2024-09-28 01:28:25 发布
网友
我举一个简单的例子:
def __init__(self,string): self.string = string def UI32(self): tmp = self.string[:4] self.string = self.string[4:] return unpack(">I",tmp)[0] data = file.read() U = UI(data) for i in range(60000): test = UI32()
总时间:22秒!在
首先,我不能在我的系统上复制22(Intel Nehalem,64位Ubuntu,Python2.6.5)。在
以下内容需要1.4s(这实际上是您的代码,由我填写一些空格):
import struct class UI(object): def __init__(self,string): self.string = string def UI32(self): tmp = self.string[:4] self.string = self.string[4:] return struct.unpack(">I",tmp)[0] U = UI('0' * 240000) for i in range(60000): test = U.UI32()
现在,这里有几个明显的低效率,特别是在self.string附近。在
self.string
我把你的代码改写成这样:
在同一台机器上,现在需要0.025s。在
60000循环循环的每次迭代都要复制整个内存缓冲区:
self.string = self.string[4:]
简单地使用索引遍历字符串并在最后清除变量会更有效。在
首先,我不能在我的系统上复制22(Intel Nehalem,64位Ubuntu,Python2.6.5)。在
以下内容需要1.4s(这实际上是您的代码,由我填写一些空格):
现在,这里有几个明显的低效率,特别是在
self.string
附近。在我把你的代码改写成这样:
^{pr2}$在同一台机器上,现在需要0.025s。在
60000循环循环的每次迭代都要复制整个内存缓冲区:
简单地使用索引遍历字符串并在最后清除变量会更有效。在
相关问题 更多 >
编程相关推荐