java io效率_JAVA IO操作的总结 和速度实验
IO兩種操作的區別
字節操作
byte類型操作,所有數表示為byte數組
讀取輸出要先轉換成byte類型,才能進一步轉換為字符串
不會運用到緩存
常用于處理二進制數據
字符操作
操作character類型,所有數表示為character數組
可以直接讀取輸出字符串
需要用到緩存
常用于處理文本數據
設計程序測試字節流和字符流的讀寫差別
輸出1999999個String來測試字節流的寫入速度
輸出1999999個String來測試字符流的寫入速度
a)?? 分別使用字節操作與字符操作兩種方式將對象寫入硬盤,記錄匯報兩種方式的時間與所占硬盤空間
所占硬盤空間為大約1.17GB? 兩者相差很小
經測試,字符流的寫入速度更快,快了大概十倍,且兩者所占的內存相差很小
b)?? 分別使用字節操作與字符操作兩種方式將硬盤數據讀入內存,記錄兩種方式的時間消耗
測試字符流單字節讀取和數組讀取所需時間
測試字節流單字節和字節數組的讀取速度
結果
可見字符流的讀取速度比字節流要快,而且用數組可以大幅度加快讀取速度
c)?? 在讀取與寫入時使用緩存(buffered stream),比較緩存方式的優劣,并設計場景體現出緩存方式的優勢
測試字節緩存流讀寫文件所需時間(12MB的文件)
測試字節流讀寫文件所需的時間
得出的時間結果:
但是使用字符流和字符緩存流時,得到的結果是相反的
我認為是因為字符流本來就用了緩存區,經過了兩次緩存區,效率反而更低了。
可看出,相比于不使用緩存,使用緩存后讀取速度更快
使用場景:當要讀寫大文件,且電腦性能好的時候,可以大量使用緩存來提高讀寫速度。
d)?? 請使用C/C++(或者任意支持little-Endian的語言)完成題目2(b)中寫入的兩種文件的正確讀取,并記錄兩種方式的時間消耗
字符流讀寫:
所使用的時間
可以看出,c語言的讀寫效率更高
結論
1.字符流基于字節流,字符流通過使用緩存等提升了讀寫速度。
2.在相同條件下,字節流與字符流的效率比約為1:20;,字符流是建立在字節流的基礎上的,但是字符流使用了緩存,提高了效率;
3.應用場景:(1)字符流常用于處理文本數據,字節流常用于處理二進制數據
(2)在讀寫文件需要對文本格式化處理時使用字符流,僅僅是讀寫數據適合用字節流
4.可以使用數組讀寫的方式大幅度提高速度。
總結
以上是生活随笔為你收集整理的java io效率_JAVA IO操作的总结 和速度实验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android tible控件_andr
- 下一篇: idea Maven图标的使用