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

  • 相关阅读:
    WrapPanel虚拟化
    关于Windows执行cmd命令的坑之一
    C# .Net 获取当前电脑上的可移动磁盘
    关于WPF中资源字典的内存优化
    WPF获取ListBox、ListView之类列表的ScrollViewer实例
    C#事件与委托 yangan
    系统自动登录设置(适用所有操作系统) yangan
    Oracel小知识记录 yangan
    使用avaScript获取Url中的指定参数值 yangan
    Win7下破解ArcGIS 9.3方法 yangan
  • 原文地址:https://www.cnblogs.com/ningxu/p/3417982.html
Copyright © 2011-2022 走看看