你的位置:首页 > 软件开发 > Java > 可耻的java,C++速度之争

可耻的java,C++速度之争

发布时间:2012-03-21 22:00:08
可耻的java,C++速度之争- -http://guanhaifa.bokee.com/640636.html 最近csdn流窜着一个滋滋不倦证明java比C++快的精神病.被C++版主封杀后还到处发短消息,发回复骚扰.而且还在博客中国贴了它那荒诞的文章:NuclearJava.blogchina.com.为了避免误导初学者.我把跟此人有关的一个辩论贴贴出来 最近csdn流窜着一个 ...

可耻的java,C++速度之争- -

http://guanhaifa.bokee.com/640636.html

 

 

最近csdn流窜着一个滋滋不倦证明java比C++快的精神病.被C++版主封杀后还到处发短消息,

发回复骚扰.而且还在博客中国贴了它那荒诞的文章:NuclearJava.blogchina.com.

为了避免误导初学者.我把跟此人有关的一个辩论贴贴出来

后来fireemissary对自己的举动感到后悔,向java程序员道歉.此人也装模作样道歉,想乘机再到C++版块刷屏:而且看见fireemissary不再参与,又趁机在中刷了两把.

后来fireemissary对自己的举动感到后悔,向java程序员道歉.此人也装模作样道歉,想乘机再到C++版块刷屏:而且看见fireemissary不再参与,又趁机在中刷了两把.

5)
证明db2是java写的,论证过程大致上如下:

原来IBM的DB2也是用java写的:

"共享类(不管是系统类还是应用程序类)对事务环境(如 CICS 和 DB2)中的 JVM 启动和内存占用可以有显著的效果"
http://www-900.ibm.com/developerWorks/cn/java/j-shared/index.shtml

 

什么能让IBM高呼万岁?
看看<<DB2 Magazine>>2004年3月的一篇文章吧:
IBM与Oracle合作使用Java开发他们数据库对XQuery的支持:XQJ
<<XQuery 与 SQL:变化万岁!>>
今天我们离开

XQuery 是由一些 SQL 专家们制订,由 W3C 联盟发布的一种规范

2003 年 6 月,IBM 和 Oracle 通过 Java Community Process 合作开发XQJ
http://www-900.ibm.com/developerWorks/cn/dmdd/library/techarticles/mag_03q3north/north.shtml

............一个查询语言的出世可以证明db2是java写的?

 

IBM现在的数据库开发是以Java为主:


IBM 在 2001 年七月初購併 Informix,將 Informix 轉換為以 Java 語言開發的環境之外,並採納 Informix 的資料複製功能,提升 DB2 災難復原與資料複製的能力

IBM 每年投資十億美元於資料庫管理軟體的研發工作,致力於強化資訊管理軟體解決方案的技術優勢與產品效能,去 ( 2003 ) 年並取得超過 230 項相關專利權;又於日前捐出價值超過八千五百萬美元的 Java 資料庫軟體 Cloudscape 給 Apache
目前 Informix 的產品藍圖已規劃至 2010 年,充分保障客戶既有的 IT 投資。這種「雙軌並進、相輔相成」的作法已獲得客戶、事業伙伴與分析師們的肯定;Informix 資料庫 IDS 9.4 版自去 ( 2003 ) 年第二季上市以來,已有許多重量級客戶採用,如內政部戶役政系統、內政部資訊中心、教育部、司法院、中央研究院、政治大學、輔仁大學、中華電信、永慶房屋、奇美醫院、中山醫院等。IBM預計在明 ( 2005 ) 年第一季推出 Informix IDS 資料庫新版本。

现在能肯定新的Infomix是用Java写成,并能支撑台湾"內政部戶役政系統、內政部資訊中心、教育部、司法院、中央研究院、政治大學、輔仁大學、中華電信、永慶房屋、奇美醫院、中山醫院"这些大型系统

........................................Informix,?这可以证明db2是java写的?

 

我们甚至极有理由怀疑:新版的Infomix实际就是披着Infomix品牌外衣的DB2。
而IBM收购Infomix的最大理由就是Infomix的客户群:因为IBM在收购Infomix后把Infomix以前的代码几乎全抛弃了。

..............................这是一种论证方式?

 


不过把Infomix全面改成了java说明IBM在收购之前就有用java写巨型数据库的技术,并直接把它用在了Infomix上,而IBM的巨型数据库只有DB2,这间接的证明间接证明DB2是java写的。
.................????


