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方法会报错,还未知。

原文地址:https://www.cnblogs.com/ningxu/p/3417982.html