java 读文件比c_为什么Java读取大文件的速度比C ++快?

这篇博客对比了Java和C++读取2GB大文件中单词计数的性能。结果显示,Java的运行时间是29秒,而C++则为69.311秒,表明Java在这项任务上比C++快约2.3倍。文章探讨了可能的原因,并询问如何优化C++的性能。
摘要由CSDN通过智能技术生成

我有一个2 GB的文件(iputfile.txt),文件中的每一行都是一个单词,就像:

apple

red

beautiful

smell

spark

input

我需要编写一个程序来读取文件中的每个单词并打印单词计数。 我使用Java和C ++编写它,但结果令人惊讶:Java运行速度是C ++的2.3倍。 我的代码如下:

C ++:

int main() {

struct timespec ts, te;

double cost;

clock_gettime(CLOCK_REALTIME, &ts);

ifstream fin("inputfile.txt");

string word;

int count = 0;

while(fin >> word) {

count++;

}

cout << count << endl;

clock_gettime(CLOCK_REALTIME, &te);

cost = te.tv_sec - ts.tv_sec + (double)(te.tv_nsec-ts.tv_nsec)/NANO;

printf("Run time: %-15.10f s\n", cost);

return 0;

}

输出:

5e+08

Run time: 69.311 s

Java:

public static void main(String[] args) throws Exception {

long startTime = System.currentTimeMillis();

FileReader reader = new FileReader("inputfile.txt");

BufferedReader br = new BufferedReader(reader);

String str = null;

int count = 0;

while((str = br.readLine()) != null) {

count++;

}

System.out.println(count);

long endTime = System.currentTimeMillis();

System.out.println("Run time : " + (endTime - startTime)/1000 + "s");

}

输出:

5.0E8

Run time: 29 s

在这种情况下,为什么Java比C ++快?我该如何提高C ++的性能?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值