zoukankan      html  css  js  c++  java
  • Java和PyPy速度对比

    Java和PyPy运行同一段代码,对比结果.

    Java代码:

    package javatest;
    
    import java.text.DecimalFormat;
    import java.util.Date;
    
    public class speedTest
    {
        public static void main(String[] args)
        {
            int i = 0;
            int max = 2000000;
            Date start = new Date();
            while (i++ < max)
            {
                transform();
            }
            Date end = new Date();
            long diff = end.getTime() - start.getTime();
            
            StringBuffer maxToshow=new StringBuffer();
            maxToshow.append(max);
            int count=0;
            for(int a=1;a<String.valueOf(max).length();a++)
            {
                if(a%3==0)
                {
                    count++;
                    maxToshow.insert(String.valueOf(max).length()-count*3, ",");
                }
            }
            //String s = String.format("it takes %f seconds to run %s loops",
            //        diff / 1000.00, new DecimalFormat(",###").format(max));
            String s = String.format("it takes %f seconds to run %s loops",
                    diff / 1000.00, maxToshow.toString());
            System.out.println(s);
        }
    
        public static void transform()
        {
            String str = "Pcybgle rfgq rsrmpgyj fyq npmzyzjw pcgldmpacb wmsp glrcpcqr gl sqgle Nwrfml - wms qfmsjb zc cyecp rm ynnjw Nwrfml rm qmjtgle wmsp pcyj-umpjb npmzjckq. Ufcpc qfmsjb wms em rm jcypl kmpc?";
            for (int i = 0; i < str.length(); i++)
            {
                char c = str.charAt(i);
                if (c >= 'a' && c <= 'z')
                {
                    c += 2;
                    if (c > 'z')
                    {
                        c -= 26;
                    }
                    // System.out.print(c);
                }
    
                else if (c >= 'A' && c <= 'Z')
                {
                    c += 2;
                    if (c > 'Z')
                    {
                        c -= 26;
                    }
                    // System.out.print(c);
                }
                else
                    ;// System.out.print(c);
            }
        }
    }

    Python代码:

    import sys,datetime
    import numFormatter
    
    def transform():
        str='''Pcybgle rfgq rsrmpgyj fyq npmzyzjw pcgldmpacb wmsp glrcpcqr gl sqgle Nwrfml - wms qfmsjb zc cyecp rm ynnjw Nwrfml rm qmjtgle wmsp pcyj-umpjb npmzjckq. Ufcpc qfmsjb wms em rm jcypl kmpc?'''
        for s in str:
            if ord(s)>=ord('a') and ord(s)<=ord('z'):
                new=ord(s)+2
                if new>ord('z'):
                    new-=26
                #sys.stdout.write(chr(new))
            elif ord(s)>=ord('A') and ord(s)<=ord('Z'):
                new=ord(s)+2
                if new>ord('Z'):
                    new-=26
                #sys.stdout.write(chr(new))
            else:
                1==1#sys.stdout.write(s)
    
                
    def formatNumber(number):
        numStr='%d'%number
        formatStr=''
        numStr=numStr[::-1]
        i=0
        while i<len(numStr):
            formatStr+=numStr[i]
            i+=1
            if i%3==0:
                formatStr+=','
        formatStr=formatStr.strip(',')
        formatStr=formatStr[::-1]
        print formatStr
        
    starttime = datetime.datetime.now()
    loops=200000;
    for i in range(loops):
        transform()
        #sys.stdout.write('
    ')
    endtime = datetime.datetime.now()
    
    print 'it takes %s seconds to run %s loops'%((endtime - starttime).seconds,formatNumber(loops))
                                                

    Java分别运行两百万次、两千万次、两亿次耗时结果:

    PyPy运行上述代码,两百万次、两千万次、两亿次的耗时结果:

    PyPy和Python解释器运行结果对比:

    依据结果粗略估计,Java效率是PyPy的2.3倍,PyPy是Python的88.5倍

  • 相关阅读:
    Leetcode题解(4):L216/Combination Sum III
    零基础学python-3.1 python基本规则和语句
    3D打印技术之切片引擎(4)
    自己定义struts2中action类型转换器
    Android开发之实现锁屏功能
    用户上传本地磁盘中的一个图片文件作为头像
    微博达人硅谷之歌:Testin云測移动搜索性能測试非常是让人信服
    读《疯狂Java讲义》笔记总结三
    这才是爱情最好的样子
    数据挖掘 与 Web开发何去何从
  • 原文地址:https://www.cnblogs.com/aaronhoo/p/5152334.html
Copyright © 2011-2022 走看看