连MS 新版的数据库Yukon都改用.net开发了(http: //www.microsoft.com/taiwan/sql/evaluation/yukon.htm),试问,C++在数据库领域还有多少地盘?恐怕只剩mysql这种东西在进行不重要和非关键的应用了。"

...........用.net可以证明db2是java写的??


6)证明Oracle是java写的:

用过Oracle的人一定知道Oracle中有个自带的帐户Scott

Oracle 数据库的最初开发者Scott离开了ORACLE。当时用C改写ORACLE的压力很大,无休止的软件调试终于让Scott不堪重负,选择了一走了之。把剩下的重担交给了Miner一个人。在出售了自己的%4的股票之后,Scott 后来创建了Gupta公司(现更名为Centura Software)和PointBase公司(提供百分之百纯Java嵌入式数据库)
http://www.smartpartner.com.cn/sp1/index/article.php?storyid=9150

.............
"1998 年9月,ORACLE公司正式发布ORACLE 8i。"i"代表Internet,这一版本中添加了大量为支持Internet而设计的特性。这一版本为数据库用户提供了全方位的Java支持。 ORACLE 8i成为第一个完全整合了本地Java运行时环境的数据库"
http://www.pconline.com.cn/pcjob/other/data/oracle/0411/498044_2.html

........提供了全方位的Java支持==是java写的?vb不要用还是delphi不要用?

铁一样的证据证明:
Oracle数据库是用纯Java写的:

大家可以到此处下载Oracle 10g:
http://download-west.oracle.com/otn/nt/oracle10g/10g_win32_db.zip

在Oracle上注册一下就可以下载了。

下载之后解压:你会发现里面是只有两个.exe的setup文件(总共几百K)
其它基本上是清一色java的.jar文件(还有少数的


.............................
可是老兄,你有没有在装完以后在Oracle目录下搜索一下有多少dll和exe?
真搞不懂oracle为什么要用java来安装软件,java安装又不能跨平台(10g_win32_db--win32?--)
又慢得要命(512内存+p4 2.6G只能看瞪眼睛看它装完,别的程序几乎用不了.....


此人的搪塞:

dll 和也exe也未必是C++写的,汇编可以编写,java也可能用jet或gcj编译成本地代码(如果oracle对担心.class文件被反编译也可能这么做)。oracle安装目录中(不包括JRE)只要有jar文件就说明oracle中有java写的部分,但有dll和exe 不能证明有C++写的部分。
我已经证明了oracle有java写的部分,现在请cpper们证明oracle10g中有用C++写的部分(JRE不在讨论范围之内)


看来这个人到现在都不知道.jar只是一种较特殊的压缩格式


7)此人还用一个叫合金战士的游戏证明java写出的游戏比半条命2和doom3还好-_-
以此推论java更适合写3d游戏


8)此人最新言论:
回复人: healer_kx(天降甘草) ( ) 信誉:100 2005-01-06 11:32:00 得分: 0


最讨厌看学Java的人一副小人得志的嘴脸了。

PS:最讨厌你们这些学Java的人了,一点技术含量都没有。
============================
这么说,Qpper做"往山里背石头"的苦力活很有技术含量了?
重复发明轮子很有意思么?

呵呵,Qpper抹了抹嘴上刚吐完的血说:"我们Qpper辛辛苦苦建了9年的路,Javaer用了半个小时就通过去了!最讨厌你们这些学Java的人了,一点技术含量都没有。"

Qpper们,接着吐血吧!哈哈!

.................................
我们可以推测一下此人的结局:


风,云,蓝色天空,一个word打字员,一个叫光速或氢弹的自称java程序员的某人:

word:我可以马上打出很多格式的字体,你什么时候可以做到.?
楼猪:两个月就可以了.
word:两个月?去死啊,我两个小时就作出来的东西,你要两个月.不如学word吧,java
没前途了
楼猪:我还可以作很多事你word作不了:比方数据排序,数据库操作...

word:开玩笑,难到我作不了?(word写了一个宏)我还可以写病毒呢:你运行一下我的
文档.

楼猪:没想到我学了三年java居然比不上一个word打字员.

楼猪吐血而死.尸体解剖发现大脑空无一物,引为奇谈.
--------------------------------------------------------------
先引用一下别人对楼猪的总结。

Java是好东西,但是楼猪不配谈Java。

楼猪在其他几个帖子上面的表演真是让人"赏心悦目"啊,楼猪克服自己智障的重重困难,给大家贡献了无数笑料。在此向楼猪说一声——辛苦了。
 
 
Top 
 
 回复人: northeaster(快乐编程(对日货没有兴趣)) ( ) 信誉:100  2005-01-27 12:50:00  得分: 0 
 
 
   楼猪,你用Google搜一下"python faster than Java",看看会找到什么。^_^,我找到Python在很多方面的速度远远超过Java,甚至40倍于Java。要是你有兴趣,下次可以发表帖子"Python比Java快",有无数的网页可以给你当证明呢。这样你被别人当笑柄的机会就又多了,相信这样会让你更加**。
 
 
