为了账号安全,请及时绑定邮箱和手机立即绑定

过度优化循环:性能优化的坑别跳了

过于优化的循环让眼睛感到不适

TL;DR:没有明确需求和具体证据,不要随意优化循环

存在的问题

  • 比如过早优化
  • 代码难以阅读
  • 代码变得更复杂
  • 维护起来比较麻烦
  • 调试效率降低
解决办法
  1. 保持简洁
  2. 优先考虑清晰
  3. 避免过早修改
  4. 适时重构
上下文

你可能会认为优化每个循环都能提高性能,但当你为了未经验证的性能提升而牺牲了可读性时,这种做法反而会事与愿违。

编写过于复杂的代码来避免假设的性能瓶颈,这通常会让其他人(包括你未来的自己)很难理解和调试。

最好还是把可读性放在第一位。

保持循环简单,只有在确认在实际使用中真的存在性能瓶颈问题时才进行优化。

代码样例
错了
    # 这段代码优化过度,可读性差
    result = [item.process() for item in items if item.is_valid()]
好的
    # 这里更清晰易懂
    result = []
    for item in items:
        if item.有效():
            # 处理每个有效的item并添加到结果列表中
            result.append(item.process())
检测

[X] 半自动(注:这里指的是不需要完全人工操作,但也不完全是全自动的过程或设备。)

寻找列表生成式或复杂的循环结构,在没有实际性能基准证据的情况下优化性能的。

异常情况
  • 关键任务算法的确凿证据
标签

过早的优化

等级 ("# Level")

【X】 中级

AI

人工智能工具通常优先考虑功能正确性,从而往往会生成简洁的循环。

如果你要求AI不惜一切代价地追求极致性能,它甚至可能为即使是简单的任务生成过于复杂的代码。

AI检测功能

在正确的指导下,强调代码的可读性和可维护性,AI可以在正确指导下检测并修复这种代码异味,通过简化循环,并在清晰性和早期优化之间选择清晰性。

一个试试看!

记住:AI助手会犯不少错。

没有正确的指引
具体指示
结论:

(注:此处添加空行以符合中文文档格式要求)

不要为了追求过早的优化而牺牲了可读性。

你可以稍后优化,如果一个循环被证实是瓶颈的话。

在此之前,清晰且简单的代码将节省时间,减少错误,并使其更易于维护。

关系
代码异味 20 — 过早优化:预先规划需要一颗任何开发者都没有的水晶球。blog.devgenius.io
代码异味 129 — 结构优化我们常常通过假设不现实的情况来优化结构mcsee.medium.com
代码异味 06 — 太聪明的程序员写的代码难以理解。他们经常使用没有意义的名字,还喜欢利用语言的复杂性来耍花样。
注意: 请看下面的免责声明哦。

代码异味在我的看法中。观点

致谢

照片由Tine IvaničUnsplash拍摄。

以效率之名犯下的计算错误比任何其他原因都要多,却不一定真正提高效率。

W. A. Wulf(W. A. Wulf)

软件工程中的精彩格言:一句简短的话语可以激发惊人的想法。blog.devgenius.io

本文是CodeSmell系列的一部分。

找出代码中的异味: 如何做blog.devgenius.io
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消