由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 震惊:java 的矩阵操作比 c++ 快?
相关主题
瓶颈在哪儿?functional programming?
问个double和long double的问题在图像算法领域,纯java没戏,用java和c++混合编程很恶心
java在图像分析领域,就是一个扶不起的阿斗c++这种语言注定了会越做越小
请教:double比float算起来还快?请教C++class
问个选语言的问题黑c++的人是不是坐井观天?
嵌入式编程问题C++并发和Java并发有多大区别?
C++多线程和硬件的关系我是一个线程 (转载)
请大牛们帮忙看一段并行c++代码的效率问题讨论程序语言没什么意思,functional programming还是不错的
相关话题的讨论汇总
话题: java话题: c++话题: allsum话题: sys话题: o3
进入Programming版参与讨论
1 (共1页)
t*****z
发帖数: 812
1
m[2000][2000] x v[2000]性能差这么多,叫c++情何以堪啊。。。
测试环境
AMD Athlon(tm) 64 FX-53 Processor
Memory: 8GB
测试结果
[~]$javac jmatrix.java
[~]$/usr/bin/time -p java jmatrix
java allsum=1.8658666E16
real 27.90
user 26.82
sys 0.17
[~]$g++ cmatrix.cpp
[~]$/usr/bin/time -p ./a.out
c++ allsum=1.86587e+16
real 70.89
user 69.99
sys 0.32
测试代码见
http://ping80life.blogspot.com/2012/01/java-c.html
h*******s
发帖数: 8454
2
你电脑咋好慢
我的2年旧本本上跑cpp那个不用40s

【在 t*****z 的大作中提到】
: m[2000][2000] x v[2000]性能差这么多,叫c++情何以堪啊。。。
: 测试环境
: AMD Athlon(tm) 64 FX-53 Processor
: Memory: 8GB
: 测试结果
: [~]$javac jmatrix.java
: [~]$/usr/bin/time -p java jmatrix
: java allsum=1.8658666E16
: real 27.90
: user 26.82

f*******n
发帖数: 12623
3
你忘了optimize
试试
g++ -O2 cmatrix.cpp

g++ -O3 cmatrix.cpp
g*****y
发帖数: 7271
4
FT, 我机器上C++的10秒钟不到就算完了。VC2008

【在 t*****z 的大作中提到】
: m[2000][2000] x v[2000]性能差这么多,叫c++情何以堪啊。。。
: 测试环境
: AMD Athlon(tm) 64 FX-53 Processor
: Memory: 8GB
: 测试结果
: [~]$javac jmatrix.java
: [~]$/usr/bin/time -p java jmatrix
: java allsum=1.8658666E16
: real 27.90
: user 26.82

t*****z
发帖数: 812
5
还是java快一点点
[~]$ /usr/bin/time -p ./a.out
c++ allsum=1.86587e+16
real 29.73
user 29.17
sys 0.16
t*****z
发帖数: 812
6
你的java呢?

【在 g*****y 的大作中提到】
: FT, 我机器上C++的10秒钟不到就算完了。VC2008
t*****z
发帖数: 812
7
你的java呢?

【在 g*****y 的大作中提到】
: FT, 我机器上C++的10秒钟不到就算完了。VC2008
x****u
发帖数: 44466
8
这是正常结果,本来java就不比CPP慢,因为现在都是预编译后执行了。而且GC的效率
比C++自己分配释放要高点。

【在 t*****z 的大作中提到】
: 你的java呢?
g*****y
发帖数: 7271
9
I don't have java installed.

【在 t*****z 的大作中提到】
: 你的java呢?
t*****z
发帖数: 812
10
还是java快一点点
[~]$g++ -O3 cmatrix.cpp
[~]$/usr/bin/time -p ./a.out
c++ allsum=1.86587e+16
real 29.73
user 29.17
sys 0.16
相关主题
嵌入式编程问题functional programming?
C++多线程和硬件的关系在图像算法领域,纯java没戏,用java和c++混合编程很恶心
请大牛们帮忙看一段并行c++代码的效率问题c++这种语言注定了会越做越小
进入Programming版参与讨论
w****i
发帖数: 964
11
JVM会用SSE指令优化,特别是这种矩阵运算。这种类型的操作C++的源码做一下simd和
cache优化,可以快几倍
S**I
发帖数: 15689
12
我的测试结果:
Java:
real 15.39
user 15.22
sys 0.17
g++
real 46.52
user 45.65
sys 0.13
g++ -O2
real 15.40
user 14.97
sys 0.07
g++ -O3
real 14.91
user 14.68
sys 0.07
icpc
real 13.66
user 13.38
sys 0.07
icpc -O2
real 13.46
user 13.26
sys 0.06
icpc -O3
real 13.22
user 13.13
sys 0.05
Java只比没有优化过的g++快,和g++ -O2相当,g++ -O3和icpc都比Java快。

【在 t*****z 的大作中提到】
: m[2000][2000] x v[2000]性能差这么多,叫c++情何以堪啊。。。
: 测试环境
: AMD Athlon(tm) 64 FX-53 Processor
: Memory: 8GB
: 测试结果
: [~]$javac jmatrix.java
: [~]$/usr/bin/time -p java jmatrix
: java allsum=1.8658666E16
: real 27.90
: user 26.82

x****u
发帖数: 44466
13
C++要是想战胜java,可以考虑上GPU。

【在 w****i 的大作中提到】
: JVM会用SSE指令优化,特别是这种矩阵运算。这种类型的操作C++的源码做一下simd和
: cache优化,可以快几倍

S**I
发帖数: 15689
14
不用GPU,Intel C++ Compiler就比Java快了。

【在 x****u 的大作中提到】
: C++要是想战胜java,可以考虑上GPU。
t*****z
发帖数: 812
15
如果在所有的问题上性能都差不多,c++就没有搞头了。
java比c++开发起来快多了(不用考虑指针),更不用说跨平台了。

【在 x****u 的大作中提到】
: 这是正常结果,本来java就不比CPP慢,因为现在都是预编译后执行了。而且GC的效率
: 比C++自己分配释放要高点。

x****u
发帖数: 44466
16
你说的太对了,现在的行情就是几乎所有通用问题都用java,C#,python之类的语言解
决。C++不用说别的,光是内存和线程就有成千上万的陷阱。

【在 t*****z 的大作中提到】
: 如果在所有的问题上性能都差不多,c++就没有搞头了。
: java比c++开发起来快多了(不用考虑指针),更不用说跨平台了。

m*******l
发帖数: 12782
17
我得机器上,怎么这java死循环了?好几分钟了...
也没有结果
c的那个大约37秒
当然我正在听英语,看球赛...

【在 x****u 的大作中提到】
: 你说的太对了,现在的行情就是几乎所有通用问题都用java,C#,python之类的语言解
: 决。C++不用说别的,光是内存和线程就有成千上万的陷阱。

