硬件提升使程序员失去了对代码质量的追求

大数据清洗炸出来的菜鸟

最近的一个项目是 大数据清洗 ,因为时间和空间问题,客户不满意,让我来优化下。

空间

经常性内存出错异常退出,这是一个云平台加工,调试非常繁琐,在本地的正常的代码在云端频繁出错。
考虑到本地机器与云内存不同,且系统不同,改进如下:

  1. 文件先获取到磁盘再操作,而不是在内存中直接打开;
  2. 几乎所有代码print时间和内存占用,针对出错操作进行优化;
  3. 重新定义数据类型;
  4. 分歧处理先保存为文件而不是内存副本;

时间

十万行数据处理(有复杂的统计类)耗时40分钟。据客户说,拿样品运行真实数据4000万条,跑了一天没结束。。。

  1. 集计前赋值;
  2. 先分组再集计;

结果:35万数据处理耗时2分钟

结束了吗?并没有

依瓢画葫芦

菜鸟拿到我的代码后,照猫画虎写了其他处理,然后超时了。
35万行数据的超时设定是60分钟。
让他们找出程序卡在哪一步,最后发现是两个嵌套的for。
35万*35万=122,5万万=1225亿。。。

问题关键

有两组数据,需要根据两组数据中的两个关键字进行匹配,找出不相关的数据。
他们叫上我一起开会,讨论各种优化算法:先排序,从一边开始匹配,直到没有匹配,再换另一边开始。。。怎么听怎么复杂

解决

趁他们讨论得不可开交,我已经把方案做出来,且测试只要2分钟。
方案很简单,生成两组临时数据,一组只包含index和2个关键字,另一组还包含一个非空值。然后把它们进行一个左连接,这样没有值匹配的内容就是空值,找出空值的index就是不相关数据。

收工

总结

硬件提升,一些劣质的代码也可以非常顺畅地运行,导致新人不再节衣缩食,对代码质量没有了追求。
一旦遇到大量的处理,很可能就无法招架。

硬件的提升是为了处理更多的数据,而为了处理更多的数据,需要更小心地处理每个细节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值