zoukankan      html  css  js  c++  java
  • 生成随机数的效率问题

    这里有段代码

     1 import java.io.File;
     2 import java.io.FileOutputStream;
     3 import java.util.Random;
     4 
     5 public class GenerateFile {
     6     private String filePath;
     7     private long fileSize;
     8     public GenerateFile(String filePath, long fileSize) {
     9         this.filePath = filePath;
    10         this.fileSize = fileSize;
    11     }
    12     
    13     public long generate() {
    14         int[] number = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 };// 0~9的unicode码
    15         File file = new File(filePath);
    16         FileOutputStream out = null;
    17         byte[] enter = { 10 };// 回车
    18         Random r = new Random();
    19         long beginTime = System.currentTimeMillis();
    20         try {
    21             out = new FileOutputStream(file);
    22             while (file.length() < fileSize) {// 生成n行数字
    23                 int length = (int) (Math.random() * 8) + 1;/* 长度为0~9 */
    24                 boolean sign = (int) (Math.random() * 2) >= 1;// 随机写入正负数
    25 
    26                 if (!sign) {
    27                     out.write(45);// 写入负号
    28                 }
    29                 out.write(number[(int) (Math.random() * 9) + 1]);// 第一个不能是0
    30                 for (int j = 1; j < length; ++j) {
    31                     out.write(number[(int) (Math.random() * 10)]);/* 生成数字 */
    32                 }
    33                 out.write(enter);
    34             }
    35             out.close();
    36         } catch (Exception e) {
    37             e.printStackTrace();
    38         }
    39         long endTime = System.currentTimeMillis();
    40         System.out.println("##########" + (endTime-beginTime) / 1000 + "s");
    41         return endTime - beginTime;
    42     }
    43 }
     1 import java.io.File;
     2 import java.io.FileOutputStream;
     3 import java.util.Random;
     4 
     5 public class GenerateFile {
     6     private String filePath;
     7     private long fileSize;
     8     public GenerateFile(String filePath, long fileSize) {
     9         this.filePath = filePath;
    10         this.fileSize = fileSize;
    11     }
    12     
    13     public long generate() {
    14         int[] number = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 };// 0~9的unicode码
    15         File file = new File(filePath);
    16         FileOutputStream out = null;
    17         byte[] enter = { 10 };// 回车
    18         Random r = new Random();
    19         long beginTime = System.currentTimeMillis();
    20         try {
    21             out = new FileOutputStream(file);
    22             while (file.length() < fileSize) {// 生成n行数字
    23                 int length = (int) (Math.random() * 8) + 1;/* 长度为0~9 */
    24                 out.write(length);
    25                 out.write(enter);
    26             }
    27             out.close();
    28         } catch (Exception e) {
    29             e.printStackTrace();
    30         }
    31         long endTime = System.currentTimeMillis();
    32         System.out.println("##########" + (endTime-beginTime) / 1000 + "s");
    33         return endTime - beginTime;
    34     }
    35 }

    调用:

    1 public static void main(String[] args) {
    2         GenerateFile gen = new GenerateFile("c:\test\numbers.txt", 1024*1000);
    3         
    4         gen.generate();
    5     }

    不知道为什么前面代码的效率比后面代码的效率要高,记录一下

  • 相关阅读:
    udp用户数据报协议
    java调用url
    mybatis中的#和$的区别
    sun.misc.BASE64Encoder图片编码,并在页面显示
    oracle查看列数据类型
    MyBatis传入多个参数的问题
    ajax详解
    Comparable和Comparator的区别
    谈谈hashcode和equals的用法
    从为什么String=String谈到StringBuilder和StringBuffer
  • 原文地址:https://www.cnblogs.com/lanhj/p/3838435.html
Copyright © 2011-2022 走看看