免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2354 | 回复: 14
打印 上一主题 下一主题

这个程序你的机器运行多少时间? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-16 13:08 |只看该作者 |倒序浏览
public class loop
{
  public static void main(String args[])
  {
          int i,j;
        long k=0;
      for(i=1;i<=100000;i++)
       for(j=1;j<=100000;j++)
       k++;
    System.out.println("k="+k);
   }
}


我的机器在windows下用jsdk1.4及1.5的javac编译出来的class文件,要用30秒左右。用linux自带的java编译器编译后运行也差不多,用gcj编译该java文件,运行结果也差不多。

[ 本帖最后由 jxh_ty 于 2005-11-16 15:27 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2005-11-16 14:09 |只看该作者
在一次偶然的机会下编译新的class文件居然只要30秒!!!!大家可以试一下


各位可以先试一下运行时间,然后把它反编译过来,看看源代码,再把源代码再编译成新的class文件,对比一下速度。

[ 本帖最后由 jxh_ty 于 2005-11-16 15:02 编辑 ]

loop.rar

516 Bytes, 下载次数: 38

loop.class

论坛徽章:
0
3 [报告]
发表于 2005-11-16 14:10 |只看该作者
这样的程序测试有用么?
System.out.println("k="+k);??
真敢干,我可不想我的机器遭罪

论坛徽章:
0
4 [报告]
发表于 2005-11-16 14:15 |只看该作者
这个程序只是一个二重循环,让k自加,最后输出结果!
很奇怪,只有在那台机器上才可以编译成这么快速度的class文件。在其它机器下都不行,软件环境都一样,只是机器不同而已。

[ 本帖最后由 jxh_ty 于 2005-11-16 14:20 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2005-11-16 14:25 |只看该作者
想知道为什么吗,因为你的程序中少写一个0
反编译出来的代码

// Decompiled by DJ v3.7.7.81 Copyright 2004 Atanas Neshkov  Date: 2005-11-16 14:28:58
// Home Page : http://members.fortunecity.com/neshkov/dj.html  - Check often for new version!
// Decompiler options: packimports(3)
// Source File Name:   loop.java

import java.io.PrintStream;

public class loop
{

    public loop()
    {
    }

    public static void main(String args[])
    {
        long l = 0L;
        for(int i = 1; i <= 0x186a0; i++)
        {
            for(int j = 1; j <= 0x186a0; j++)
                l++;

        }

        System.out.println("k=" + l);
    }
}

论坛徽章:
0
6 [报告]
发表于 2005-11-16 14:33 |只看该作者
源程序拷贝的时候多加了个0,在真的程序中是100000X100000次!
运行结果输出的结果为:k=10000000000,也就是100亿!

[ 本帖最后由 jxh_ty 于 2005-11-16 14:34 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2005-11-16 14:44 |只看该作者
那你自己再跑跑看,应该就不需要3分钟了

论坛徽章:
0
8 [报告]
发表于 2005-11-16 14:46 |只看该作者
我把在那台机器上编译的class文件在其它机器上运行,都只要30秒钟,已经试过很多次了。

论坛徽章:
0
9 [报告]
发表于 2005-11-16 14:52 |只看该作者
真是搞不懂
100000*100000需要30秒
100000*1000000需要300秒
这不是一目了然吗

论坛徽章:
0
10 [报告]
发表于 2005-11-16 14:59 |只看该作者
你仔细看看你反编译过来的代码吧!0x186a0=100000,最初是拷贝源代码出错了,现在在贴上已经更正了,你可以仔细看一下你的的反编译过来的代码,然后在你自己的机器上重新编译一下,看你的机器上生成的class文件的运行速度是多少!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP