相关疑难解决方法(0)

mmap比getline慢?

我面临着逐行读取/写入文件(在Gigs中)的挑战.

读取许多论坛条目和网站(包括一堆SO),mmap被认为是读/写文件的最快选项.但是,当我用readline和mmap技术实现我的代码时,mmap是两者中较慢的一个.这对于阅读和写作都是如此.我一直在测试大约600 MB的文件.

我的实现逐行解析,然后对行进行标记.我只会提供文件输入.

以下是getline实现:

void two(char* path) {

    std::ios::sync_with_stdio(false);
    ifstream pFile(path);
    string mystring;

    if (pFile.is_open()) {
        while (getline(pFile,mystring)) {
            // c style tokenizing
        }
    }
    else perror("error opening file");
    pFile.close();
}
Run Code Online (Sandbox Code Playgroud)

这是mmap:

void four(char* path) {

    int fd;
    char *map;
    char *FILEPATH = path;
    unsigned long FILESIZE;

    // find file size
    FILE* fp = fopen(FILEPATH, "r");
    fseek(fp, 0, SEEK_END);
    FILESIZE = ftell(fp);
    fseek(fp, 0, SEEK_SET);
    fclose(fp);

    fd = open(FILEPATH, O_RDONLY);

    map = (char *) mmap(0, …
Run Code Online (Sandbox Code Playgroud)

c++ file-io mmap getline

5
推荐指数
2
解决办法
3511
查看次数

标签 统计

c++ ×1

file-io ×1

getline ×1

mmap ×1