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毫秒