问题描述
读了《CLRviaC#》后,知道了它的作者JeffreyRichter。真的是大神啊~书中有一段话差点毁了我的世界观,价值观和爱情观:“虽然这样说很难让人信服,但许多人(包括我)都认为托管应用程序的性能实际上超过了非托管应用程序。有许多原因使我们对此深信不疑---例如,当JIT编译器在运行时将IL代码编译成本地代码时,编译器对执行环境的认识比非托管编译器更深刻。”“JIT编译器能判断代码是否运行在一个IntelPentium4CPU上,并生成相应的本地代码来利用Pentium4支持的任何【特殊】指令,相反,非托管代码通常是针对通用的、具有最小功能集合的CPU编译的,不会使用提升应用程序性能的特殊指令。”后来百度了下JeffreyRichter的其他作品,好像都很经典...学C#到一定程度,就要开始学整个.NETCLR而不再是语言本身咯~~这本书读了真是受益匪浅~~~~
解决方案
解决方案二:
这观点我也说过。
解决方案三:
引用1楼caozhy的回复:
这观点我也说过。
以前一直认为IL代码拼不过本地代码,看他这么说,是非常非常有道理..Microsoft还没有把JIT编译器优化到最佳,提升的空间好大~
解决方案四:
比如:http://bbs.csdn.net/topics/340088244有多少人能理解呢?非要CLRviaC#写了才恍然大悟。事实上,我说了,程序的性能不能孤立地看,要看到一个程序在多次运行中是否良好,在各种数据输入中是否运行良好,在不同机器上运行是否良好。尤其是,这些条件不是等概率出现的,所以总体性能和形而上学地看孤立的“性能优化”是两回事。
解决方案五:
其实就是说,中国的人工还是拼不过别人的机器,中国还是不要发展计算机了吧
解决方案六:
如果你多一点自己的思考,比看书的结论,并且觉得“有道理”收获更大。我打一个比方,你知道本地代码在特定的硬件上很快,但是换了硬件就不行了。你能联想别的么?比如冒泡排序,可能在对有序的数据排序的时候,比快速排序还快,但是综合不同的数据输入,它的整体效率不如后者。
解决方案七:
我们不单纯看局部得失,我们主要看全局得失比如淘宝们搞分布式缓存,在局部判定上分布式的各种判定规则肯定是相当复杂而且无效率滴,但是总体上他很好就不错了
解决方案八:
引用5楼caozhy的回复:
如果你多一点自己的思考,比看书的结论,并且觉得“有道理”收获更大。我打一个比方,你知道本地代码在特定的硬件上很快,但是换了硬件就不行了。你能联想别的么?比如冒泡排序,可能在对有序的数据排序的时候,比快速排序还快,但是综合不同的数据输入,它的整体效率不如后者。
只是发个读书感而已..怎么你比我还激动
解决方案九:
程序员一般都很聪明,但容易偏颇,打个比方,比如体育界刘翔,他跑11秒多,你一开始跑14秒,通过努力,你能跑到13秒了,对你来说是个很大的提高,但是刘翔的广告价值有多少,你的价值又有多少,别说是13秒多了,第二的史冬鹏,又怎么样?不知你能理解吗?如果微软的技术能使一个机器生成的代码能比一个人所写代码都性能高,你搞技术还有什么意义。用.net的和那些用word,excel的又有什么区别?
解决方案十:
引用6楼wanghui0380的回复:
我们不单纯看局部得失,我们主要看全局得失比如淘宝们搞分布式缓存,在局部判定上分布式的各种判定规则肯定是相当复杂而且无效率滴,但是总体上他很好就不错了
同样的道理,高铁快还是飞机快。似乎是一个不用问就知道的问题。但是未必那么简单。
解决方案十一:
同样毁三观...............
解决方案十二:
说到“毁三观”,我觉得龚丽娜才是越来与“毁三观”。她现在搞得所谓“中国现代艺术”已经脱离了民族,成了专门给欧洲人在街头上“卖的”中国艺术了,而不是中国艺术了!
解决方案十三:
法海,你为什么不懂CLR啊?
解决方案十四:
引用11楼sp1234的回复:
说到“毁三观”,我觉得龚丽娜才是越来与“毁三观”。她现在搞得所谓“中国现代艺术”已经脱离了民族,成了专门给欧洲人在街头上“卖的”中国艺术了,而不是中国艺术了!
什么跟什么嘛==
解决方案十五:
楼主太小看微软了。
解决方案:
解决方案:
好多流弊人回帖。菜鸟一号飘过
解决方案:
好多流弊人回帖。菜鸟一号飘过
解决方案:
烂人写的代码底层调的再优也白搭,就像儿子不争气,再多的家底也白搭。除非你爸是李刚。
解决方案:
JIT编译器再怎么优化,也优化不掉对象的间接寻址与数组的随机越界判断。虽然理论上可以说对于不同的应用,各有各的好处。但是实际上呢?
解决方案:
引用19楼sbwwkmyd的回复:
JIT编译器再怎么优化,也优化不掉对象的间接寻址与数组的随机越界判断。虽然理论上可以说对于不同的应用,各有各的好处。但是实际上呢?
实际上就是因为C#的门槛比较低,所以好多人都混进门来搞C#,导致C#开发人员的平均素质比较低下,然后生产出很多垃圾把C#给搞臭了。我感觉C#和相声基本是同一种形势,门槛低,相声有嘴就能说,C#,有手就能搞,都不需要有脑。结果就是鱼龙混杂,被别人瞧不起,而且行业整体也不够景气。
解决方案:
okgood呢?
解决方案:
这本书知名度太大了,一直都想拜读
解决方案:
也不能说托管代码就是用CPU的最小集只是说会不怎么跟得上时代很多软件的要求上面写了需要什么什么CPU其实就是说这个CPU对于他而言就是个最小集
解决方案:
引用20楼wddw1986的回复:
引用19楼sbwwkmyd的回复:JIT编译器再怎么优化,也优化不掉对象的间接寻址与数组的随机越界判断。虽然理论上可以说对于不同的应用,各有各的好处。但是实际上呢?实际上就是因为C#的门槛比较低,所以好多人都混进门来搞C#,导致C#开发人员的平均素质比较低下,然后生产出很多垃圾把C#给搞臭了。我感觉C#和相声基本是同一种形势,门槛低,相声有嘴就能说,C#,有手就能搞,……
...
解决方案:
引用20楼wddw1986的回复:
引用19楼sbwwkmyd的回复:JIT编译器再怎么优化,也优化不掉对象的间接寻址与数组的随机越界判断。虽然理论上可以说对于不同的应用,各有各的好处。但是实际上呢?实际上就是因为C#的门槛比较低,所以好多人都混进门来搞C#,导致C#开发人员的平均素质比较低下,然后生产出很多垃圾把C#给搞臭了。我感觉C#和相声基本是同一种形势,门槛低,相声有嘴就能说,C#,有手就能搞,……
所以我不喜欢C#。还是最喜欢C。
解决方案:
解决方案:
不必关心别人怎样,只要自己能够精通,什么语言都是形式。我相信,能精通C#,也能精通C++JAVAC等,如果一门都无法精通,再好的语言给菜鸟用,也是渣
解决方案:
解决方案:
膜拜大神,C#还是很强大的
解决方案:
再多的家底也白搭
解决方案:
这本书还没看完呢。是很不错
解决方案:
肿么感觉这逻辑有问题呢?托管应用程序的性能实际上超过了非托管应用程序这是一个普遍的结论论据所提到的一个原因是jit的作用,在jit生成针对特定cpu的指令而非托管代码生成针对通用的cpu的情况下,托管应用程序的性能超过了非托管应用程序。这只是证明了在特定情况下托管应用程序的性能超过了非托管应用程序,而且这个情况举得也不是很让人信服,就好像非托管代码不能生成针对特定cpu指令似的。事实上从应用情况来看托管应用程序的性能整体不如非托管应用程序,比如游戏开发网络开发还是以非托管程序为主。
解决方案:
牛逼的不是语言,而是编译器,编译器牛逼的话,易语言也可以超过C++!大家说是不是???
解决方案:
牛逼的不是语言不是编译器,而是使用语言使用编译器的思想,做到人机合一才是最高的境界,大侠用树枝也能发挥出剑的效果。
解决方案:
我写的很多C#代码比某些人写的C++代码要快
解决方案:
我期待微软出托管代码的OS,基于.NET的OS猜想她的名字叫WINDOWS.NET
解决方案:
买的CLRviaC#刚好今天到了果断来去看看有没有楼主说的那么神奇。
解决方案:
解决方案:
好好学习C#达到精通一门熟悉多门就行
解决方案:
玩Linux的都知道,绝大多数应用,针对686与针对P4编译的没两样,只有多媒体指令集才能看出区别。
解决方案:
这本书不错,很深入的技术书。
解决方案:
理论上的东西有多大意义要看实际应用,至少目前非托管程序的性能高于托管程序,等到哪天JIT编译器的性能真的有微软吹嘘的那么强劲再来谈这句话还不迟。
解决方案:
一本书而已,这个作者本身就是微软的御用笔杆子。对微软的东西吹捧一下很正常。他只说JIT可以根据CPU进行优化,有没有提到优化的效率提升到底有多少?要知道X86新增的指令,都不是性能得到了提升,而是使用起来更方便,用一条指令代替多条指令而已。他只说JIT可以优化,有没有提到JIT即时编译所消耗的时间和性能,要知道这都是在运行期发生的。更何况,JIT的优化是需要时间的,如果这些优化发生在运行期,它敢不计代价的去优化么?这些只是理论上的,就活生生的例子来说,有几个人感觉到.net程序快过原生程序?
解决方案:
刚开始接触C#,很多东西要学。。。什么时候才到那种层次
解决方案:
御用文人,从来不缺少引用
“JIT编译器能判断代码是否运行在一个IntelPentium4CPU上,并生成相应的本地代码来利用Pentium4支持的任何【特殊】指令,相反,非托管代码通常是针对通用的、具有最小功能集合的CPU编译的,不会使用提升应用程序性能的特殊指令。”
[非托管代码通常是针对通用的、具有最小功能集合的CPU编译的,不会使用提升应用程序性能的特殊指令]这个....编译器的基本,比如,IntelC++编译器(Intelparallelstudio),编译器参数ax,Qax,完全可以自动指派.目标机器如果没有对应的高级指令集,就可以常规指令集可以支持,AVX,SSE等...DescriptionThisoptiontellsthecompilertogeneratemultiple,processor-specificauto-dispatchcodepathsforIntelprocessorsifthereisaperformancebenefit.Italsogeneratesabaselinecodepath.TheIntelprocessor-specificauto-dispatchpathisusuallymoreoptimizedthanthebaselinepath.Otheroptions,suchasO3,controlhowmuchoptimizationisperformedonthebaselinepath.http://software.intel.com/sites/products/documentation/hpc/composerxe/en-us/2011Update/fortran/win/copts/common_options/option_ax_lcase.htm
解决方案:
引用楼主mrz0953的回复:
读了《CLRviaC#》后,知道了它的作者JeffreyRichter。真的是大神啊~书中有一段话差点毁了我的世界观,价值观和爱情观:“虽然这样说很难让人信服,但许多人(包括我)都认为托管应用程序的性能实际上超过了非托管应用程序。有许多原因使我们对此深信不疑---例如,当JIT编译器在运行时将IL代码编译成本地代码时,编译器对执行环境的认识比非托管编……
这个是理论上骗人的东西。实际上慢了不知道多少倍。这个理论成立的前提是你的代码已经转为机器码,这样才会在某些机器上做指令的优化。但是在这前后,还有你代码的解释编译调优,资源的创建,管理与释放以及上下文的调度等等,都比你区区几条指令的优化要耗时更多。
解决方案:
引用36楼Lost_Painting的回复:
我期待微软出托管代码的OS,基于.NET的OS猜想她的名字叫WINDOWS.NET
你想要的是vista。vista慢就是因为底层用了很多.NET的东西。
解决方案:
什么类型的程序,最考验性能?数值计算...看看,数值计算的库:对比下,C/C++/fortran等,对比JIT....
解决方案:
No...Vista只是一些UI或者某些功能(道听途说,具体不明).但可以肯定的是涉及到CPU指令,文件管理,内存管理,硬件驱动是肯定没用.NET在做事的...我期待的是Pure.NET的OS..引用47楼zanfeng的回复:
引用36楼Lost_Painting的回复:我期待微软出托管代码的OS,基于.NET的OS猜想她的名字叫WINDOWS.NET你想要的是vista。vista慢就是因为底层用了很多.NET的东西。
解决方案:
该回复于2014-01-09 17:25:36被版主删除