m*******l
发帖数: 12782
18
另外为什么c++的那个要用New?
2000的数组的那个不用吧.
2000*2000的可能要

【在 m*******l 的大作中提到】
: 我得机器上,怎么这java死循环了?好几分钟了...
: 也没有结果
: c的那个大约37秒
: 当然我正在听英语,看球赛...

x****u
发帖数: 44466
19
这种测试你得保证内存充分大,不然一个换页就说不清了。

【在 m*******l 的大作中提到】
: 我得机器上,怎么这java死循环了?好几分钟了...
: 也没有结果
: c的那个大约37秒
: 当然我正在听英语,看球赛...

m*******l
发帖数: 12782
20
java的那个确实司机了...
还没有出结果

【在 m*******l 的大作中提到】
: 另外为什么c++的那个要用New?
: 2000的数组的那个不用吧.
: 2000*2000的可能要

相关主题
请教C++class我是一个线程 (转载)
黑c++的人是不是坐井观天?讨论程序语言没什么意思,functional programming还是不错的
C++并发和Java并发有多大区别?《Intel® 64 and IA-32体系结构:软件开发人员手册》文字版[PDF]
进入Programming版参与讨论
m*******l
发帖数: 12782
21
我估计可能这样...

【在 x****u 的大作中提到】
: 这种测试你得保证内存充分大,不然一个换页就说不清了。
x****u
发帖数: 44466
22
因为java的也是new出来的,为了公平。

【在 m*******l 的大作中提到】
: 另外为什么c++的那个要用New?
: 2000的数组的那个不用吧.
: 2000*2000的可能要

m*******l
发帖数: 12782
23
那为什么c++的那个没有问题?

【在 x****u 的大作中提到】
: 这种测试你得保证内存充分大,不然一个换页就说不清了。
m*******l
发帖数: 12782
24
java为什么不能静态分配?

【在 x****u 的大作中提到】
: 因为java的也是new出来的,为了公平。
x****u
发帖数: 44466
25
java消耗内存大阿。

【在 m*******l 的大作中提到】
: 那为什么c++的那个没有问题?
m*******l
发帖数: 12782
26
靠,这个就是用内存换速度了吧?

【在 x****u 的大作中提到】
: java消耗内存大阿。
x****u
发帖数: 44466
27
现在何止这个,还有用机器数量换开发测试时间的思路呢。

【在 m*******l 的大作中提到】
: 靠,这个就是用内存换速度了吧?
m*******l
发帖数: 12782
28
java allsum=1.8658666E16
real 783.07
user 781.82
sys 0.20

【在 x****u 的大作中提到】
: 现在何止这个,还有用机器数量换开发测试时间的思路呢。
m*******l
发帖数: 12782
29
c++ allsum=1.86587e+16
real 37.14
user 37.08
sys 0.02

【在 m*******l 的大作中提到】
: java allsum=1.8658666E16
: real 783.07
: user 781.82
: sys 0.20

m*******l
发帖数: 12782
30
从系统调用上看,c++明显用的少阿

【在 m*******l 的大作中提到】
: c++ allsum=1.86587e+16
: real 37.14
: user 37.08
: sys 0.02

相关主题
FIR IIR 能否降低算法复杂度?问个double和long double的问题
请教good hash functionjava在图像分析领域,就是一个扶不起的阿斗
瓶颈在哪儿?请教:double比float算起来还快?
进入Programming版参与讨论
M**********n
发帖数: 432
31
I tested on my laptop.
java:
real 0m16.171s
user 0m17.925s
sys 0m10.277s
g++ with -O2
real 0m13.354s
user 0m13.289s
sys 0m0.024s
my g++ version is 4.6.1.

【在 t*****z 的大作中提到】
: m[2000][2000] x v[2000]性能差这么多,叫c++情何以堪啊。。。
: 测试环境
: AMD Athlon(tm) 64 FX-53 Processor
: Memory: 8GB
: 测试结果
: [~]$javac jmatrix.java
: [~]$/usr/bin/time -p java jmatrix
: java allsum=1.8658666E16
: real 27.90
: user 26.82

n******t
发帖数: 4406
32
喀喀喀,问题是你这个问题,java 哪里比C++开发起来快了?
而且真的care 矩阵运算速度,都是用lapack之类的东西。

【在 t*****z 的大作中提到】
: 如果在所有的问题上性能都差不多,c++就没有搞头了。
: java比c++开发起来快多了(不用考虑指针),更不用说跨平台了。

x****u
发帖数: 44466
33
你上印度去雇个团队,开发一个多模块交互的web应用,用C++能活活玩死你。

【在 n******t 的大作中提到】
: 喀喀喀,问题是你这个问题,java 哪里比C++开发起来快了?
: 而且真的care 矩阵运算速度,都是用lapack之类的东西。

B******5
发帖数: 4676
34
这个比较有意思,我电脑上的结果
java allsum=1.8658666E16
real 13.31
user 14.86
sys 7.54
c++ allsum=1.86587e+16
real 35.99
user 35.89
sys 0.01
c++ allsum=1.86587e+16
real 14.50
user 14.44
sys 0.02
O2的
c++ allsum=1.86587e+16
real 14.08
user 14.03
sys 0.00
O3的
c++ allsum=1.86587e+16
real 14.50
user 14.44
sys 0.02
n*w
发帖数: 3393
35
java都用什么版本?
g*****y
发帖数: 7271
36
interesting, 怎么还没见到比我的机器上C++快的?
还是说VC优化做得好?

【在 B******5 的大作中提到】
: 这个比较有意思,我电脑上的结果
: java allsum=1.8658666E16
: real 13.31
: user 14.86
: sys 7.54
: c++ allsum=1.86587e+16
: real 35.99
: user 35.89
: sys 0.01
: c++ allsum=1.86587e+16

t****t
发帖数: 6806
37
你也不说你是什么机器, 那能比较吗
我机器上还只算7.3秒呢, gcc

【在 g*****y 的大作中提到】
: interesting, 怎么还没见到比我的机器上C++快的?
: 还是说VC优化做得好?

B******5
发帖数: 4676
38
忘记说了,g++ 4.6.1

【在 B******5 的大作中提到】
: 这个比较有意思,我电脑上的结果
: java allsum=1.8658666E16
: real 13.31
: user 14.86
: sys 7.54
: c++ allsum=1.86587e+16
: real 35.99
: user 35.89
: sys 0.01
: c++ allsum=1.86587e+16

g*****y
发帖数: 7271
39
这个比我的快,我的就是i7 something而已。gcc -O2 ?

【在 t****t 的大作中提到】
: 你也不说你是什么机器, 那能比较吗
: 我机器上还只算7.3秒呢, gcc

t****t
发帖数: 6806
40
O2 O3 都差不多, 我的是2500K @4.6G, 但是由于VM的限制, 没有AVX支持
再折腾折腾估计还能搞快一点, 现在不但没有AVX, 连SIMD都没用到

