[英]Read whole text file into memory, then process it line-by-line without allocation/copy
[英]skipping first half of a 59GB fastq file to process last half: read line-by-line, or fgetpos?
我有2個〜.59GB“ .fastq”格式的文本文件。 fastq文件是基因組學從定序器讀取的文件。 每4行是一個新的讀取,但這些行的大小可變。
文件大小大約為59GB,大約有211M讀取-這意味着要付出或付出大約211M * 4 = 844M行。 我正在使用的程序Bowtie當前具有執行以下選項的能力:
“-跳過105M --qupto 105M”
這實際上意味着“跳過前105M讀取,僅處理到下一個105M讀取”。 這樣,您可以拆分文件處理。 問題是,它跳過的方式非常慢。 它只會像平常一樣讀取前105M的讀取,但不會對其進行處理。 然后,一旦達到給定的讀取值,便開始比較。
我想知道是否可以使用C / C ++的fsetpos之類的東西將位置設置為文件的中間位置(或任何地方),我意識到這可能會將我放置在一行的中間,然后從那里找到開始位置第一個完整讀取開始處理,而不是等待它讀取大約422M行,直到到達需要的位置為止。 是否有人有在如此大的文件上執行fsetpos的經驗,並且知道性能是否好於當前的性能?
謝謝-尼克
是的,您可以使用C ++定位到文件的中間。
對於大文件,性能通常比讀取數據更好。
通常,在文件內定位的過程:
您將節省所有先前數據通過通信端口並進入內存(或忽略)的時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.