【发布时间】:2011-11-09 09:37:23
【问题描述】:
我有以下代码,我在我的应用程序中执行了大约 200 万次来解析这么多记录。这部分似乎是瓶颈,我想知道是否有人可以通过提出一些可以使这些简单的字符串操作更快的技巧来帮助我。
try:
data = []
start = 0
end = 0
for info in self.Columns():
end = start + (info.columnLength)
slice = line[start:end]
if slice == '' or len(slice) != info.columnLength:
raise 'Wrong Input'
if info.hasSignage:
if(slice[0:1].strip() != '+' and slice[0:1].strip() != '-'):
raise 'Wrong Input'
if not info.skipColumn:
data.append(slice)
start = end
parsedLine = data
except:
parsedLine = False
【问题讨论】:
-
codereview.stackexchange.com 可能更适合此类问题。
-
也许你可以发布一个完整的、可运行的性能测试供人们运行。
-
字符串异常已经被弃用很多很多年了——总是提出一个
Exception子类来代替。它们似乎不再起作用的唯一原因是它们错了,因此引发了错误。 -
Bare
except:几乎总是错误的,这会导致令人沮丧的、无法追踪的错误。如果您只想捕获raise "Wrong Input",那么您要做的就是定义class InvalidInputError(Exception):pass,然后定义except InvalidInputError:。 -
@Mike Graham:甚至比
pass的类主体更好的是文档字符串。
标签: python string performance