系统调用回答为什么要用buffer写
生活随笔
收集整理的這篇文章主要介紹了
系统调用回答为什么要用buffer写
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
為什么系統(tǒng)調(diào)用會(huì)慢?
程序的讀寫是要調(diào)用內(nèi)核的方法去寫,產(chǎn)生系統(tǒng)調(diào)用,就必須頻繁的切換用戶態(tài)和內(nèi)核態(tài),切換的過程需要保存現(xiàn)場(chǎng),清理寄存器,回復(fù)現(xiàn)場(chǎng)等,消耗cpu時(shí)間,所以慢,好的程序應(yīng)該是盡量減少這種動(dòng)作。
java的普通的寫
有兩種方式:
1.普通的io流寫,
跟蹤系統(tǒng)調(diào)用
用 strace 跟蹤系統(tǒng)調(diào)用,strace -ff -o out java java的class文件名
普通的寫:
buffered寫:
對(duì)比一下,普通的寫10個(gè)字節(jié)就發(fā)生一次系統(tǒng)調(diào)用write(),buffered寫8190(將近8k)才發(fā)生一次系統(tǒng)調(diào)用,當(dāng)然是發(fā)生系統(tǒng)調(diào)用越少越快了。
總結(jié)
以上是生活随笔為你收集整理的系统调用回答为什么要用buffer写的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux内核管理pagecache的一
- 下一篇: 手撕 RPC 1