亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 3570 | 回復(fù): 12
打印 上一主題 下一主題

[C] 請(qǐng)教問(wèn)題:大文件處理 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2013-12-04 10:45 |只看該作者 |倒序?yàn)g覽
本帖最后由 想尼尼 于 2013-12-04 11:03 編輯

問(wèn)題:
C語(yǔ)言
需要處理N個(gè)大文件,size有可能很大,但是大小上限不能具體知道。
需要并行處理文件。
文件的內(nèi)容有可能涉及到解碼什么的,文件格式是多種格式嵌套。

我一開始用了2個(gè)方法:
<1>先聲明一個(gè)超大數(shù)組,一次性讀完文件。問(wèn)題是太浪費(fèi)內(nèi)存,因?yàn)槲募锌赡苁呛苄〉摹?br /> <2>用malloc動(dòng)態(tài)分配一個(gè)文件大小的space。問(wèn)題是頻繁的動(dòng)態(tài)分配,會(huì)造成過(guò)多的內(nèi)存碎片,不適合長(zhǎng)時(shí)間的運(yùn)行。
C++好像有內(nèi)部?jī)?nèi)存管理的類string,但是C++不太拿出手。。。。
哪位大神幫忙想想辦法。

還忘記說(shuō)了一種:內(nèi)存映射,
優(yōu)點(diǎn):
1、從內(nèi)存映像文件中讀寫,避免了read、write多余的拷貝。
2、從內(nèi)存映像文件中讀寫,避免了多余的系統(tǒng)調(diào)用和用戶-內(nèi)核模式的切換
3、可以多個(gè)進(jìn)程共享內(nèi)存映像文件。
4、seeking內(nèi)存映像只需要指針操作,避免系統(tǒng)調(diào)用lseek。
缺點(diǎn):
1、內(nèi)存映像需要時(shí)整數(shù)倍頁(yè)大小,如果文件較小,會(huì)浪費(fèi)內(nèi)存。
2、內(nèi)存映像需要在放在進(jìn)程地址空間,大的內(nèi)存映像可能導(dǎo)致地址空間碎片,找不到足夠大的空余連續(xù)區(qū)域供其它用。
3、內(nèi)核需要維護(hù)更多的和內(nèi)存映像相關(guān)的數(shù)據(jù)結(jié)構(gòu)。
貌似和malloc的缺點(diǎn)有點(diǎn)類似

論壇徽章:
8
CU大;照
日期:2013-04-17 10:59:39CU大;照
日期:2013-04-17 11:01:45CU大;照
日期:2013-04-17 11:02:15CU大;照
日期:2013-04-17 11:02:36CU大;照
日期:2013-04-17 11:02:58技術(shù)圖書徽章
日期:2013-12-04 10:48:50酉雞
日期:2014-01-03 10:32:30辰龍
日期:2014-03-06 15:04:07
2 [報(bào)告]
發(fā)表于 2013-12-04 10:48 |只看該作者
……你甚至可以用每次只讀一個(gè)字節(jié)的方式,處理一個(gè)1T大小的文件。

復(fù)習(xí)下基礎(chǔ)知識(shí)吧。

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2013-12-04 10:51 |只看該作者
頻繁IO太慢吧

論壇徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16賽季CBA聯(lián)賽之青島
日期:2016-07-05 12:36:0515-16賽季CBA聯(lián)賽之廣東
日期:2016-06-29 11:45:542015亞冠之全北現(xiàn)代
日期:2015-07-22 08:09:472015年辭舊歲徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39獅子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技術(shù)圖書徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
4 [報(bào)告]
發(fā)表于 2013-12-04 10:51 |只看該作者
還能“聲明一個(gè)超大數(shù)組,一次性讀完文件”或“用malloc動(dòng)態(tài)分配一個(gè)文件大小的space”,說(shuō)明你這個(gè)文件極小。

對(duì)于你的問(wèn)題,為什么要一次性讀到內(nèi)存中呢?完全可以用到哪里才去讀哪里。
比如現(xiàn)在的電影文件,一般都是20G左右,在我一臺(tái)2G內(nèi)存的電腦上就可以完美播放,肯定不是一次性讀進(jìn)內(nèi)存,因?yàn)闆](méi)那么大的內(nèi)存。

論壇徽章:
8
CU大;照
日期:2013-04-17 10:59:39CU大;照
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大;照
日期:2013-04-17 11:02:58技術(shù)圖書徽章
日期:2013-12-04 10:48:50酉雞
日期:2014-01-03 10:32:30辰龍
日期:2014-03-06 15:04:07
5 [報(bào)告]
發(fā)表于 2013-12-04 10:58 |只看該作者
想尼尼 發(fā)表于 2013-12-04 10:51
頻繁IO太慢吧


腦筋太死……既然每次一個(gè)字節(jié)、處理1T的文件都可以,有人禁止你用每次處理1K甚至1M的數(shù)據(jù)的方式、處理1G的文件嗎?

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2013-12-04 10:58 |只看該作者
回復(fù) 4# bruceteen
我需要從頭到尾都解析的,格式復(fù)雜,不太好截取部分
我還忘記說(shuō)了“內(nèi)存映射”, 不知道這個(gè)方法有什么缺點(diǎn),我再查查


   

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2013-12-04 11:00 |只看該作者
回復(fù) 6# 想尼尼
關(guān)鍵這個(gè)文件格式有點(diǎn)復(fù)雜,不好確定前面的是否是部分完整的可以解析的格式,求指點(diǎn)


   

論壇徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52雙子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午馬
日期:2013-10-18 21:43:38
8 [報(bào)告]
發(fā)表于 2013-12-04 11:36 |只看該作者
內(nèi)存映射是王道,如果是32位程序地址空間受限,可以映射文件的一部分

論壇徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46處女座
日期:2013-10-24 14:25:01酉雞
日期:2014-04-07 11:54:15
9 [報(bào)告]
發(fā)表于 2013-12-04 12:56 |只看該作者
一個(gè)定長(zhǎng)4KB的buffer,一次讀4KB。

一個(gè)string,讀的buffer要append到string尾部,然后立即解析文件內(nèi)容,解析完的的部分erase掉。

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2013-12-04 13:11 |只看該作者
N有多大?
文件一般有多大?
格式有多復(fù)雜?
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP