写者要从oracle数据库导出一些长文本字段的数据,但效率不是太高,导出十多条数据需要2-3分钟,所以想对脚本进行一下性能分析,看脚本导出慢在了哪里,生成的图像文件如下

最后发现时间都花在了oracle查询fetchall函数上,所以后面是因为查询的sql没有使用索引的字段去查,会很慢,使用索引的字段去查,效率提升了 十几倍

这里使用的是 gprof2dot, 可以看到调用次数, 占用时间和百分比信息的图像,比较直观

安装

  • mac
1
brew install gprof2dot
  • Debian/Ubuntu users
    1
    apt-get install graphviz

生成图像文件

1
2
python3 -m cProfile -o output.pstat test.py
gprof2dot -f pstats output.pstat | dot -Tpng -o output.png

执行完,在脚本的目录就会生成图像文件了