编写更短的代码/算法,效率更高(性能)?

Car*_*los 13 performance

在网站周围遇到代码高尔夫琐事之后,显然人们试图找到在字符,线条和总大小方面尽可能短的编写代码和算法的方法,即使这意味着写下这样的东西:

    //Code by: job
    //Topic: Code Golf - Collatz Conjecture
    n=input()
    while n>1:n=(n/2,n*3+1)[n%2];print n
Run Code Online (Sandbox Code Playgroud)

所以作为初学者,我开始怀疑尺寸是否真正重要:D

这显然是一个非常主观的问题,高度依赖于所使用的实际代码,但现实世界中的经验法则是什么.

在尺寸不重要的情况下,那么我们怎么不关注性能而不是尺寸呢?

Yuv*_*l F 18

我希望这不会成为一场火焰战争.好的代码有很多属性,包括:

  1. 正确解决用例.
  2. 可读性.
  3. 可维护性.
  4. 性能.
  5. 可测性.
  6. 内存签名低.
  7. 良好的用户界面.
  8. 可重用性.

代码的简洁性在21世纪的编程中并不重要.在记忆非常稀缺时,它更为重要.对于引用上述属性的书籍,请参阅此问题,包括我的答案.

  • 我的说法略有不同:简洁只有在它有助于实现其他一些目标时才有用.例如,简洁*可以*增强可读性和可维护性.然而,过度简洁同样可以很好地破坏两者. (7认同)
  • 在代码通过网络传输很多的情况下,简洁性是至关重要的.查看www.google.com的html!这是关于带宽,而不是记忆. (3认同)
  • @Guge--你是对的.我相信实时设备的程序也会尽可能短.我想你应该针对作为瓶颈的资源进行优化,而不要过多担心其他资源. (2认同)

Bri*_*ian 8

关于什么是重要而不是重要的,已经有很多好的答案.在现实生活中,(几乎)没有人编写像代码高尔夫,缩短的标识符,最小的空白和尽可能少的语句等代码.

也就是说,"更多代码"确实与更多错误和复杂性相关联,"更少代码"往往与更好的可读性和性能相关联.所以在所有其他条件相同的情况下,争取更短的代码是有用的,但仅在"这些简单的30行代码与100条复杂的代码行相同"的意义上.


Tre*_*ins 6

编写"代码高尔夫"解决方案往往与显示你是如何"聪明"地以最简洁的方式完成工作,即使以牺牲可读性为代价.然而,通常,更详细的代码(包括例如功能结果的记忆)可以更快.代码大小对性能很重要,较小的代码块可以适合L1 CPU高速缓存,但这是优化的极端情况,更快的算法总是更好."Code Golf"代码与生产代码不同 - 如果任何人(包括您自己)打算再次阅读该代码,则始终为解决方案的清晰度和可读性而不是简洁性而写.