Top 
 
 回复人: qrlvls(≌AIR⌒LIKE) (≤和空气一样帅≥√) ( ) 信誉:96  2005-01-27 13:09:00  得分: 0 
 
 
   脑袋进水了吧
 
 
Top 
 
 回复人: wtk(wang) ( ) 信誉:99  2005-01-27 13:17:00  得分: 0 
 
 
   marking
 
 
Top 
 
 回复人: yjh1982(血精灵) ( ) 信誉:100  2005-01-27 13:25:00  得分: 0 
 
 
   mark for 准备再砸

 

大家都去分析楼主给的测试代码.不用理那java,因为你测了java,楼主又会说你的机器
怎样怎样...不权威.


大家只要知道用那"权威机构"的makefile文件编译后的速度比自己建立工程还慢.
知道java用各种丑陋的测试代码来达到目的就够了:
java:
for (int i = 0; i < n; i++)
        {
            stringBuffer.append("hello");
        }


C++:
for (i=0; i<n; i++)
 {
  for (int i2=0; i2<wcslen(test); i2++)
//这种无耻的循环都写得出来
  {
   strbuf[i3]=test[i2];
   i3++;
  }
 }

 


 
 
Top 
 
 回复人: georgeqp(菜就一个字) ( ) 信誉:100  2005-01-27 14:19:00  得分: 0 
 
 
   同意
 
 
Top 
 
 回复人: yjh1982(血精灵) ( ) 信誉:100  2005-01-27 14:38:00  得分: 0 
 
 
   楼主在证明java比C++快的途中,证据不足,转而说:C++如果不能证明更快,
就没java快

 

全国警察检查官纷纷效仿:
   你能证明自己没犯罪吗?你能证明你不是流窜犯吗?不能,ok,坐牢去吧!
 
 
Top 
 
 回复人: yjh1982(血精灵) ( ) 信誉:100  2005-01-27 14:44:00  得分: 0 
 
 
   用美国国家标准科学研究所提供的makefile.win编译比vc release版的速度还低


大家再来看看我的结果: 用它带的makefile
Using       2.00 seconds min time per kenel.
Composite Score:          220.58
FFT             Mflops:   71.56    (N=1024)
SOR             Mflops:   316.21    (100 x 100)
MonteCarlo:     Mflops:    59.26
Sparse matmult  Mflops:   126.32 (N=1000, nz=5000)
LU              Mflops:  529.61    (M=100, N=100)


 用vc建个工程后加入这些文件:
Using       2.00 seconds min time per kenel.
Composite Score:          396.12
FFT             Mflops:   228.72    (N=1024)
SOR             Mflops:   308.31    (100 x 100)
MonteCarlo:     Mflops:    69.26
Sparse matmult  Mflops:   729.39 (N=1000, nz=5000)
LU              Mflops:  644.94    (M=100, N=100)

 

测试机器:HP D530 SFF型
p4 2.6G+512M

随便谁都可以重现这个可耻的测试

 


楼主的词汇中,权威等于狗屎了

 

楼主YY表演到极点的演绎:
回复人: galaxies(星系) ( ) 信誉:100  2005-01-18 11:50:00  得分: 0 
 
 
   如果某个人愿意,他可以随意注册几个马甲,再到处说在他的电脑上测试C++比java快 或 java比C++快,你能相信他么?不少人的电脑只用128M内存(很多笔记本就是这个配置),光操作系统就占去了200M内存、java只能用虚拟内存在不停的swap内存和硬盘情况下运行。当他们在内存不足的情况下(还可能有许多情况影响java的速度,如编译java时没有使用  -g:none -O来清除调试代码、电脑中有诸多后台进程来影响测试、用的是不同的cpu、不同的操作系统、不同的jdk版本等等)来测试java,当然不可能等到公正的结果。

因此,很多人的电脑实际是不能称为"公正、不受偏见影响的测试系统"的,他们的结果也不是可信的、公正的、可重现的
 
 
..............................
....................................
哈哈哈哈!谁在注册几个马甲?谁在到处说某个语言比某个语言快?
楼主用自己丑恶形象来形容别人的风格还是一成不变啊...
 
 
Top 
 
 回复人: rgc21(求索) ( ) 信誉:90  2005-01-27 17:00:00  得分: 0 
 
 
   GOOGLER又开一帖了,在那个帖子里面我回不了,有时间再砸GOOGER几锤,嘿嘿!我还等着楼主证明1>2呢.
 
 
