为什么计算机语言会有性能的差异?

2016-01-06 16:29:43 +08:00
 temberature
8338 次点击
所在节点    程序员
86 条回复
temberature
2016-01-06 17:09:50 +08:00
@airqj 这个确实不一样,但好像不太能类比,想不到更合适的,但编程语言是有翻译过程的
KyleMeow
2016-01-06 17:10:07 +08:00
@temberature 单进程.. 上条说错了
temberature
2016-01-06 17:10:51 +08:00
@BeanMrx 翻译好再执行,那一次就不存在消耗了
temberature
2016-01-06 17:13:42 +08:00
@KyleMeow 主要还想问的是理论问题,确实还会有很多工程问题
pythonee
2016-01-06 17:14:30 +08:00
垠神说过,语言是语言,语言决定了语义和表达力,其余的取决于编译器实现的好坏
temberature
2016-01-06 17:14:37 +08:00
@msg7086 那问题就变成了导致不太可能的原因又是什么呢
temberature
2016-01-06 17:16:39 +08:00
@pythonee 那看来上帝可以实现最好的编译器
hyz0805
2016-01-06 17:16:44 +08:00
对都是编译执行的语言,最直接表现是编译后的机器代码行数更多,
比如实现相同功能, C 语言的代码链接编译成的汇编代码再编译成机器语言后要比其他高级语言的更高效。

对于解释执行的语言,还有个解释代码的阶段,因此性能上会再打折扣。
zenhand
2016-01-06 17:18:38 +08:00
比如一个任务, print 100,可以直接 print 100,也可以 print 1+1+1+1.....+1+1,一直加到一百,其中的计算量显然不同,我喜欢的 python 就是这种混帐事干的太多了,所以效率才低的。
qian19876025
2016-01-06 17:19:24 +08:00
同样功能的程序 使用不同的语法产生的 二级制不一样
做一个不恰当的比喻 同样都是唱歌而且也是同样一首歌 不同的人唱吹来的音调完全不一样 你听到的效果也完全不同 但是他们的发声结构确实大体相同的 只不过材料原因 或者发声方法不一样
msg7086
2016-01-06 17:19:30 +08:00
@temberature 高级语言会容忍用户的懒惰,所以会代替人做很多的工作,比如检查数据合法性,管理内存等等,自然比天天加班用低级语言写出来的代码要慢一些。
temberature
2016-01-06 17:20:42 +08:00
@hyz0805 现实确实如此。解释型好像也可以编译执行
KyleMeow
2016-01-06 17:21:35 +08:00
@hyz0805 也不能简单从行数来判断。还有一些 SIMD 和附加指令集指令,另外每个指令执行的时间周期也不等。其实这个最考验编译器优化水平了,或者为了兼容性而不能用一些新指令。
temberature
2016-01-06 17:23:13 +08:00
@zenhand 但这种事是可以避免的,语言的升级有的就是做的这种事吧
hyz0805
2016-01-06 17:24:28 +08:00
@KyleMeow 同意。一行机器指令可以占不同的执行周期。这么说是因为解释太深会难以理解。
temberature
2016-01-06 17:25:39 +08:00
@msg7086 然而还有改进的空间
roychan
2016-01-06 17:26:01 +08:00
楼主头像好面熟。。 golang?
leavic
2016-01-06 17:26:12 +08:00
从 8 楼到 1 楼,最快的方式肯定是跳楼,但跳楼。。。。。
所以有了电梯和楼梯。
temberature
2016-01-06 17:28:14 +08:00
@roychan 是,当时传头像,刚好看到,惭愧却没学过 go
loading
2016-01-06 17:28:38 +08:00
别说编译过了,两个人写汇编都有巨大差异!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/248811

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX