Python学习系列之性能优化问题总结

性能优化与底层实现       

       在实际的工程环节都会围绕整体的业务逻辑问题,很少去了解底层的原理。但是我们一旦涉及到性能和效率的优化,就会涉及到编译器,部署环境,编程语言等的底层实现和技术细节。下面就从Python语言的特征与分析可能导致的性能问题及优化问题。

一、可变类型导致的性能问题

(1)拼接字符串问题

string_build = ""
for data in container:
    string_build += str(data)

实际上,这段代码效率是非常低下的,字符串是不可变对象类型,当拼接两个字符串的时候,会创建第三个字符串,迭代次数过多或者数据量很大的字符串合并,就会在创建第三个字符串的时候浪费掉很多的内存空间,不仅如此,在迭代最后一次,为最后的结果还会开辟更大的空间来存储,实在是太浪费。因为str是不可变类型。

类似于Java中拼接字符串用StringBuilder,不能用String。

下面是更加有效和哲学(pythonic)的方式:利用可变类型的特点实现。

builder_list = []
for data in container:
    builder_list.append(str(data))
"".join(builder_list)
 
### 另一种使用list实现的方法
"".join([str(data) for data in container])
 
### 或者使用map函数
"".join(map(str, container))

上面的代码,就充分利用了可变对象特点,当数据要更新的时候,不开辟新的空间,而是在原先的空间上增加,大大减少了空间的使用,提高了代码执行的效率。


本文努力持续更新中。。。

猜你喜欢

转载自blog.csdn.net/answer3lin/article/details/86487507