關于三種copy方法的理解
第一個:單字節讀取,每次讀取一個字節,緊接著就寫入這個字節;
第二個:緩沖讀取,我的理解也是,單字節讀取,不過先讀取到緩沖區,緩沖區滿了之后,一次性寫入;
第三個:批量讀取,一次性讀取一個數組的字節,然后寫入;
這么說,緩沖讀取和批量讀取,應該速度差不多啊,還是說讀取的速度的原因,大家討論一下。
第一個:單字節讀取,每次讀取一個字節,緊接著就寫入這個字節;
第二個:緩沖讀取,我的理解也是,單字節讀取,不過先讀取到緩沖區,緩沖區滿了之后,一次性寫入;
第三個:批量讀取,一次性讀取一個數組的字節,然后寫入;
這么說,緩沖讀取和批量讀取,應該速度差不多啊,還是說讀取的速度的原因,大家討論一下。
2016-02-01
舉報
2016-02-02
這點說的我也有些暈。我理解是:一共有A(源文件)、B(程序)、C(目標文件)三個桶,A裝滿了水,B、C都是空的,要把A的水通過B桶全部轉移到C桶。
單字節:一瓢一瓢從A舀水到B桶,再從B桶一瓢瓢舀水到C桶;
緩沖讀?。阂黄耙黄皬腁舀水到B桶,將B桶水直接倒入C桶;比單字節快一點;
批量讀?。褐苯訌腁桶倒水進B桶,再從B桶倒水進C桶;最快。
從最后性能對比看,應該是這樣的,老師解釋的時候沒有把B桶說太明確。
2016-07-01
這個問題首先要明白,讀取和寫入的過程;
知道運行內存吧???計算機為什么要運行內存呢???其實運行內存就是一個緩沖區??!
文件的讀取和寫入操作的過程是這樣的:
(1)首先說一下批量讀取和單個字節的讀取
批量讀取是new一個對象,new一個對象就是在內存中申請一個和new的要求的大小相一致的運行內存;
單個讀取系統默認申請了一個字節的運行內存;
(2)文件的讀取和寫入
?1.先說單個字節的讀取,從原文件中讀取一個字節放入到內存中,再從內存中把一個字節大小的數據放入到目標文件中;(強調一次操作必須是直接從源文件到內存再到目標文件, 才能再次讀取下個字節)
2.再說批量讀取,同理
從原文件中讀取多個字節放入到內存中,再從內存中把多個字節大小的數據放入到目標文件中;(強調一次操作必須是直接從源文件到內存再到目標文件, 才能再次讀取下多字節)
(3)從2中我們就能理解Buffer的運行機制了,開始解釋(再強調一下運存既是緩存區)
buffer的單個讀取,同理讀取既是先讀取一個字節放入內存中,在讀取一個字節中,直到讀取完整個文件,批量從緩存中放到目標文件中,可以看粗這樣節省了一次一次的從內存中到目標文件的過程即(1——》2——》3變成了1——》3,這樣從需要花費2步,變成只花費了一步,所以buffer的性能應該是正常的一倍)
buffer的批量讀取,同理讀取既是先讀取多個字節放入內存中,在讀取多個字節中,直到讀取完整個文件,批量從緩存中放到目標文件中,可以看粗這樣節省了一次一次的從內存中到目標文件的過程即(1——》2——》3變成了1——》3,這樣從需要花費2步,變成只花費了一步,所以buffer的性能應該是正常的一倍)
(4)總結,累死我了,以上內容純屬自己瞎想,沒有驗證,求大神驗證,告訴我答案,
? ? 我是渣渣,我是新手,驗證發現我說的錯了,請不要罵我,xiexie