如题.我试过用常规循环生成,保存的方法.小数量还可以.但是数量过大,程序会出现无尽的等待.我以前看过一些密码生成器之类的软件,生成几G的文件也不过几十秒.请问是如何实现的?

解决方案 »

  1.   

    我主要是想知道用什么方法能写入数据比较快.计算量可以忽略.
    比如说用for循环for(int i=0;i<10000;i++){
      for(int j=0;j<10000;j++){
       for(int k=0;k<10000;k++){
         String str= i+j+k+";
    }
    }
    }将str写入到文本文件中.这样生成的数量是非常大的.如何能速度快一些..
      

  2.   

    上一条,内存不溢出才怪!
    分开N次来处理比较好点!BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。 
    BufferedWriter 将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 
      

  3.   


    多线程处理,看看牛人怎么说吧http://blog.csdn.net/axman/archive/2007/01/12/1481197.aspx
      

  4.   

    用NIO吧,NIO要比一般IO操作快一些。
    楼主的那个BT代码,我还没IO操作呢,跑那个三层循环就好几分钟没跑完。
    要试验大文件的写入操作,不妨一次创建一个10M的byte数组,循环100次写IO不就1个G了么。
      

  5.   

    package performanceproblem;
    import java.io.*;public class PerformanceProblem
    {
    {
    public static void main(String[] args) throws Exception
    {
    StringBuffer sb = new StringBuffer();
    BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("./performace.txt"));
    long start = System.currentTimeMillis() ;
    for(int i = 0; i < 100; ++i)
    {
    for(int j = 0; j < 1024; ++j)
    {
    for(int k = 0; k < 1024; ++k)
    {
    sb.append("a");
    }
    sb.append("\n");
    }
    bufferedWriter.write(sb.toString());  // 积累1M数据,才写一次
    sb = sb.delete(0, sb.length());
    }
    bufferedWriter.flush();
    bufferedWriter.close();
    long end = System.currentTimeMillis() ;
    System.out.println((end - start) + "ms elapsed.");
    }
    }上面程序运行的时间在我的机器(T42)上耗时11256ms。循环了1亿次。
    我觉得主要的耗时在写硬盘上。
      

  6.   

    java的io虽然设计的有些拖拉。。但完成lz的功能足已。
    用上缓冲类即可(针对你的应用设置正确的缓冲参数)