【在 g*****y 的大作中提到】
: 这个比我的快,我的就是i7 something而已。gcc -O2 ?
相关主题
请教:double比float算起来还快?C++多线程和硬件的关系
问个选语言的问题请大牛们帮忙看一段并行c++代码的效率问题
嵌入式编程问题functional programming?
进入Programming版参与讨论
a******8
发帖数: 660
41
如果把size增加几倍。。。
r********3
发帖数: 2998
42
Java在内存管理上远胜于一般的C/C++。只有极少数经验老道的C/C++程序员才能写出
Java Virtual Machine那样高效的内存管理器。
这点在Apache Tomcat服务器上比较已经很多了。

【在 t*****z 的大作中提到】
: m[2000][2000] x v[2000]性能差这么多,叫c++情何以堪啊。。。
: 测试环境
: AMD Athlon(tm) 64 FX-53 Processor
: Memory: 8GB
: 测试结果
: [~]$javac jmatrix.java
: [~]$/usr/bin/time -p java jmatrix
: java allsum=1.8658666E16
: real 27.90
: user 26.82

n******s
发帖数: 78
43
为啥没有人测试C#?c#的性能是不是比较差?

【在 x****u 的大作中提到】
: 你说的太对了,现在的行情就是几乎所有通用问题都用java,C#,python之类的语言解
: 决。C++不用说别的,光是内存和线程就有成千上万的陷阱。

l*********s
发帖数: 5409
44
那为啥一般java程序感觉不如C/C++程序snappy呢?
t*****z
发帖数: 812
45
因为C#没有linux版本 :(。要不你弄一个比较一下(最好贴个代码出来)?我不会C#

【在 n******s 的大作中提到】
: 为啥没有人测试C#?c#的性能是不是比较差?
t*****z
发帖数: 812
46
我正想问这个呢。
eclipse编程的时候慢的要命。输入了“." 之后要好久才反应过来。对常用的函数
,自己早就输入完了。
还有xmind也是用java写的吧。慢的要命

【在 l*********s 的大作中提到】
: 那为啥一般java程序感觉不如C/C++程序snappy呢?
t*****z
发帖数: 812
47
你看看那个c++二维数组的指针定义,不是不是觉得java比较make sense?
还有如果c++上了stl,那个用gdb调试起来可不是一般的难受。。。

【在 n******t 的大作中提到】
: 喀喀喀,问题是你这个问题,java 哪里比C++开发起来快了?
: 而且真的care 矩阵运算速度,都是用lapack之类的东西。

t*****z
发帖数: 812
48
这个如何做?有没有文章可以参考?

【在 w****i 的大作中提到】
: JVM会用SSE指令优化,特别是这种矩阵运算。这种类型的操作C++的源码做一下simd和
: cache优化,可以快几倍

t*****z
发帖数: 812
49
就GPU那点内存(特别是local memory)。。。有钱还不如多买几台机器,弄个cluster。
不知道java的MPI性能怎么样

【在 x****u 的大作中提到】
: C++要是想战胜java,可以考虑上GPU。
t*****z
发帖数: 812
50
这个。。。你机器的内存多大?
其实这个程序10^4×10^4×8=800M空间就够了啊

【在 m*******l 的大作中提到】
: java allsum=1.8658666E16
: real 783.07
: user 781.82
: sys 0.20

相关主题
在图像算法领域,纯java没戏,用java和c++混合编程很恶心黑c++的人是不是坐井观天?
c++这种语言注定了会越做越小C++并发和Java并发有多大区别?
请教C++class我是一个线程 (转载)
进入Programming版参与讨论
N********n
发帖数: 8363
51

Java copied all their performance tricks from C#.

【在 n******s 的大作中提到】
: 为啥没有人测试C#?c#的性能是不是比较差?
l*********s
发帖数: 5409
52
I am about to buy a laptop with 2G video memory, hahahaha.

cluster。

【在 t*****z 的大作中提到】
: 就GPU那点内存(特别是local memory)。。。有钱还不如多买几台机器,弄个cluster。
: 不知道java的MPI性能怎么样

t****t
发帖数: 6806
53
GPU那点内存往往就比10个CPU都管用, 这个没什么可不服的
都不用很高档的GPU, 一两百块的就已经很快了

cluster。

【在 t*****z 的大作中提到】
: 就GPU那点内存(特别是local memory)。。。有钱还不如多买几台机器,弄个cluster。
: 不知道java的MPI性能怎么样

t*****z
发帖数: 812
54
看应用吧。
试试16G大小的矩阵的乘法,光copy来copy去就够你受的
或者试试10000次调用Cublas算32X32的(不同)小矩阵运算,看看cublas快还是mkl快

【在 t****t 的大作中提到】
: GPU那点内存往往就比10个CPU都管用, 这个没什么可不服的
: 都不用很高档的GPU, 一两百块的就已经很快了
:
: cluster。

w****i
发帖数: 964
55
cpu也差不多吧,L2 cache比L1慢5-10倍,L2 miss比L1慢几十到上百倍,L1 cache才
64K

【在 t*****z 的大作中提到】
: 看应用吧。
: 试试16G大小的矩阵的乘法,光copy来copy去就够你受的
: 或者试试10000次调用Cublas算32X32的(不同)小矩阵运算,看看cublas快还是mkl快

L***n
发帖数: 6727
56
建议本版搞个不限规则竞赛,java和cpp都允许在源代码上任何级别优化,然后比比运
算速度

mkl快

【在 w****i 的大作中提到】
: cpu也差不多吧,L2 cache比L1慢5-10倍,L2 miss比L1慢几十到上百倍,L1 cache才
: 64K

B******5
发帖数: 4676
57
同感gdb调试的难受。。。

【在 t*****z 的大作中提到】
: 你看看那个c++二维数组的指针定义,不是不是觉得java比较make sense?
: 还有如果c++上了stl,那个用gdb调试起来可不是一般的难受。。。

