Algorithm 版 (精华区)
发信人: Lerry (life is waiting...), 信区: Algorithm
标 题: [合集]JAVA乘法程序!比pineapple的高精度还快!ft!
发信站: 哈工大紫丁香 (2003年10月12日12:32:10 星期天), 站内信件
────────────────────────────────────────
hewind ( 比pineapple写的程序慢了200倍! :( 555~~) 于 2003年10月09日09:08:37 星期四 说道:
multiply.java
import java.math.BigInteger;
public class multiply{
public static void main(String[] args){
String temp = "1";
for(int i=2;i<=100;i++)
temp +=i;
BigInteger a = new BigInteger(temp);
BigInteger b = a;
long start = System.currentTimeMillis();
long stop = 0;
for(int i=1;i<=100;i++){
b = a.multiply(a);
}
stop = System.currentTimeMillis();
System.out.println(b.toString());
System.out.println(stop-start);
}
}
程序太简单了~~~ :(
────────────────────────────────────────
hewind ( 比pineapple写的程序慢了200倍! :( 555~~) 于 2003年10月09日09:09:13 星期四 说道:
计算上次与pineapple相比计算的算法,
耗时只要0.01,而pineapple的要0.05
ft了!
────────────────────────────────────────
pineapple (菠萝) 于 2003年10月09日09:31:50 星期四 说道:
这个程序只做了两次转换哪, 数字比较小的时候当然快了!
────────────────────────────────────────
hewind ( 比pineapple写的程序慢了200倍! :( 555~~) 于 2003年10月09日09:34:20 星期四 说道:
对啊!
忘了!等等,我再测测 :P
────────────────────────────────────────
hewind ( 比pineapple写的程序慢了200倍! :( 555~~) 于 2003年10月09日09:36:41 星期四 说道:
一样的,还是0。01
看来java内部优化做的挺强!
────────────────────────────────────────
pineapple (菠萝) 于 2003年10月09日09:38:14 星期四 说道:
ms java vm 还是 sdk?
────────────────────────────────────────
ssos (存在与虚无·誓不低头) 于 2003年10月09日09:38:39 星期四 说道:
弄明白是编译器的问题
还是算法的问题
────────────────────────────────────────
hewind ( 比pineapple写的程序慢了200倍! :( 555~~) 于 2003年10月09日09:47:30 星期四 说道:
好像用的是IBM的虚拟机
────────────────────────────────────────
hewind ( 比pineapple写的程序慢了200倍! :( 555~~) 于 2003年10月09日09:49:16 星期四 说道:
nod。应当是编译器的问题
它的程序中没有任何算法及优化的痕迹。
就是很简单的基本运算形式。
应当是JAVA的编译器优化的很好。
但它是怎么优化的?这就是问题了。
连C语言都不能达到这个优化效果~~~
────────────────────────────────────────
pineapple (菠萝) 于 2003年10月09日11:59:30 星期四 说道:
测几组大一点的数据看看复杂度趋势
────────────────────────────────────────
hewind ( 比pineapple写的程序慢了200倍! :( 555~~) 于 2003年10月09日12:21:36 星期四 说道:
计算下面的产生数自加
for( int i = 1 ; i <= 10000 ; ++i ){
itoa(i, tt, 10) ;
op1 += string( tt ) ;
}
重复一千次。
JAVA程序 <400
C : >5000
汗~~~~
测几组大一点的数据看看复杂度趋势
────────────────────────────────────────
hewind ( 比pineapple写的程序慢了200倍! :( 555~~) 于 2003年10月09日12:25:14 星期四 说道:
JAVA内部的优化是怎么做的,怎么这么快呢?
看来只能用汇编写个来比比谁快了?:(
────────────────────────────────────────
pineapple (菠萝) 于 2003年10月09日12:38:12 星期四 说道:
这样的小规模数字测试的始终是转换速度而不是乘法本身的速度!
────────────────────────────────────────
hewind ( 比pineapple写的程序慢了200倍! :( 555~~) 于 2003年10月09日12:42:00 星期四 说道:
我现在测的基本上是加法的超长时间,
你测的效果怎样?
这样的小规模数字测试的始终是转换速度而不是乘法本身的速度!
────────────────────────────────────────
pineapple (菠萝) 于 2003年10月09日12:57:21 星期四 说道:
乘法本身并不快, 至少sdk带的vm是很慢的
────────────────────────────────────────
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.649毫秒