假设我有以下课程:
import numpy as np
class ToStringify():
DEMARCATION = "::::"
def __init__(self):
self.first_np_array = np.random.rand(30, 30, 30)
self.second_np_array = np.random.rand(30, 30, 30)
self.some_string = "string"
self.some_int = 5
def to_str_format(self) -> str:
entries = [
self.first_np_array, self.second_np_array, self.some_string, self.some_int
]
return f"{self.DEMARCATION}".join([str(entry) for entry in entries])
我已经分析了我的代码,to_str_format
占用了我总程序运行时间的25%。不幸的是,to_str_format
需要输出一个字符串(无论我选择什么界限),该字符串将在一些我无法更改的管道中进一步使用。我正在做一个列表理解,试图加快事情,但除此之外,我不知道我还能做什么(如果有的话)。我正在使用python 3.9,如果这有什么变化的话
您必须再次分析,以验证这些建议中的任何一个是否产生了足够大的影响,但快速的非正式测试显示可能有10-15%的改进,因此可能会有所帮助
首先,这是:
不需要}
[
{join()
可以使用生成器表达式,因此列表理解只会增加创建(可能较大)对象的开销。因此:可能会快一点(大约5%)。比这还要快(约10%)的是:
第二个是f字串。如果您根本不修改或更改
DEMARCATION
的表示形式,这就足够了:这避免了处理f字符串的开销。总之,这可能是最有效的形式:
另外一件事是
entries
列表。如果多次调用to_str_format()
,并且entries
从未更改(即,它始终是这4个对象的列表),则最好在其他位置(例如实例或类属性)设置一次。将其创建为元组而不是列表可能会稍微快一点相关问题 更多 >
编程相关推荐