最近,总琢磨一件事儿,就是这个“为什么”。有时候,咱吭哧吭哧忙活半天,累得跟啥似的,结果?好像啥也没改变,或者说,那效果完全对不起咱付出的汗水。我就亲身经历过这么一段。
记得那是前段时间,我琢磨着把我手头的一个小项目,就是自己写着玩的一个小程序,给优化一下。当时是觉得它跑起来有点慢,用户体验不我就一头扎进去,心想,这还能难倒我?
一头猛扎的瞎忙活阶段
我真是铆足劲。我做些啥?
- 疯狂看代码: 逐行逐行地捋,哪个变量名取得不哪个函数写得啰嗦,改!哪个循环看起来能优化,调!
- 到处找资料: 翻好多技术文章,看人家是怎么优化的,什么算法牛,什么技巧感觉学不少新东西。
- 反复测试: 改一点,测一下,看看速度快没。有时候快一丁点,高兴半天;有时候反而更慢,或者直接出错,就特别沮丧。
那段时间,我真是天天对着电脑屏幕,眼睛都快看花。晚上睡觉脑子里都是代码,吃饭的时候还在琢磨哪个地方能再改改。家里人都说我这是走火入魔。我觉得自己努力到不行,就差感动自己。
结果?闹心!
可结果?前前后后折腾差不多两个礼拜,效果微乎其微。程序是跑起来快那么一点点,但真的就是“一点点”,不仔细对比都感觉不出来。而且为这点提升,代码被我改得面目全非,加一堆看似高深实际上没啥大用的技巧,反而增加以后维护的难度。我当时就特别纳闷,为什么? 我明明这么努力,付出这么多时间和精力,怎么结果就这么个玩意儿?
静下心来找原因
后来有一天,我也是实在搞不动,就停下来没再继续。泡杯茶,坐在窗边发呆。我就开始反思,是不是我一开始的方向就错?
我重新审视那个程序。我问自己:它到底慢在哪儿? 是计算太复杂?还是数据读写有问题?或者是网络请求太慢?之前我光顾着在代码细枝末节上抠,却没真正去定位那个最关键的“瓶颈”。
我就换个思路。不再是闷头改代码,而是先用些简单的工具,去分析程序运行时候各个部分的耗时。这么一测,好家伙,问题一下子就清楚!原来是某个第三方库的一个函数调用特别耗时,几乎占整个运行时间的百分之八十!
找到问题根源后,解决起来就快多。我针对性地去找那个库的替代方案,或者看看有没有办法绕过那个低效的函数。很快,我就找到一个更高效的库,替换掉原来的部分。再一跑,嚯!那速度,嗖嗖的,跟之前完全两个样!整个过程,真正花在修改上的时间,可能还不到半天。
一点感悟
这回经历让我明白一个道理:光埋头努力,有时候真的没用,甚至会起反作用。 方向错,你越使劲,可能偏离目标越远。就像我想优化程序,一开始没找准性能瓶颈,就在那些不痛不痒的地方瞎折腾,花大力气,效果自然差。
干啥事儿之前,或者感觉自己努力没效果的时候,不妨先停下来想一想,问问自己这个“为什么”。
- 我的目标是明确不?
- 我现在做的事情,是朝着目标去的吗?
- 有没有更直接、更有效的方法?是不是找对路子?
搞清楚这些,找对方向,再发力,往往能事半功倍。不然,真的就成没头苍蝇瞎撞,除感动自己,没啥实际意义。这算是我最近实践得出的,一点小小的体会。
还没有评论,来说两句吧...