Top 
 
 回复人: dodofcboy(鼓手) ( ) 信誉:100  2005-01-27 17:24:00  得分: 0 
 
 
   什么好用用什么  管它谁快!!
 
 
Top 
 
 回复人: JetKingLau(时差)(★亦远亦近★) ( ) 信誉:100  2005-01-27 18:27:00  得分: 0 
 
 
   顶
 
 
Top 
 
 回复人: yjh1982(血精灵) ( ) 信誉:100  2005-01-28 08:37:00  得分: 0 
 
 
   就它所谓的"权威",大家都可以亲自验证一下

 

几乎所有的测试中,关于字符串操作的都有问题!
不是多产生临时对象,就是用
sprintf(buf, "%x", i);这样的函数来代替更快的 _itoa(i,buf,16);


不信的可以亲自验证一下.

 

再看看
那被一提又提的"公正"测试
http://www.tommti-systems.de/go.html?http://www.tommti-systems.de/main-Dateien/reviews/languages/benchmarks.html


首先,在证明java更快中此人又玩弄了一次词藻:
把JET,server VM , client VM的结果合并起来比较.
但是实际应用中,单个的java程序根本就不可能又运行JET,又运行server VM

反之,ms的编译器和intel的编译器倒可以分别编译单元,然后用动态连接等技术使得
一个程序用到两个编译器的编译


其次,大家看看上面的字符串连接测试:
java:
static long sc(int n) throws IOException
    {
        startTime = System.currentTimeMillis();
        StringBuilder stringBuffer = new StringBuilder(8 * n);

        for (int i = 0; i < n; i++)
        {
            stringBuffer.append("hello");
        }

        //System.out.println(stringBuffer.toString().length());
        stopTime = System.currentTimeMillis();
        elapsedTime = stopTime - startTime;
        System.out.println("String Concat. (fixed) elapsed time: " + elapsedTime + " ms - " + stringBuffer.length());
        return elapsedTime;
    }

 

C++:
//////////////
double sc(int n) {
 double elapsedTime;
 wchar_t *test=L"hello";
 clock_t stopTime;
 clock_t startTime = clock();

 int i, buflen = 8;
    wchar_t *strbuf = new wchar_t[n*8];
    strbuf[0]='\0';
 
 int i3=0;
 for (i=0; i<n; i++)
 {
  for (int i2=0; i2<wcslen(test); i2++)
//这种无耻的循环都写得出来wcslen每次循环都会调用一次!
  {
   strbuf[i3]=test[i2];
   i3++;
  }
 }
 stopTime = clock();
 elapsedTime = (stopTime - startTime) / (CLOCKS_PER_SEC / (double) 1000.0);
 printf("String Concat. (fixed) elapsed time: %1.0f ms\n", elapsedTime);//, strbuf);
 delete strbuf;

    return elapsedTime;
}

 


http://math.nist.gov/scimark上的例子,用它带的makefile.win
比自己建立工程编译后运行得还慢!


大家再来看看我的结果: 用它带的makefile
Using       2.00 seconds min time per kenel.
Composite Score:          220.58
FFT             Mflops:   71.56    (N=1024)
SOR             Mflops:   316.21    (100 x 100)
MonteCarlo:     Mflops:    59.26
Sparse matmult  Mflops:   126.32 (N=1000, nz=5000)
LU              Mflops:  529.61    (M=100, N=100)


 用vc建个工程后加入这些文件:
Using       2.00 seconds min time per kenel.
Composite Score:          396.12
FFT             Mflops:   228.72    (N=1024)
SOR             Mflops:   308.31    (100 x 100)
MonteCarlo:     Mflops:    69.26
Sparse matmult  Mflops:   729.39 (N=1000, nz=5000)
LU              Mflops:  644.94    (M=100, N=100)

 

测试机器:HP D530 SFF型
p4 2.6G+512M

随便谁都可以重现这个可耻的测试


 
Top 
 
 回复人: happydingdang(我要up出星星) ( ) 信誉:100  2005-01-28 08:53:00  得分: 0 
 
 
   我就不说什么了,接分吧。
 
 
Top 
 
 回复人: migthline111(34) ( ) 信誉:100  2005-01-28 10:08:00  得分: 0 
 
 
   我是很相信实际证据的。而且要科学的权威的全面的可重现的证据。
对于楼主给出的下列网址:
http://www.ukhec.ac.uk/events/javahec/pozo.pdf
作者:美国国家标准科技研究院
http://www.idiom.com/~zilla/Computer/javaCbenchmark.html
作者:美国南加州大学计算机图形与Immersive技术实验室J.P.Lewis and Ulrich Neumann:

