想清楚了再行动

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

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

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

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

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

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

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

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

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

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

推荐阅读更多精彩内容

  • 说起团购,以前还认识一位老板,当时正是团购如火如荼的时候,他们自己搞了一个,然后让员工自己上去团刷单。比如说团鞋子...
    kafkaliu阅读 1,501评论 0 1
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,633评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,473评论 19 139
  • 史蒂芬·库里,2009年选秀第一轮第七顺位球员, 如今却已是勇士队当家球星,是一名蝉联常规赛MVP的投射型球员,是...
    陈晖篮球阅读 3,130评论 0 0
  • 在黑暗的地方 阳光照不到的地方 没有一点希望和光亮的地方 人们都想努力往上爬 有些人为了能换副体面的皮囊生存 与社...
    黄沁馨阅读 9,680评论 0 4