import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.io.FileOutputStream;
import java.util.Random;
public class StringNIOTestMain{
private static Random rand = new Random();
public static long write(){
FileOutputStream fos = null;
long sep = System.currentTimeMillis();
Charset cs = Charset.forName("US-ASCII");
try{
fos = new FileOutputStream("nio_out.txt");
FileChannel fc = fos.getChannel();
StringBuilder sb = new StringBuilder(21000);
for(int i = 0; i < 1000000; i++){
sb.append(rand.nextLong());
sb.append(\'\\n\');
if(i%1000==0){
fc.write( cs.encode( sb.toString() ) );
sb.delete(0, sb.length());
}
}
fc.write( cs.encode( sb.toString() ) );
fc.close();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
fos.close();
}catch(Exception e){
e.printStackTrace();
}
}
return System.currentTimeMillis() - sep;
}
public static void main(String[] args){
System.out.println( write() );
}
}
import java.nio.charset.Charset;
import java.io.FileOutputStream;
import java.util.Random;
public class StringNIOTestMain{
private static Random rand = new Random();
public static long write(){
FileOutputStream fos = null;
long sep = System.currentTimeMillis();
Charset cs = Charset.forName("US-ASCII");
try{
fos = new FileOutputStream("nio_out.txt");
FileChannel fc = fos.getChannel();
StringBuilder sb = new StringBuilder(21000);
for(int i = 0; i < 1000000; i++){
sb.append(rand.nextLong());
sb.append(\'\\n\');
if(i%1000==0){
fc.write( cs.encode( sb.toString() ) );
sb.delete(0, sb.length());
}
}
fc.write( cs.encode( sb.toString() ) );
fc.close();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
fos.close();
}catch(Exception e){
e.printStackTrace();
}
}
return System.currentTimeMillis() - sep;
}
public static void main(String[] args){
System.out.println( write() );
}
}
-------------------------------------------------------
아무리 해도 몇백ms 차이가 줄어들지가 않네..
접근 방법이 잘못된걸까?
디스크가 워낙 느리기 때문에 위에서 뭔 지랄을 해도 많이 빨라지긴 힘들텐데
파일 접근하는것도 시간에 포함되네혀;