zoukankan      html  css  js  c++  java
  • String 转换二进制 与移位操作转换二进制 的效率对比

    注:原创,转载请说明原地址,谢谢。

    研究了下十进制转二进制分别采用以下两种方法时的效率:移位操作和string 转换二进制

    public class Test {
     public static  void shiftOper(int x){
      //移位换算二进制
      long sTime = System.nanoTime();   //获取开始时间
      int i = 0,k = 0;
      int nsarry[]= new int[33];
      while(x > 0){
       nsarry[i++] = (byte) (x & 0x01);
       x = x>>1;  
      }
      int afterArray[] = new int[i];
      for(int j = i-1;j >= 0;j --){
       afterArray[k] = nsarry[j];
       k ++;
      }
      for(int m = 0;m < k;m ++){
       System.out.print(afterArray[m]);
      }
      long eTime = System.nanoTime(); //获取结束时间
      System.out.println("        移位程序运行时间: "+(eTime-sTime)+"ns");
     }
     
     public static  void stringOper(int x){
      //string 换算二进制
      long sTime1=System.nanoTime();   //获取开始时间
      //int x1 = 11000;
      String binary = Integer.toBinaryString(x);
      String [] temp = binary.split(",");
      int[] resu = new int[temp.length];
      for(int i= 0;i<temp.length;i++){
       resu[i] = Integer.parseInt(temp[i]);
      }
      for(int i= 0;i<resu.length;i++){
       System.out.print(resu[i]);
      }
      long eTime1=System.nanoTime(); //获取结束时间
      System.out.println("        string程序运行时间: "+(eTime1-sTime1)+"ns");
     }
     
     public static void main(String[] args) {
      shiftOper(8);
      stringOper(8);
     }

    }

    运行结果:

    1001        移位程序运行时间: 177761ns
    1001        string程序运行时间: 520740ns

    可以看出,移位操作比string至少要快2倍以上。在测试过程中,甚至有次达到137倍(这个估计不准),多数为2-5倍。在x=1100时,string方法会报错,还未知。

  • 相关阅读:
    【编译原理】文法解析算法以及左递归消除算法
    【编译原理】 DFA词法分析和递归下降语法分析代码
    编译原理 第三章 词法分析(下)
    详解KMP算法
    编译原理 第三章 词法分析(上)
    ExtJs4.0入门错误
    致好友的一封信
    解析Xml四种方法
    Spring AOP实现原理
    Spring Ioc知识整理
  • 原文地址:https://www.cnblogs.com/ningxu/p/3417982.html
Copyright © 2011-2022 走看看