在尝试SAX解析的过程中,开始按照习惯的方式,对XML文件中筛选的可用字段进行字符串相加,导致的后果是程序运行特别的慢,于是又尝试了cStringIO内存文件,这才感受到了内存文件的速度优势。

下面列出其中的关键字段以作对比。

  • 使用字符串相加方式(s为定义的字符串变量):



  • 使用cStringIO内存文件方式(output为定义的cStringIO变量):



 

对于一个相同的.xml.gz文件,文件总行数为173890行,其中有用数据为90079行。实测结果如下:

可以看到,在应用了内存文件后,程序的处理性能有了翻天覆地的变化,处理耗时为前者的将近千分之一,赞!!!

 

最近又尝试修改字符串连接为list-join方式,代码如下:

  • 使用list-join方式(lst为定义的list变量):



对于一个相同的.xml.gz文件,文件总行数为173890行,其中有用数据为90079行。实测结果如下:

python将string写入bin文件_数据库

可以看到,在应用了list-join方式后,处理用时和StringIO方式相当,说明利用list-join方式也能够带来和StringIO相同的性能提升。