d****n
发帖数: 1637
58
SSE and Not SSEed are big difference.
And I can't believe that JVM has no SSE optimization.
It makes no sense to compare hand code in C/C++ with Java JVM.
Link from Java:http://www.oracle.com/technetwork/java/javase/6u18-142093.html
"""
Code generation improvements
New intrinsics using SSE 4.2
New intrinsics for Integer/Long bit operations - leading/trailing zeros, bit
count
Unsigned byte and integer loads
Integer load shortening
Elision of needless conversions between integer primitive types
Optimization of common string concatenation patterns

【在 t*****z 的大作中提到】
: 这个如何做?有没有文章可以参考?
t****t
发帖数: 6806
59
装pretty printer了吗

【在 B******5 的大作中提到】
: 同感gdb调试的难受。。。
t****t
发帖数: 6806
60
来个完整的. 不要说不优化, 就是优化得不对, 也差远了. 这个换了台机器, Xeon
5670 @2.93G
EDIT: 加个cache aware的.
######## 不优化
$ g++461 11.C
$ time a.out
c++ allsum=1.86587e+16
37.868u 0.010s 0:37.88 99.9% 0+0k 0+0io 0pf+0w
######## -O2, 最普通的
$ g++461 -O2 11.C
$ time a.out
c++ allsum=1.86587e+16
10.012u 0.018s 0:10.03 99.9% 0+0k 0+0io 0pf+0w
######## -O3, 且允许SIMD
$ g++461 -O3 -funsafe-math-optimizations 11.C
$ time a.out
c++ allsum=1.86587e+16
8.649u 0.010s 0:08.66 99.8% 0+0k 0+0io 0pf+0w
######## -O3, 允许SIMD, 再unroll loop
$ g++461 -O3 -funsafe-math-optimizations -funroll-loops 11.C
$ time a.out
c++ allsum=1.86587e+16
7.909u 0.015s 0:07.92 99.8% 0+0k 0+0io 0pf+0w
######## 最后再加个cache-aware的.
$ g++461 -O3 -funsafe-math-optimizations -funroll-loops -fprefetch-loop-arrays 11.C
$ time a.out
c++ allsum=1.86587e+16
6.953u 0.007s 0:07.00 99.2% 0+0k 0+0io 0pf+0w

【在 t****t 的大作中提到】
: O2 O3 都差不多, 我的是2500K @4.6G, 但是由于VM的限制, 没有AVX支持
: 再折腾折腾估计还能搞快一点, 现在不但没有AVX, 连SIMD都没用到

相关主题
讨论程序语言没什么意思,functional programming还是不错的请教good hash function
《Intel® 64 and IA-32体系结构:软件开发人员手册》文字版[PDF]瓶颈在哪儿?
FIR IIR 能否降低算法复杂度?问个double和long double的问题
进入Programming版参与讨论
B******5
发帖数: 4676
61
那是什么?

【在 t****t 的大作中提到】
: 装pretty printer了吗
t****t
发帖数: 6806
62
gdb 现在支持python的script, 可以把container之类的元素显示得很清楚
理论上每个.so可以带一套script, gdb可以按类型自动选择. 比如说vector, 你本来只
是显示首尾指针, 现在就可以自动显示每个元素, 长的还可以截断.
fedora自动装好的, 别的dist不清楚

【在 B******5 的大作中提到】
: 那是什么?
w***g
发帖数: 5958
63
真有这么好?自从上C++以来我都不怎么用gdb了。

【在 t****t 的大作中提到】
: gdb 现在支持python的script, 可以把container之类的元素显示得很清楚
: 理论上每个.so可以带一套script, gdb可以按类型自动选择. 比如说vector, 你本来只
: 是显示首尾指针, 现在就可以自动显示每个元素, 长的还可以截断.
: fedora自动装好的, 别的dist不清楚

w***g
发帖数: 5958
64
好久没见这么牛的贴了。100大洋给你转过去了。
你把ATLAS也加了吧,我再发你100大洋。
还有,你那个-funsafe-math-optimizations算出来结果还对吗?

【在 t****t 的大作中提到】
: 来个完整的. 不要说不优化, 就是优化得不对, 也差远了. 这个换了台机器, Xeon
: 5670 @2.93G
: EDIT: 加个cache aware的.
: ######## 不优化
: $ g++461 11.C
: $ time a.out
: c++ allsum=1.86587e+16
: 37.868u 0.010s 0:37.88 99.9% 0+0k 0+0io 0pf+0w
: ######## -O2, 最普通的
: $ g++461 -O2 11.C

t****t
发帖数: 6806
65
...看你怎么定义"好"了, 我觉得就是那么回事, 说好也谈不上, 但是也不至于很难用
STL的大部分类型都支持, 特别是container, iterator, smart pointer, 够用就可以
了. 你也可以针对自己的类型写script.
这个对于调试好的库很有用, 你只关心一些特定的成员, 辅助成员不关心. 比如你写个
定点数类型, 主要就是值和精度, 别的辅助值都不用显示.

【在 w***g 的大作中提到】
: 真有这么好?自从上C++以来我都不怎么用gdb了。
t****t
发帖数: 6806
66
没装atlas, 下次吧.
unsafe-math-optimization的目的是允许对double使用交换律和结合律, 要不然没法
vectorize. 比如说a+b+c+d应该是(((a+b)+c)+d), 但是你想vectorize, 一般就要计算
((a+c)+(b+d)), 你得允许这个.

【在 w***g 的大作中提到】
: 好久没见这么牛的贴了。100大洋给你转过去了。
: 你把ATLAS也加了吧,我再发你100大洋。
: 还有,你那个-funsafe-math-optimizations算出来结果还对吗?

g****v
发帖数: 971
67
技术贴要顶。
y***d
发帖数: 2330
68
Don't forget -ffast-math...
java allsum=1.8658666E16
real 0m9.719s
g++ -O3 test.cpp
c++ allsum=1.86587e+16
real 0m9.116s
g++ -O3 -ffast-math test.cpp
c++ allsum=1.86587e+16
real 0m6.029s
g++ -O3 -march=native -mtune=native -ffast-math test.cpp
c++ allsum=1.86587e+16
real 0m4.888s
g++ -O3 -march=native -mtune=native -ffast-math test.cpp -funsafe-math-
optimizations -funroll-loops -fprefetch-loop-arrays
c++ allsum=1.86587e+16
real 0m4.235s

【在 t*****z 的大作中提到】
: m[2000][2000] x v[2000]性能差这么多,叫c++情何以堪啊。。。
: 测试环境
: AMD Athlon(tm) 64 FX-53 Processor
: Memory: 8GB
: 测试结果
: [~]$javac jmatrix.java
: [~]$/usr/bin/time -p java jmatrix
: java allsum=1.8658666E16
: real 27.90
: user 26.82

y***d
发帖数: 2330
69
恩,基本上前面说的 -funsafe-math-optimizations, cache optimization 加上
navtie 就够了
g++ -O3 test.cpp -funsafe-math-optimizations -funroll-loops -fprefetch-loop
-arrays -march=native -mtune=native
c++ allsum=1.86587e+16
real 0m4.253s
real 0m4.300s
real 0m4.296s

【在 y***d 的大作中提到】
: Don't forget -ffast-math...
: java allsum=1.8658666E16
: real 0m9.719s
: g++ -O3 test.cpp
: c++ allsum=1.86587e+16
: real 0m9.116s
: g++ -O3 -ffast-math test.cpp
: c++ allsum=1.86587e+16
: real 0m6.029s
: g++ -O3 -march=native -mtune=native -ffast-math test.cpp

t****t
发帖数: 6806
70
for this case, fast-math means unsafe-math-optimizations, because others do
not apply
and arch=native means tune=native
i tried arch=native, doesn't improve much, maybe depends on platform

loop

【在 y***d 的大作中提到】
: 恩,基本上前面说的 -funsafe-math-optimizations, cache optimization 加上
: navtie 就够了
: g++ -O3 test.cpp -funsafe-math-optimizations -funroll-loops -fprefetch-loop
: -arrays -march=native -mtune=native
: c++ allsum=1.86587e+16
: real 0m4.253s
: real 0m4.300s
: real 0m4.296s

相关主题
问个double和long double的问题问个选语言的问题
java在图像分析领域,就是一个扶不起的阿斗嵌入式编程问题
请教:double比float算起来还快?C++多线程和硬件的关系
进入Programming版参与讨论
B******5
发帖数: 4676
71
大牛给个教程吧,我都是用pvector一类的

【在 t****t 的大作中提到】
: gdb 现在支持python的script, 可以把container之类的元素显示得很清楚
: 理论上每个.so可以带一套script, gdb可以按类型自动选择. 比如说vector, 你本来只
: 是显示首尾指针, 现在就可以自动显示每个元素, 长的还可以截断.
: fedora自动装好的, 别的dist不清楚

x****u
发帖数: 44466
72
语法高亮主要瓶颈是算法。

【在 t*****z 的大作中提到】
: 我正想问这个呢。
: eclipse编程的时候慢的要命。输入了“." 之后要好久才反应过来。对常用的函数
: ,自己早就输入完了。
: 还有xmind也是用java写的吧。慢的要命

x****u
发帖数: 44466
73
GPU性价比最高,有的运算利润低,必须考虑性价比。

cluster。

【在 t*****z 的大作中提到】
: 就GPU那点内存(特别是local memory)。。。有钱还不如多买几台机器,弄个cluster。
: 不知道java的MPI性能怎么样

g*****y
发帖数: 7271
74
I enabled openmp in VC2008 and added the following line
before the loop and recompile:
#pragma omp parallel for default(none) \
private(k,i,j,sum) shared(m,x,y,allsum)
Now it takes 2 seconds (previous 10 secs). But the result
is quite different because of the multithreading.
In JVM, how to utilize multi-core?

others
do

【在 t****t 的大作中提到】
: for this case, fast-math means unsafe-math-optimizations, because others do
: not apply
: and arch=native means tune=native
: i tried arch=native, doesn't improve much, maybe depends on platform
:
: loop

t****t
发帖数: 6806
75
这也要教程啊, 直接google一下就好了嘛, 我就用的fedora自带的, 你要别的dist看这里
http://sourceware.org/gdb/wiki/STLSupport

【在 B******5 的大作中提到】
: 大牛给个教程吧,我都是用pvector一类的
B******5
发帖数: 4676
76
thx~

这里

【在 t****t 的大作中提到】
: 这也要教程啊, 直接google一下就好了嘛, 我就用的fedora自带的, 你要别的dist看这里
: http://sourceware.org/gdb/wiki/STLSupport

y***d
发帖数: 2330
77
mine is i3-2100

do

【在 t****t 的大作中提到】
: for this case, fast-math means unsafe-math-optimizations, because others do
: not apply
: and arch=native means tune=native
: i tried arch=native, doesn't improve much, maybe depends on platform
:
: loop

D*******a
发帖数: 3688
78
nice
also beware which gcc you are using (linux vs osx). I had this experience
still unexplained:
发信人: DrumMania (嫑跑,兲), 信区: Programming
标 题: 运行时间比较
发信站: BBS 未名空间站 (Sat Apr 26 14:06:50 2008), 转信
有两台机器:
A: P4-2.6GHT, 512M memory, Fedora 8, GCC 4.1.2
B: P4-2.8GHT, 1.5G memory, Mac OS X 10.5.2, GCC 4.0.1 (Xcode)
用-O3编译同一个程序(min cut graph partitioning using simulated annealing)
运行时间差很远
A只用了2:21,但是B却用了5:51
按道理B应该运算能力更强,可是实际上却差那么远,怎么解释呢?

【在 t****t 的大作中提到】
: 来个完整的. 不要说不优化, 就是优化得不对, 也差远了. 这个换了台机器, Xeon
: 5670 @2.93G
: EDIT: 加个cache aware的.
: ######## 不优化
: $ g++461 11.C
: $ time a.out
: c++ allsum=1.86587e+16
: 37.868u 0.010s 0:37.88 99.9% 0+0k 0+0io 0pf+0w
: ######## -O2, 最普通的
: $ g++461 -O2 11.C

t****t
发帖数: 6806
79
如果是native的, 很好理解啊, 有AVX支持了嘛, 正常的x64应该是enable到SSE3

【在 y***d 的大作中提到】
: mine is i3-2100
:
: do

t****t
发帖数: 6806
80
blame OSX! haha
seriously, gcc 4.0 and 4.1 are different. and you need to list your CPU
model number. depending on your application (how much kernel call?), OS
sometimes does matter, too.

【在 D*******a 的大作中提到】
: nice
: also beware which gcc you are using (linux vs osx). I had this experience
: still unexplained:
: 发信人: DrumMania (嫑跑,兲), 信区: Programming
: 标 题: 运行时间比较
: 发信站: BBS 未名空间站 (Sat Apr 26 14:06:50 2008), 转信
: 有两台机器:
: A: P4-2.6GHT, 512M memory, Fedora 8, GCC 4.1.2
: B: P4-2.8GHT, 1.5G memory, Mac OS X 10.5.2, GCC 4.0.1 (Xcode)
: 用-O3编译同一个程序(min cut graph partitioning using simulated annealing)

相关主题
请大牛们帮忙看一段并行c++代码的效率问题c++这种语言注定了会越做越小
functional programming?请教C++class
在图像算法领域,纯java没戏,用java和c++混合编程很恶心黑c++的人是不是坐井观天?
进入Programming版参与讨论
n******t
发帖数: 4406
81
那种东西,我可以保证C/C++ 比java快的不止这么一点点。

【在 x****u 的大作中提到】
: 你上印度去雇个团队,开发一个多模块交互的web应用,用C++能活活玩死你。
n******t
发帖数: 4406
82
二维数组到底难在哪里我一直没搞明白。。。
分一个一维数组自己寻址不就完了。
而且C/C++缺损库比较少,但是serious的开发都会用自己或这工业级的库函数。

【在 t*****z 的大作中提到】
: 你看看那个c++二维数组的指针定义,不是不是觉得java比较make sense?
: 还有如果c++上了stl,那个用gdb调试起来可不是一般的难受。。。

t*****z
发帖数: 812
83
我想他指的是开发快。

【在 n******t 的大作中提到】
: 那种东西,我可以保证C/C++ 比java快的不止这么一点点。
x****u
发帖数: 44466
84
哈,等你见过印度团队的代码再来说。

【在 n******t 的大作中提到】
: 那种东西,我可以保证C/C++ 比java快的不止这么一点点。
x****u
发帖数: 44466
85
有了工业级的库,那上点python之类的胶水语言就足够了。

【在 n******t 的大作中提到】
: 二维数组到底难在哪里我一直没搞明白。。。
: 分一个一维数组自己寻址不就完了。
: 而且C/C++缺损库比较少,但是serious的开发都会用自己或这工业级的库函数。

L***n
发帖数: 6727
86
试了下gotoblas2,我的机器
$ cat /proc/cpuinfo | grep model\ name | head -1
model name : Intel(R) Core(TM) i7 CPU Q 740 @ 1.73GHz
$ time -p java jmatrix
java allsum=1.8658666E16
real 11.69
user 12.68
sys 6.65
C++ 和优化flags
$ g++ -O3 -funsafe-math-optimizations -funroll-loops -fprefetch-loop-arrays
-march=native cmatrix.cpp -o cmatrix
$ time -p ./cmatrix
c++ allsum=1.86587e+16
real 8.04
user 8.00
sys 0.03
trivially在最外层循环里用gotoblas(就是把里面的二重循环换成Blas Level2)
g++ -O2 -funroll-loops -fprefetch-loop-arrays -march=native -msse4 matrix.
cpp -o matrix -lgfortran -lgoto2
$ time -p ./matrix
c++ allsum=1.86587e+16
real 7.34
user 27.78
sys 0.90
如果把最外层循环也去掉(因为里面算矩阵和向量乘法的部分完全和外层循环变量k无关
)当然会提高很多,但是这样和原来的算法完全不同了,所以比较有点unfair,我猜
java这么处理速度应该差不多。
$g++ -O2 -funroll-loops -fprefetch-loop-arrays -march=native -msse4 matrix.
cpp -o matrix -lgfortran -lgoto2
$ time -p ./matrix
c++ allsum=1.86587e+16
real 0.46
user 0.74
sys 0.54
GotoBLAS应该是最快的BLAS之一了,另外我注意到jvm用了两个core, 没用BLAS的C++只
用了一个core(所以可以用openmp优化,但是要考虑synchronization,不然结果可能不
正确,所以就算了), GotoBLAS似乎用了4个core(太快了一闪而过,我是看着htop猜的
,每个core最多用到40%)

【在 t****t 的大作中提到】
: 没装atlas, 下次吧.
: unsafe-math-optimization的目的是允许对double使用交换律和结合律, 要不然没法
: vectorize. 比如说a+b+c+d应该是(((a+b)+c)+d), 但是你想vectorize, 一般就要计算
: ((a+c)+(b+d)), 你得允许这个.

t****t
发帖数: 6806
87
最外层本来就是为了白做功写的(反复运行N次), 要不然测的时间不准. 去掉就没的玩
了.

arrays

【在 L***n 的大作中提到】
: 试了下gotoblas2,我的机器
: $ cat /proc/cpuinfo | grep model\ name | head -1
: model name : Intel(R) Core(TM) i7 CPU Q 740 @ 1.73GHz
: $ time -p java jmatrix
: java allsum=1.8658666E16
: real 11.69
: user 12.68
: sys 6.65
: C++ 和优化flags
: $ g++ -O3 -funsafe-math-optimizations -funroll-loops -fprefetch-loop-arrays

g*****y
发帖数: 7271
88
Modified the openmp directive a little bit and now
the result is correct and it takes about 2 seconds
on i7 860 @ 2.8GHz (4 cores).
just put the following line before the k loop:
#pragma omp parallel for reduction(+:allsum) \
private(k,i,j,sum) shared(m,x,y)
There seems to be JOMP developed for java. Anybody tested
its performance?

【在 g*****y 的大作中提到】
: I enabled openmp in VC2008 and added the following line
: before the loop and recompile:
: #pragma omp parallel for default(none) \
: private(k,i,j,sum) shared(m,x,y,allsum)
: Now it takes 2 seconds (previous 10 secs). But the result
: is quite different because of the multithreading.
: In JVM, how to utilize multi-core?
:
: others
: do

t*****n
发帖数: 4908
89
gotoblas2最少支持2核吧。应该说速度快一倍啊。可是不明显。

arrays

【在 L***n 的大作中提到】
: 试了下gotoblas2,我的机器
: $ cat /proc/cpuinfo | grep model\ name | head -1
: model name : Intel(R) Core(TM) i7 CPU Q 740 @ 1.73GHz
: $ time -p java jmatrix
: java allsum=1.8658666E16
: real 11.69
: user 12.68
: sys 6.65
: C++ 和优化flags
: $ g++ -O3 -funsafe-math-optimizations -funroll-loops -fprefetch-loop-arrays

t*****n
发帖数: 4908
90
楼主的代码有些问题:
1 数组y没用到,不影响结果
2 矩阵m乘向量x可以放到循环外面。如果是商业代码的话这些优化肯定要做。
3 blas库有gemv()专门做矩阵乘向量,质量肯定比手写的高。
我理解这些代码是做测试用的。但是测试最好是来自实例。

【在 t*****z 的大作中提到】
: m[2000][2000] x v[2000]性能差这么多,叫c++情何以堪啊。。。
: 测试环境
: AMD Athlon(tm) 64 FX-53 Processor
: Memory: 8GB
: 测试结果
: [~]$javac jmatrix.java
: [~]$/usr/bin/time -p java jmatrix
: java allsum=1.8658666E16
: real 27.90
: user 26.82

相关主题
C++并发和Java并发有多大区别?《Intel® 64 and IA-32体系结构:软件开发人员手册》文字版[PDF]
我是一个线程 (转载)FIR IIR 能否降低算法复杂度?
讨论程序语言没什么意思,functional programming还是不错的请教good hash function
进入Programming版参与讨论
t*****n
发帖数: 4908
91
照楼主的测试例子我用dgemv()和dsum()改写了一下。没有减少循环层次。另外用
gotoblas做blas库。在我的athlon双核机器上速度是gcc -03两倍。
那位在linux上跑一下看看。多谢
#include
#include
#include
#include
#define size 2000
int main(void)
{
double *m;
double x[size], k[size];
long begin, end;
double sum = 0.0;
int i, j;
begin = time(0);
m = malloc(size * size * sizeof(*m));
for (i = 0; i < size; i++)
{
for (j = 0; j < size; j++)
{
m[i * size + j] = i + j;
}
x[i] = i;
}
for (i = 0; i < size; i++)
{
for (j = 0; j < size; j++)
{
k[j] = size * i;
}
cblas_dgemv( CblasRowMajor, CblasNoTrans, size, size, 1, m, size, x,
1,
1, k, 1);
sum = sum + cblas_dasum( size, k, 1 );
}
end = time(0);
printf( "Wall time = %d, Result = %g\n", (int)(end - begin), sum );
free(m);
return 0;
}

【在 t*****z 的大作中提到】
: m[2000][2000] x v[2000]性能差这么多,叫c++情何以堪啊。。。
: 测试环境
: AMD Athlon(tm) 64 FX-53 Processor
: Memory: 8GB
: 测试结果
: [~]$javac jmatrix.java
: [~]$/usr/bin/time -p java jmatrix
: java allsum=1.8658666E16
: real 27.90
: user 26.82

w*********l
发帖数: 1337
92
我的g++ -O3大概9秒,java11秒。
我想说的是,你如果光比这些纯计算,java基本没有劣势。最后不就是相同的那几条指
令吗?比来比去就是比编译器了,而且这种情况可能java还更有优势一点点,因为虚拟
机可以做profiling,动态adapt to code behavior。java最头疼的地方是内存管理。
我曾经试图用eclipse编译Linux内核,结果导入project直接jvm就崩掉了。你要测怎么
也要写个东西迫使java反复做gc啊。

【在 t*****z 的大作中提到】
: m[2000][2000] x v[2000]性能差这么多,叫c++情何以堪啊。。。
: 测试环境
: AMD Athlon(tm) 64 FX-53 Processor
: Memory: 8GB
: 测试结果
: [~]$javac jmatrix.java
: [~]$/usr/bin/time -p java jmatrix
: java allsum=1.8658666E16
: real 27.90
: user 26.82

y**f
发帖数: 32
93
主要还是看算法吧
俺当年读书时的一个作业是用HSL库来算大型稀疏矩阵的特征值,就算你在cluster上跑
计算(无论用Java还是C++)时申请的内存动不动就是一个完全矩阵,那和一些专用库算
法比较也快不起来
a********m
发帖数: 15480
94
那个指针定义第一眼有点别扭,不过反应过来也很make sense,语言特征而已。
template的调试大多很恶心,stl,boost啥的。俺最讨厌复杂的template和宏。可是有
不少人非常喜欢。。。。

【在 t*****z 的大作中提到】
: 你看看那个c++二维数组的指针定义,不是不是觉得java比较make sense?
: 还有如果c++上了stl,那个用gdb调试起来可不是一般的难受。。。

a********m
发帖数: 15480
95
这个比较不公平吧。印度团队的java也可以很烂。。。。

【在 x****u 的大作中提到】
: 哈,等你见过印度团队的代码再来说。
a****l
发帖数: 8211
96
对的,说到底就是比编译器.

【在 w*********l 的大作中提到】
: 我的g++ -O3大概9秒,java11秒。
: 我想说的是,你如果光比这些纯计算,java基本没有劣势。最后不就是相同的那几条指
: 令吗?比来比去就是比编译器了,而且这种情况可能java还更有优势一点点,因为虚拟
: 机可以做profiling,动态adapt to code behavior。java最头疼的地方是内存管理。
: 我曾经试图用eclipse编译Linux内核,结果导入project直接jvm就崩掉了。你要测怎么
: 也要写个东西迫使java反复做gc啊。

a********m
发帖数: 15480
97
闹得。

【在 a****l 的大作中提到】
: 对的,说到底就是比编译器.
x****u
发帖数: 44466
98
烂java绝对比烂cpp好,烂cpp的随机资源泄漏或者随机崩溃是人类无法阻止的。

【在 a********m 的大作中提到】
: 这个比较不公平吧。印度团队的java也可以很烂。。。。
a********m
发帖数: 15480
99
是。可是比较语言需要在正常情况下比呀。

【在 x****u 的大作中提到】
: 烂java绝对比烂cpp好,烂cpp的随机资源泄漏或者随机崩溃是人类无法阻止的。
t*****n
发帖数: 4908
100
没人试一试我写的程序?看来大家都不愿意看代码。我以前给商业软件写slover的时候
,就是用的blas库。MKL也用过。
JAVA就不用提了。目前为止商用有限元软件没有一个是用JAVA写的。Fortran/C/C++是
主流。

【在 t*****n 的大作中提到】
: 照楼主的测试例子我用dgemv()和dsum()改写了一下。没有减少循环层次。另外用
: gotoblas做blas库。在我的athlon双核机器上速度是gcc -03两倍。
: 那位在linux上跑一下看看。多谢
: #include
: #include
: #include
: #include
: #define size 2000
: int main(void)
: {

相关主题
瓶颈在哪儿?请教:double比float算起来还快?
问个double和long double的问题问个选语言的问题
java在图像分析领域,就是一个扶不起的阿斗嵌入式编程问题
进入Programming版参与讨论
c****p
发帖数: 6474
101
没有JVM咋办。

【在 t*****z 的大作中提到】
: 如果在所有的问题上性能都差不多,c++就没有搞头了。
: java比c++开发起来快多了(不用考虑指针),更不用说跨平台了。

w*********l
发帖数: 1337
102
这个自然。两种语言面对的程序员门槛不一样。

【在 x****u 的大作中提到】
: 烂java绝对比烂cpp好,烂cpp的随机资源泄漏或者随机崩溃是人类无法阻止的。
i*****o
发帖数: 1714
103
呵呵, 用javascript做了一下,竟然只用了不到三分钟,而没有优化的 C++用了48秒
$ time node main.js
js allsum: 18658666000000000
real 2m54.334s
user 2m54.260s
sys 0m0.998s
$ time ./a.out
c++ allsum=1.86587e+16
real 0m48.793s
user 0m48.720s
sys 0m0.061s
java 和 O3 的C++分别是17 和 15秒。
t****t
发帖数: 6806
104
"只用了"三分钟?

【在 i*****o 的大作中提到】
: 呵呵, 用javascript做了一下,竟然只用了不到三分钟,而没有优化的 C++用了48秒
: $ time node main.js
: js allsum: 18658666000000000
: real 2m54.334s
: user 2m54.260s
: sys 0m0.998s
: $ time ./a.out
: c++ allsum=1.86587e+16
: real 0m48.793s
: user 0m48.720s

i*****o
发帖数: 1714
105
我本来以为要几个小时来算的。现在只是比最快的慢十倍。javascript是JIT,其他呢
俩都是事先编译加优化好了的,差十倍是可以理解的。
我对这个感兴趣主要是因为数组是javascript的软肋,尤其这个计算用的还是两维数组
。如果这个例子只差十倍,其它的会差的很少。

【在 t****t 的大作中提到】
: "只用了"三分钟?
g*****g
发帖数: 34805
106
我见过的例子,C++不做优化比Java慢是很常见的。做优化之后一般比Java快个20%-50%。
但问题不在这里,把一个大程序扔到集群上工作,C++在开发上的要花时间要比Java多
几倍。所以使用什么语言跟啥行业是很有关系的,对于大多数商业开发,通常的要求是
性能满足要求,成本越低越好(包括开发和硬件成本),时间越短越好。这个时候Java的
优势就大太多了。OS,学术,某些特定行业(如gaming), C++是合适的选择。
g*****y
发帖数: 7271
107
JVM好像不用multi-core啊,丢cluster上有什么帮助么?还是说假设
很多矩阵求和的问题,丢不同机器上算?

50%。

【在 g*****g 的大作中提到】
: 我见过的例子,C++不做优化比Java慢是很常见的。做优化之后一般比Java快个20%-50%。
: 但问题不在这里,把一个大程序扔到集群上工作,C++在开发上的要花时间要比Java多
: 几倍。所以使用什么语言跟啥行业是很有关系的,对于大多数商业开发,通常的要求是
: 性能满足要求,成本越低越好(包括开发和硬件成本),时间越短越好。这个时候Java的
: 优势就大太多了。OS,学术,某些特定行业(如gaming), C++是合适的选择。

g*****g
发帖数: 34805
108
JVM当然用multi-core,multi-threading向来是java的强项,clustering更是了。

【在 g*****y 的大作中提到】
: JVM好像不用multi-core啊,丢cluster上有什么帮助么?还是说假设
: 很多矩阵求和的问题,丢不同机器上算?
:
: 50%。

g*****y
发帖数: 7271
109
为什么我run那个java version好像只用了一个core呢?要设置什么东西么?

【在 g*****g 的大作中提到】
: JVM当然用multi-core,multi-threading向来是java的强项,clustering更是了。
g*****g
发帖数: 34805
110
因为那是个单线程程序。顺便说一下,从性能的角度讲,显式地建议GC
(System.gc())是影响性能的,并且不是一个常见的做法。JVM可以
在大多数情况下做到需要内存的时候才去做GC,而且有很多可调的算法
和参数可以优化,并且有些GC算法是可以在一个或多个并行的线程
上进行的,而System.gc()则是一个blocking call。返回的时候GC已经
做完了。
换句话说,在多核环境,和多次调用这个程序段的情况下,这个benchmark
都低估了Java的性能。

【在 g*****y 的大作中提到】
: 为什么我run那个java version好像只用了一个core呢?要设置什么东西么?
相关主题
嵌入式编程问题functional programming?
C++多线程和硬件的关系在图像算法领域,纯java没戏,用java和c++混合编程很恶心
请大牛们帮忙看一段并行c++代码的效率问题c++这种语言注定了会越做越小
进入Programming版参与讨论
t*****n
发帖数: 4908
111
好虫这个说到点子上了。补充一点,游戏行业只是冰山一角。对程序有性能要求的商业
软件多的很,比如天气预报、碰撞仿真、有限元计算、生物计算等等。我以前在超级计
算中心上过班,从来没见过JAVA的程序在集群上跑过。常见的是Fortran/C/C++的程序。
就软件工程来说,C++也不会比Java多50%以上的开发和维护时间。两者应该差不多。问
题是C++进化的现在,已经有些走火入魔了。C++对编程者的要求很高,需要知道那些是
精华,那些是糟粕。

50%。

【在 g*****g 的大作中提到】
: 我见过的例子,C++不做优化比Java慢是很常见的。做优化之后一般比Java快个20%-50%。
: 但问题不在这里,把一个大程序扔到集群上工作,C++在开发上的要花时间要比Java多
: 几倍。所以使用什么语言跟啥行业是很有关系的,对于大多数商业开发,通常的要求是
: 性能满足要求,成本越低越好(包括开发和硬件成本),时间越短越好。这个时候Java的
: 优势就大太多了。OS,学术,某些特定行业(如gaming), C++是合适的选择。

g*****g
发帖数: 34805
112
很多中大型web应用,比如几乎所有的银行网站,比如ebay都是Java的程序在集群上
跑。大部分商业应用是计算复杂度低,但逻辑复杂或者繁多。你说的那些则相反,
基本属于科学计算的范畴。

序。

【在 t*****n 的大作中提到】
: 好虫这个说到点子上了。补充一点,游戏行业只是冰山一角。对程序有性能要求的商业
: 软件多的很,比如天气预报、碰撞仿真、有限元计算、生物计算等等。我以前在超级计
: 算中心上过班,从来没见过JAVA的程序在集群上跑过。常见的是Fortran/C/C++的程序。
: 就软件工程来说,C++也不会比Java多50%以上的开发和维护时间。两者应该差不多。问
: 题是C++进化的现在,已经有些走火入魔了。C++对编程者的要求很高,需要知道那些是
: 精华,那些是糟粕。
:
: 50%。

a9
发帖数: 21638
113
你们的超级计算中心的超级计算机上,装jre了吗?哈哈

序。
Java多
求是
Java的

【在 t*****n 的大作中提到】
: 好虫这个说到点子上了。补充一点,游戏行业只是冰山一角。对程序有性能要求的商业
: 软件多的很,比如天气预报、碰撞仿真、有限元计算、生物计算等等。我以前在超级计
: 算中心上过班,从来没见过JAVA的程序在集群上跑过。常见的是Fortran/C/C++的程序。
: 就软件工程来说,C++也不会比Java多50%以上的开发和维护时间。两者应该差不多。问
: 题是C++进化的现在,已经有些走火入魔了。C++对编程者的要求很高,需要知道那些是
: 精华,那些是糟粕。
:
: 50%。

y**b
发帖数: 10166
114
看需求了,我们有台专用的supercomputer,
就特意装了java,因为有个模块是java编写
的,慢的一塌糊涂。
另外一台通用的supercomputer就没装。

【在 a9 的大作中提到】
: 你们的超级计算中心的超级计算机上,装jre了吗?哈哈
:
: 序。
: Java多
: 求是
: Java的

c****r
发帖数: 576
115
Matlab矩阵计算也就零点几秒,不用循环。
tic;
s = m * repmat((0:1999)',1,2000);
allsum = sum(s(:)) + sum(0:1999);
toc
Elapsed time is 0.478149 seconds
t****t
发帖数: 6806
116
你这个是作弊了, 程序里那个外层循环是故意放在那里作重复计算等时间用的, 你给手
工优化掉了算什么?

【在 c****r 的大作中提到】
: Matlab矩阵计算也就零点几秒,不用循环。
: tic;
: s = m * repmat((0:1999)',1,2000);
: allsum = sum(s(:)) + sum(0:1999);
: toc
: Elapsed time is 0.478149 seconds

1 (共1页)
进入Programming版参与讨论
相关主题
讨论程序语言没什么意思,functional programming还是不错的问个选语言的问题
《Intel® 64 and IA-32体系结构:软件开发人员手册》文字版[PDF]嵌入式编程问题
FIR IIR 能否降低算法复杂度?C++多线程和硬件的关系
请教good hash function请大牛们帮忙看一段并行c++代码的效率问题
瓶颈在哪儿?functional programming?
问个double和long double的问题在图像算法领域,纯java没戏,用java和c++混合编程很恶心
java在图像分析领域,就是一个扶不起的阿斗c++这种语言注定了会越做越小
请教:double比float算起来还快?请教C++class
相关话题的讨论汇总
话题: java话题: c++话题: allsum话题: sys话题: o3