每天一个开发小知识。
昨天写一个 C++ 程序,读取4000多个文件,每个文件20M左右。
平均处理每个文件的时长为2s,比同事写的 Python 效率低。
很不科学。
同事问我读取文件用的是哪个函数,我说用的是 ifstream。
同事说难怪,你应该试试 fopen。
今天,我测试下 ifstream 和 fopen。
ifstream 相关代码:
ifstream fd(file.c_str());if (!fd){
VLOG(1) << "open file error. file: " << file; return;}VLOG(1) << "open file success. file: " << file;string line;while (getline(fd, line)){
; // do nothing}fd.close();
fopen 相关代码:
FILE * fp = NULL;fp = fopen(file.c_str(), "r");char buffer[256 * 1024];while (!feof(fp)){
fread(buffer, 1, sizeof(buffer), fp);}fclose(fp);