??xml version="1.0" encoding="utf-8" standalone="yes"?>成人国产精品一区二区网站,四季av一区二区凹凸精品,亚洲视频精品在线http://www.aygfsteel.com/murainwood/archive/2009/06/22/55660.html#283594?/dc:creator>?/author>Mon, 22 Jun 2009 07:46:00 GMThttp://www.aygfsteel.com/murainwood/archive/2009/06/22/55660.html#283594
]]>- re: 一点小感想Qؓ什么那么多Java慢?Q?[未登录]http://www.aygfsteel.com/murainwood/archive/2009/05/27/55660.html#278242aaaaaaWed, 27 May 2009 10:10:00 GMThttp://www.aygfsteel.com/murainwood/archive/2009/05/27/55660.html#278242你如果完全了解所有门c?br>你就应该知道Zjava慢了

]]> - re: 一点小感想Qؓ什么那么多Java慢?Q?http://www.aygfsteel.com/murainwood/archive/2008/12/08/55660.html#245106murainwoodmurainwoodMon, 08 Dec 2008 13:38:00 GMThttp://www.aygfsteel.com/murainwood/archive/2008/12/08/55660.html#245106仅仅是原始类型的重复计算Q确实无法比出快慢?br>我的团队今年q初做了一个项目,涉及到q个问题?2位JVM有效理的HeapQ最好不要超q?G。不然一ơFull GCQ真能把应用l阻塞住?br>两年前写的东西,现在看来Q太q于q稚啦?img src ="http://www.aygfsteel.com/murainwood/aggbug/245106.html" width = "1" height = "1" />
]]> - re: 一点小感想Qؓ什么那么多Java慢?Q?http://www.aygfsteel.com/murainwood/archive/2008/11/19/55660.html#241422路h路hWed, 19 Nov 2008 08:47:00 GMThttp://www.aygfsteel.com/murainwood/archive/2008/11/19/55660.html#241422我不是高?
但是我比较相信thinking in java 毕竟是全球最受欢q的java著作
thinking in java里讲到java比c++?
虽然我没做过实验 但我q是比较怿q本书的
]]> - re: 一点小感想Qؓ什么那么多Java慢?Q?[未登录]http://www.aygfsteel.com/murainwood/archive/2008/05/27/55660.html#203191fengfengTue, 27 May 2008 04:53:00 GMThttp://www.aygfsteel.com/murainwood/archive/2008/05/27/55660.html#203191
]]> - re: 一点小感想Qؓ什么那么多Java慢?Q?http://www.aygfsteel.com/murainwood/archive/2008/05/23/55660.html#202382::Fri, 23 May 2008 05:07:00 GMThttp://www.aygfsteel.com/murainwood/archive/2008/05/23/55660.html#202382
]]> - re: 一点小感想Qؓ什么那么多Java慢?Q?http://www.aygfsteel.com/murainwood/archive/2008/03/13/55660.html#185980JonleeJonleeThu, 13 Mar 2008 04:05:00 GMThttp://www.aygfsteel.com/murainwood/archive/2008/03/13/55660.html#185980
]]> - re: 一点小感想Qؓ什么那么多Java慢?Q?http://www.aygfsteel.com/murainwood/archive/2008/03/13/55660.html#185979JonleeJonleeThu, 13 Mar 2008 04:04:00 GMThttp://www.aygfsteel.com/murainwood/archive/2008/03/13/55660.html#185979by Dejan Jelovic
Z么Java永远比C++慢?
耍过JavaE序Q或者用Java码过E序的h都晓得,Java要比用C++写成的原生程序要慢。这是咱用Java时已l承认的事实?
不过Q很多h惌说服我们说这只不q是暂时的,他们说Java从设计上来讲q不慢,相反Q只是现在的JIT实现相对比较嫩,有很多能优化的地方JITq没有优化到Q拖了后ѝ其实不Ӟ不管JIT们多牛,Java永远要比C++慢?
我想?..
宣扬Java不慢于C++的h往往是觉得,Q语法)严格的语aQ可以让~译有更大的优化I间。因此,除非你想做h肉编译器优化整个E序Q否则通常都是~译器做得更好?
q是真的。在数D领域,Fortran仍然胜于C++Q的因为它更严根{不用担心指针瞎搅和Q编译器可以更安心地优化。C++x败Fortran的唯一办法Q就是好好设计一个像Blitz++那样的库?
试...
Java可以跟得上C++的地方,是基准试。计vWN个斐波纳契数Q或者运行vLinpackQJava没理׃跟C++跑得一样快。当所有的计算都放在一个类里,q且只用基本的数据cdQ比如说int或者doubleӞJava~译器的能跟得上C++的脚步?
事实...
当开始在E序中用对象的时候,Java放松了潜在的优化。这一节会告诉你ؓ什么?
1. 所有的对象都是从堆里分配的?
Java从栈里分配的Q就只有基本数据cdQ如intQ或者doubleQ还有对象的引用。所有的对象都是从堆里分配的?
当有大量语义上是一回事的对象时Q这不成问题。C++同样也是从堆上分配这些对象。但是,当有D义不同的对象时Q这是一个主要的性能杀手?
什么是对象?Ҏ来说Q就是P代器们。在设计中,我用了很多P代器。别人可能会用复数?DE序员可能会矢量或者点cR处理时间序列的人可能会有时间类。用这些类的hQ无一例外地讨厌把不费旉的栈上分配换成花费固定时间的堆上分配。假如把它放在一个@环里Q就变成了O(n)?了。如果再加一层@环,没错Q又变成O(n^2)?了?
2. 大量的{换?
得益于模板,好的C++E序员甚臛_以写于完全没有{换的牛程序。不q,Java没有模板Q所以Java代码L充满了{换?
对于性能Q它们意味着什么?呃,在Java里所有的转换都是很费时的动态{换。多ҎQ想想你可能会怎么样实现{换的Q?
最快的Ҏ是Q给每一个类赋g个序P然后用一个矩阉|描述L两个cL否相关的。如果是的话Q需要给指针加上多少的位UL能进行{换。这U方法的伪码看v来应该是q样的:
DestinationClass makeCast (Object o, Class destinationClass) {
Class sourceClass = o.getClass (); // JIT compile-time
int sourceClassId = sourceClass.getId (); // JIT compile-time
int destinationId = destinationClass.getId ();
int offset = ourTable [sourceClassId][destinationClassId];
if (offset != ILLEGAL_OFFSET_VALUE) {
return <object o adjusted for offset>;
}
else {
throw new IllegalCastException ();
}
}
好一堆代码。这只是一个简单的情景——用矩阵来表C类的关pL费了一部分内存Q没有哪个成熟的~译器会q样子做。他们会使用map或者遍历承树Q这样会变得更慢?
3. 攀升的内存占用?
JavaE序储存数据占用的内存大概是相当的C++E序的两倍。原因如下:
1. 启用了垃圾收集的E序一般都比不使用垃圾攉的程序多?0%的内存?
2. 本来C++里在栈上分配的对象,CJava在堆上分配了?
3. Java对象比较大,因ؓ所有的对象都有一个虚表,q要加上对(U程Q同步的原生支持?
大的内存映像让程序更大概率被攑ֈ盘的交换区厅R没有什么比交换文g更慢的了?
4. ~少更细致的控制?
Java原来是作ؓ一U简单的语言来设计的。很多在C++里让E序员控制细节的Ҏ在Java里都被一脚踢开了?
比如_在C++里可以改q引用的位置(?)。或者一ơ申请和释放很多个对象。或者用指针耍一些小技巧,更快地访问成员?
5. 没有高层ơ的优化?
E序员处理高层次的概c而编译器处理剩下的低层次概念。对于程序员来说Q一个叫Matrix的类׃表了比一个叫Vector的类更高层次的概c而对于编译器来说Q这些名字都是符可的一个入口。他们只兛_c里面有哪些函数Q函数里面有哪些语句?
q样想一下,比如说要实现一个exp(double x, double y)函数Q计出x的yơ幂。对于一个编译器Q它能只看一下这个函敎ͼ然后指出Qexp(exp(x, 2), 0.5)可以优化成x自己吗?当然不行?
~译器能做的优化只是语句层面的,而y是在~译器里面的。即使程序员知道两个函数是对U的Q可以把它们都消去,或者函数的调用序只是相反的,除非~译器能只瞄一下语句,然后指出来,不然优化是不可能完成的?
所以,如果惌完成一个高水^的优化,必须存在某种ҎQ可以让E序员来告诉~译器优化的规则?
没有哪个行的程序语a/pȝ可以做到q点Q至已知的ҎQ比如微软承诺的语言Q都不能。即便如此,在C++里可以用模板元编E来实现寚w层次对象的优化。时消除,部分求|对称函数调用的消去,和其它可以用模板实现的优化。当Ӟ不是所有的高层ơ优化都可以q样做。ƈ且实现这些东西相当麻烦。但是大多数都可以完成,有h已经用这些技术实C好些旉的库?
不幸的是QJava没有M元编E的特质Q因此在Java中不会有q种高层ơ的优化?
所?..
׃存在q种语言Ҏ,Java不可能达到C++q种速度。这相当E序上暗CZQ对于要求高性能的Y件和竞争Ȁ烈的COTS舞台上,使用Java不是一U明智的选择。但是因为它和缓的学习曲U,它的定wQ和它庞大的标准库,所以适合开发中型自用和定制Y件?
附记...
1. 有h向James GoslingQ谁Qgoogle?..Q提交了很多可以改进Java性能的语aҎ。文本在q里。不q的是,Java语言已经有四q没有改动过了,所以看hq些提议g不会在一夜之间被实现?
2. 最有可能往Java里加入泛型的是Generic Java。又很不q的是,GJ只是通过在编译时把所有类型信息去掉来支持泛型。所以最后面执行环境看到的,仍然是缓慢的转换?
3. 垃圾攉的FAQ包含了关于垃圾收集慢于定制分配器的信息(上面W四点)?
4. q里是一宣U垃圾收集比栈分配的快的文章。但是它的要求是物理内存必须是程序实际需要的内存的七倍之多。还有,它描q的是一Ustop-and-copyQ是不是那种执行C半,然后停下来,把内存拷到另外一块内存,同时清除垃圾的那U方法?Q,而且q不是ƈ发的?
反馈...
我收到很多关于这文章的反馈。附上一些典型的评论Q还有我的回{:
“你q忘C指出在Java里所有的Ҏ都是虚方法,因ؓ没有Z加上final关键字。?
事实上,不用final关键字不是问题的关键所在,使用者才是。同Ӟ虚函C没有问题Q但是却失去了优化机会。自从JIT们知道怎么样内联虚函数Q这变得不那么显著了?
JIT可以内联虚函敎ͼ所以Java可以比C++更快?
C++也可以用JIT~译。不信的可以看看.NET的C++~译器?
到最后的时候,速度q不重要。电脑浪费了大部份时间在{待用户输入?
速度仍然很重要。我仍然在等我的W记本启动v来,我在{我的编译器停下来,我还要等Word打开一个超长的文档?
我在一个金融公司工作。有时候我必须对一个很大的数据集进行模拟。速度在这U情况下都很重要?
有些JIT可以在栈上分配一些对象?
当然Q一些?
你的转换代码看v来很丑。可以在cȝl承层次上检查类?
首先Q这样只比矩阉|扑ֿ一点点而已?
W二Q这样只能查扄Q类只占多少Q低层次的细节往往是通过接口来实现的?
哈,那么我们都应该用汇~?
不是的,我们都要使用对业务有用的语言。Java提供了庞大的标准库,让很多Q务变得容易,因此Java是伟大的。它比其它所有的语言更容易移植(但ƈ?00%可移植——不同的q_有不同问题)。它h垃圾攉机制Q简化了内存理Q同时也让某些构造如闭包可实现?
但是Q同ӞJava和所有的语言一P也有瑕疵。在D义的cd上缺支持。它的同步ƈ不是很有效率。它的标准库建立在异常检查之上,把实现拖q了接口。它的性能可以更好。它的数学库有些gh的问题。诸如此cR?
q些~憾都是大问题吗Q看你用它做什么。因此,在几U语a里,q同它的~译器以及可以选择的类库里选择对你的工E有利的一U?

]]> - re: 一点小感想Qؓ什么那么多Java慢?Q?[未登录]http://www.aygfsteel.com/murainwood/archive/2007/12/29/55660.html#171594jimmyjimmySat, 29 Dec 2007 09:28:00 GMThttp://www.aygfsteel.com/murainwood/archive/2007/12/29/55660.html#171594
]]> - re: 法求解[未登录]http://www.aygfsteel.com/murainwood/archive/2007/07/08/75287.html#128932PollyPollySun, 08 Jul 2007 14:15:00 GMThttp://www.aygfsteel.com/murainwood/archive/2007/07/08/75287.html#128932
]]>
վ֩ģ壺
ˮ|
㰲|
|
|
Ƥ|
|
ӽ|
|
|
|
|
罭|
|
|
߶|
ξ|
|
ͨ|
ƺ|
|
ɽʡ|
|
|
|
|
|
|
ֽ|
ʤ|
|
կ|
ױ|
|
|
˱|
|
|
|
|
|
ƽ|