快速合併普通檔案

2021-10-17 04:26:31 字數 1320 閱讀 7908

在測試機器上,如果用cat方式,大概3-4g/min,面對合併後1.4t的檔案,需要至少6個小時,後來採用mmap+多執行緒寫同乙個檔案(20個執行緒)的方式進行,速度大約14g/min,100min完成處理,要明顯快很多,這是單機情形下較快的讀寫方式,經過測試綜合來看,fread和fwrite不如這個模式的速度,比cat也快(cat底層應該是用fread/fwrite或者read/write)。**如下:

用法:乙個待合併檔案列表和乙個輸出檔案,執行緒數預設20,需要修改的話直接改**

#include #include #include #include #include #include #include #include //open

#include //mmap

#include //fstat

#include #include #include #include #include using namespace::std;

static string outfile;

mapacc;

mapsamplesize;

int th=20;

int bufsize=200*1024*1024;

long headersize=25511;

void line_split(string line_info,char sep,vector&elements)else

}elements.emplace_back(element);

}void* process(string path)

int outvcf=open(outfile.c_str(),o_wronly);

long long startpos=acc[path];

lseek(outvcf,startpos,seek_set);

cout<0)else

ptr=(char*)mmap(null,copysz,prot_read,map_shared,fd,cursz);

cursz+=copysz;

if(ptr!=map_failed)

munmap(ptr,copysz);

}close(outvcf);

close(fd);

}int main(int argc,char* ar**) else

}list.close();

list.open(ar**[1]);

while(1)

iter = 0;

}}else

}if(iter<=20)

}list.close();

return 0;

}

快速合併檔案(1)

在平常整理檔案的時候,我們可能會遇到 要把多個檔案的內容合併到同乙個檔案中 如果只有幾個檔案,我們可以手動開啟複製貼上。但是如果有許多個檔案的話,這種手動方式十分低效。下面就介紹如何快速的合併檔案。此方法可以合併xls csv txt等格式的檔案。具體操作如下 1.新建乙個txt檔案,如 合併.tx...

普通快速冪

這個其實是屬於數學問題,我們在用計算機計算an 的時候一般是將n個a直接相乘,複雜度是o n 但是一旦遇到n較大的時候很容易tle。故產生了快速冪演算法,其時間複雜度為log2 n 原理是基於以下這兩個公式 1 x是奇數 xn x2 mod n 2 mod 2 x是偶數 xn x2 mod n 2 ...

Python 快速合併多個Excel檔案

注意 需要安裝pandas,openpyxl這兩個第三方類庫,否則會報錯。實現 coding gbk import os import pandas as pd dir input 請輸入待合併檔案的路徑 n 設定工作路徑 frames 存放匯入的檔案 for root,dirs,files in ...