想清楚了再行动

前段时间修改软件,解析后的网络数据需要排序后再进行输出。

软件功能修改完成之后,进行了一下测试。发现同样大小的一个文件,整个解析过程比原来长了两三倍,性能下降的太厉害。

究竟是哪里出了问题呢?究竟那部分代码这么耗费时间呢?

我仔细分析了一下代码的改动,总共有三个地方,分别是数据解析过程,文件块块内排序过程和输出结果时的整体排序。

于是,问题的排查思路就出来了。给这三个过程都加上计时,来检查时间究竟消耗在什么地方。

但即便有了思路,另外一个问题又出现了。数据的解析过程用到了mapreduce架构,直接进行计时输出是没办法输出到控制台的。于是我又写代码,把计时的结果存到文件。

经过排查,最终发现,时间消耗在文件块块内排序的过程。这里的排序我使用的是冒泡排序算法。经过对数据特点的分析,重新实现了排序的过程,终于把时间降到了之前的水平。

这次问题的解决,只花费了一个多小时的时间,非常有效。事后复盘整个问题排查的过程,发现这么高的效率,得益于在修改问题之前,对问题的精确定位。而对问题的精确的快速的定位,依赖的是对问题的分析。在动手解决问题之前,想清楚了整个过程,所以解决问题的时候效率很高。

反过来想想,如果当时没有仔细分析整个问题,而是看看这里改改那里,通过猜测和尝试来修改问题,那么肯定会花费更多的时间。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容