KeyFC欢迎致辞,点击播放
资源、介绍、历史、Q群等新人必读
KeyFC 社区总索引
如果你找到这个笔记本,请把它邮寄给我们的回忆
KeyFC 漂流瓶传递活动 Since 2011
 

[M] Prelude to K.O. (4)

[ 17042 查看 / 45 回复 ]

回复:[M] Prelude to K.O. (4)


虽然C++代码在Size方面不是很好,但Speed不会比C和汇编差


跟C比的话区别的确是不太大的,慢也只是慢在SIZE上,不过跟ASM比就有点说不过去了。让你这么想的原因大概是没有什么人会去优化非性能关键的代码(除非有特殊癖好,比如我这种),所以平常看上去的那些代码比C要更慢(严格来说,是慢得多)。即便是优化能力最好的INTEL编译器,我还是经常能够发现很多明显不妥当的、影响性能的地方。不说别的,就拿寄存器利用来说,这点是要输给手工优化很长一截距离的。
TOP

回复:[M] Prelude to K.O. (4)

本来我对标准化就不怎么看重,其实一旦某些东西用得广泛了,就是事实上的"标准化".
我说VC的编译器是事实上的标准并没有错,C++标准委员会里的人都有在MS做VS开发的.

"VC的跨asm段跳转"是很正常的,为什么要"爆掉"呢?

"不美观是因为多用了一个变量,多写了一行。"
实际上明明是需要这个变量的,OP在编译时也不例外,为什么要隐藏这句代码呢?
语言太高级就不是C/C++的特点了.
讨论语言历史,尤其是10年以前的历史没什么意义.
历史上,MacOS的图形界面比Windows的还好,难道为此我们就都去用MacOS?

"不小心把 == 写成 = 曾经浪费了你多少的时间?"
看来你不是成熟的C/C++开发人员,否则根本不会犯这么低级的错误.
而且VC在大多数情况下都能发现此问题,并给出警告.
如果在这个错误上浪费时间,那么在OP中":="和"="上浪费的时间也不会少.
"."和"->"的误用更不会遇到,何况编译时是一定能发现这种错误的.
当我熟悉C/C++时,把"."和"->"合并成"."看起来是很不合理的.
它把变量和指针的含义搞混了.

"任何需要处理大量关系数据的场合"
不必要的复杂设计才是导致深层结构的根本原因.

以上我所有关于语言的讨论宗旨是: Object Pascal语言是优美的, 但与C++相比还有差距.
MS放弃Pascal可能也是如此考虑的吧.
最后编辑dwing 最后编辑于 2007-05-18 11:51:24
TOP

回复:[M] Prelude to K.O. (4)

C++在size上的控制的不好的主要原因只是template,inline和未使用的virtual function.
template可以说是C++中最复杂的了,所有C++编译器不能完全符合标准多数都由于template的支持.
此处我现在也只懂些皮毛,不敢深入使用.

现在CPU都足够快了,一般来说,不是critical的代码不必用汇编.
而且不是汇编高手写出的汇编恐怕还不如编译器优化的代码.
最后编辑dwing 最后编辑于 2007-05-18 12:05:28
TOP

回复: [M] Prelude to K.O. (4)

原帖由 dwing 于 2007-5-18 12:01:00 发表
现在CPU都足够快了,一般来说,不是critical的代码不必用汇编.
而且不是汇编高手写出的汇编恐怕还不如编译器优化的代码.


可以说除了编写特殊指令还有关键代码段的性能优化之外,不是单片机之类的平台都没有必要使用ASM。不过其他语言慢一些终归是事实,比起极限优化的还要慢不少(虽然对于现在的CPU来说是微不足道的),毕竟无论用什么语言编译,最终出来的都是机器代码。
TOP

回复:[M] Prelude to K.O. (4)

本来不想再无谓的争论一些无聊的东西,不过忍不住最后插一句:

MS放弃Pascal可能也是如此考虑的吧.


我觉得更加可能的是,开发、创新能力上竞争不过对手......
网络上大量的证据都指向90年代Borland与M$签订的"互不侵犯利润条约":
此后的十年内Borland没有出过C和Basic的IDE,M$也没有出过Pascal。

就此封笔,本贴接下来您说什么我都无条件同意。:D
飛べない翼に、意味はあるんでしょうか?
TOP

回复:[M] Prelude to K.O. (4)

封笔就不要了,我还想看(5)哇;P
TOP

回复:[M] Prelude to K.O. (4)

那个传说的"互不侵犯利润条约"我也早就听说.不过很大程度上是笑谈而已.
我个人认为是:
MS认为(object)pascal和c/c++是同一层次上的,而c/c++更有广泛的应用,所以没必要去搞(object)pascal.而basic/vb是更高级的语言,面向的用户也与c/c++不同,所以不会产生冲突.
Borland认为它的delphi是源自起家的pascal,而且同时考虑vb和c++的优点,所以就不屑再开发basic.但c/c++毕竟有大量用户,所以不得不照着delphi又弄出个带有delphi血统的bcb.
根据近年Borland推出jbuilder可以看出,它不愿搞底层开发工具,所以delphi/bcb不能像vc那样接近开发的最底层(已经贴近Win32Asm的层次,可以开发驱动).也可以从支持"naked call"和"自定义entry"看出(这两点borland貌似一直不支持,所以没看到有人用delphi/bcb写出VC能做到的等用于直接用汇编的1KB的EXE).
TOP

回复: [M] Prelude to K.O. (4)

原帖由 Prz 于 2007-5-18 12:23:00 发表
就此封笔,本贴接下来您说什么我都无条件同意。


汗~~这话说的真绝,
"说什么我都无条件同意"......;P
TOP

回复: [M] Prelude to K.O. (4)

原帖由 LOVEHINA-AVC 于 2007-5-18 12:25:00 发表
封笔就不要了,我还想看(5)哇;P


唔,不是说不写了,只是不想就这个问题讨论了。
这是一个很有意义但是很没有讨论价值的东西,就像众神论、一神论和无神论一样,口水积成海,再杀上一堆人,估计把地球炸成两截都解决不了问题... :P

那个(5)是真的没有了,因为我已经用最快的方法把我认为关键的要点介绍出来了。

接下来就是 Prelude 先行预览版了,不过我计划至少等把数据库支持移植到CAS架构下才发布,根据空闲情况,要等几天去了。
飛べない翼に、意味はあるんでしょうか?
TOP

回复:[M] Prelude to K.O. (4)

原帖由 LOVEHINA-AVC 于 2007-5-18 11:38:00 发表

虽然C++代码在Size方面不是很好,但Speed不会比C和汇编差


跟C比的话区别的确是不太大的,慢也只是慢在SIZE上,不过跟ASM比就有点说不过去了。让你这么想的原因大概是没有什么人会去优化非性能......


我对Intel C++还是比较有信心的,要不谁出个题目,固定算法,你用ASM实现,我用Intel C++,看速度能差多少?
KEYFC第二届版杀 - 川澄 舞
TOP