gxwxwtx 2010-03-19 12:12
浏览 211
已采纳

以下哪种文件读取方法效率最高?如何通过代码测试其效率?

在同样的情况下(注:文件小于2M)分别运行以下代码,哪一个性能最高,速度最好?( )
A、import java.io.*;
public class intro1 {
public static void main(String args[]) {
if (args.length != 1) {
System.err.println("missing filename");
System.exit(1);
}
try {
FileInputStream fis =
new FileInputStream(args[0]);
int cnt = 0;
int b;
while ((b = fis.read()) != -1) {
if (b == '\n')
cnt++;
}
fis.close();
System.out.println(cnt);
}
catch (IOException e) {
System.err.println(e);
}
}
}
B、import java.io.*;
public class intro2 {
public static void main(String args[]) {
if (args.length != 1) {
System.err.println("missing filename");
System.exit(1);
}
try {
FileInputStream fis =
new FileInputStream(args[0]);
BufferedInputStream bis =
new BufferedInputStream(fis);
int cnt = 0;
int b;
while ((b = bis.read()) != -1) {
if (b == '\n')
cnt++;
}
bis.close();
System.out.println(cnt);
}
catch (IOException e) {
System.err.println(e);
}
}
}
C、import java.io.*;
public class intro3 {
public static void main(String args[]) {
if (args.length != 1) {
System.err.println("missing filename");
System.exit(1);
}
try {
FileInputStream fis =
new FileInputStream(args[0]);
byte buf[] = new byte[2048];
int cnt = 0;
int n;
while ((n = fis.read(buf)) != -1) {
for (int i = 0; i < n; i++) {
if (buf[i] == '\n')
cnt++;
}
}
fis.close();
System.out.println(cnt);
}
catch (IOException e) {
System.err.println(e);
}
}
}
A.A最快 B.B最快 C.C最快 D.都一样

  • 写回答

7条回答 默认 最新

  • wanghaolovezlq 2010-03-19 12:32
    关注

    参考下实现

    [code="java"]
    import java.io.*;

    public class intro1 {
    public static void main(String args[]) {
    if (args.length != 1) {
    System.err.println("missing filename");
    System.exit(1);
    }
    try {
    long begin = System.nanoTime();
    FileInputStream fis = new FileInputStream(args[0]);
    int cnt = 0;
    int b;
    while ((b = fis.read()) != -1) {
    if (b == '\n')
    cnt++;
    }
    fis.close();
    long end = System.nanoTime();
    System.out.println("本次读取文件耗时为:" + (end-begin) + "毫微秒(1/1000000秒)");
    System.out.println(cnt);
    } catch (IOException e) {
    System.err.println(e);
    }
    }
    }

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题