编程是越简短越好吗?

hdj1107 2012-04-14 03:11:38
对于算法、数据结构的题目,是代码越简短越好吗?
每个平台的机器性能不一样,有什么共同的标准来衡量代码的效率。
我知道有running time,但是同一个算法,不同的实现,也会有快慢。

比如说换算成多少机器指令之类的?
时间复杂度空间复杂度有什么分析软件吗?
...全文
670 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱哭的你 2012-04-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
C/C++ code
int f(int a, int b)
{ return (((((a - b) >> (8 * sizeof(int) - 1))) 0x01) * b) + ((1 - ((((a - b) >> (8 * sizeof(int) - 1))) *0x01)) * a);
}

不就是求ab的最大值吗。。?int 是有符号数。。。(a-b)>>31位 即可判断ab大小

不如这样写好了。。
int fun(int a,int b){

return (a - b) >> 31?b:a;

}
jadedrip 2012-04-25
  • 打赏
  • 举报
回复
另外,vc 2010 里有个工具可以帮助你分析代码效率。
jadedrip 2012-04-25
  • 打赏
  • 举报
回复
如果真的纠结于效率,最好的办法并非分析机器码,而是写个测试程序到实际环境上去跑跑看。

别相信自己的分析,有时候,不同 cpu 、 不同类库、不同操作系统会给你完全不同的结果。

如果不是有特殊要求,代码的可读性总是最重要的。
ShaneLooLi 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
在不影响性能的前提下,代码还是清晰易懂为好
[/Quote]

其实从企业成本角度来说,硬件能值几个钱?远远低于开发者的工资。所以就算中等程度地影响性能,也应该以代码清晰易懂,结构利于修改和添加功能,甚至在别的有关项目中重用为第一指导原则。
xiaoliuliu2050 2012-04-16
  • 打赏
  • 举报
回复
算法 效率越高越高
算法 空间占用越少越好!!

两方面考虑,看需要而定!!
柳波 2012-04-16
  • 打赏
  • 举报
回复
类中写结构,外面用函数。
lymastee 2012-04-16
  • 打赏
  • 举报
回复
看要求,逻辑经常变动的代码部分要易懂可靠,逻辑相对稳定而被调用次数多的则要考虑效率,不是看程序写得简短,而是看cpu指令周期,以及程序复杂度和复杂度的增长
老鼠期待爱 2012-04-16
  • 打赏
  • 举报
回复 1
现在的代码注重的是容易维护,太简洁效率高 ,但是看不懂,又有什么用呢
hdj1107 2012-04-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

代码越简短越好 不一定越好。。。这要从很多反面考虑。。
不同情况,, 都不相同
例如递归代码会很小,,但由于子问题的解做的不止一次。。所以效率不高。。。动态规划法重复子问题只做一次,所以要空间记录这些子问题的解。如果n很大。但会很占内存,有些情况也并不适用

算法自己都会写了。。。。 时间复杂度 空间复杂度 自己看一眼复杂度就出来了。。。没必要用软件吧?
[/Quote]

恩,谢谢回答,有没有换算机器指令集个数的软件?
hdj1107 2012-04-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

在不影响性能的前提下,代码还是清晰易懂为好
[/Quote]

谢谢回答,如果是一道算法题,写一个类来回答好呢,还是就简简单单的几个函数呢?
我爱小土豆 2012-04-15
  • 打赏
  • 举报
回复 1
代码越短,可读性越差。后期维护都是比较困难的
zwb8848happy 2012-04-15
  • 打赏
  • 举报
回复 1
代码越简单,可读性越差!!

所以要在不影响程序性能的情况下,增强可读性!!!

昵称很不好取 2012-04-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
引用 3 楼 的回复:

在不影响性能的前提下,代码还是清晰易懂为好


谢谢回答,如果是一道算法题,写一个类来回答好呢,还是就简简单单的几个函数呢?
[/Quote]
还是函数为好
cnmhx 2012-04-15
  • 打赏
  • 举报
回复
严谨;
简洁;
易维护。
zichen0422 2012-04-15
  • 打赏
  • 举报
回复 1
比较看好可读性个!
wizard_tiger 2012-04-15
  • 打赏
  • 举报
回复 1
只要不影响性能,代码还是清晰些好。
昵称很不好取 2012-04-14
  • 打赏
  • 举报
回复
在不影响性能的前提下,代码还是清晰易懂为好
turing-complete 2012-04-14
  • 打赏
  • 举报
回复
int f(int a, int b)  
{ return (((((a - b) >> (8 * sizeof(int) - 1))) & 0x01) * b) + ((1 - ((((a - b) >> (8 * sizeof(int) - 1))) & 0x01)) * a);
}


这个函数简单,就一句代码,你能看懂什么意思嘛?
爱哭的你 2012-04-14
  • 打赏
  • 举报
回复
代码越简短越好 不一定越好。。。这要从很多反面考虑。。
不同情况,, 都不相同
例如递归代码会很小,,但由于子问题的解做的不止一次。。所以效率不高。。。动态规划法重复子问题只做一次,所以要空间记录这些子问题的解。如果n很大。但会很占内存,有些情况也并不适用

算法自己都会写了。。。。 时间复杂度 空间复杂度 自己看一眼复杂度就出来了。。。没必要用软件吧?

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