我认为它什么也不能代表,因为没有任何证据表明pozo.pdf这篇文章的作者是美国国家标准科技研究院。同样,网址也不能代表什么。因为没有权威证据说明这个网址是属于美国国家标准科技研究院的。而且这个网站上放了这么一篇文章并不代表该网站认同这篇文章的观点,除非有证据表明该网站发表了正式声明。
第二个网址就更可笑了。
第一,并没有证据表明这个测试是J.P.Lewis and Ulrich Neumann给出的。
第二,没有证据表明这两个人是隶属于美国南加州大学计算机图形与Immersive技术实验室的。
第三,没有证据表明这两人的测试结果是美国南加州大学计算机图形与Immersive技术实验室所认同的。


 
Top 
 
 回复人: yjh1982(血精灵) ( ) 信誉:100  2005-01-28 10:09:00  得分: 0 
 
 
   再看看
那被一提又提的"公正"测试
http://www.tommti-systems.de/go.html?http://www.tommti-systems.de/main-Dateien/reviews/languages/benchmarks.html

看看字符串连接测试:
java:
static long sc(int n) throws IOException
    {
        startTime = System.currentTimeMillis();
        StringBuilder stringBuffer = new StringBuilder(8 * n);

        for (int i = 0; i < n; i++)
        {
            stringBuffer.append("hello");
        }

        //System.out.println(stringBuffer.toString().length());
        stopTime = System.currentTimeMillis();
        elapsedTime = stopTime - startTime;
        System.out.println("String Concat. (fixed) elapsed time: " + elapsedTime + " ms - " + stringBuffer.length());
        return elapsedTime;
    }

 

C++:
//////////////
double sc(int n) {
 double elapsedTime;
 wchar_t *test=L"hello";
 clock_t stopTime;
 clock_t startTime = clock();

 int i, buflen = 8;
    wchar_t *strbuf = new wchar_t[n*8];
    strbuf[0]='\0';
 
 int i3=0;
 for (i=0; i<n; i++)
 {
  for (int i2=0; i2<wcslen(test); i2++)
//这种无耻的循环都写得出来
  {
   strbuf[i3]=test[i2];
   i3++;
  }
 }
 stopTime = clock();
 elapsedTime = (stopTime - startTime) / (CLOCKS_PER_SEC / (double) 1000.0);
 printf("String Concat. (fixed) elapsed time: %1.0f ms\n", elapsedTime);//, strbuf);
 delete strbuf;

    return elapsedTime;
}



for (int i2=0; i2<wcslen(test); i2++)
//这种无耻的循环都写得出来
  {
   strbuf[i3]=test[i2];
   i3++;
  }


改为


  int len=wcslen(test);
  for (int i2=0; i2<len; i2++)
//这种无耻的循环都写得出来wcslen每次循环都会调用一次!
  {
   strbuf[i3]=test[i2];
   i3++;
  }

 

看看有多大的性能提升!
大家可以在喜欢的编译器中测:
一开始用原始版本sc,然后用下面的.

#include <iostream>
#include <hash_map.h>
#include <time.h>
double sc(int n) {
 double elapsedTime;
 wchar_t *test=L"hello";
 clock_t stopTime;
 clock_t startTime = clock();

 int i, buflen = 8;
    wchar_t *strbuf = new wchar_t[n*8];
    strbuf[0]='\0';
 
 int i3=0;
 for (i=0; i<n; i++)
 {
        int len=wcslen(test);
  for (int i2=0; i2<len; i2++)
  {
   strbuf[i3]=test[i2];
   i3++;
  }
 }
 stopTime = clock();
 elapsedTime = (stopTime - startTime) / (CLOCKS_PER_SEC / (double) 1000.0);
 printf("String Concat. (fixed) elapsed time: %1.0f ms\n", elapsedTime);//, strbuf);
 delete strbuf;

    return elapsedTime;
}

int
main(int argc, char *argv[]) {
  
   sc(10000000);
    system("pause");
}


我在devcpp中:原来的sc要1428ms, 修改后是326ms!

 

汇编、C/C++、VC MFC、CUDA、3D虚拟仿真一起QQ聊:64616914。QQ群194134342

“Java is not platform-independent, it is the platform”-----B. S (Bjarne Stroustrup)
“Java并非平台无关,它本身就是平台”-----C++之父 比雅尼·斯特劳斯特鲁普

C++之父主页: http://www2.research.att.com/~bs/homepage.html

原标题:可耻的java,C++速度之争

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。