[英]Performance between sending int or byte array over TCP in Java?
我正在使用H264
視頻文件實現客戶端服務器流應用程序。
我使用BufferedInputStream
讀取H264
文件如下:
BufferedInputStream bis = new BufferedInputStream(p.getInputStream());
int read = bis.read();
並使用DataOutputStream
通過 TCP 發送流數據。
DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());
當我從BufferedInputStream:read()
讀取流數據時,它返回int
。
我不確定是否應該將流數據作為int
發送,還是最好先將其轉換為byte[]
數組並通過 TCP 發送byte
數組。
我選擇 TCP 來確保可靠性(不會丟失視頻幀)。
在通過 TCP 發送int
和byte[]
之間,哪個性能更好? 簡單來說,哪個發送和接收會更快?
當您使用返回 int 的read()
方法時,它仍然只返回一個字節的數據。 它不像它收到一個完整的 4 字節 int 發送。 Javadoc 中解釋了為什么即使它接收一個字節返回類型也是 int 的原因。 它通過返回-1
而不是 (0-255) 字節值來表示(流/文件/等)結束。 當您實際發送一個 int 時(我不知道如果沒有DataOutputStream
會怎么做),您會收到 4 個字節。
關於性能:根據經驗,網絡比 CPU 慢幾個數量級,因此面向字節或面向數組的方法之間沒有明顯區別(只要雙方都使用緩沖策略)。
[編輯] 但是,在您發送 BLOB(二進制大對象)的情況下,使用數組是您所期望的,因此如果您使用數組,其他程序員(以及未來的您)將更好地理解代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.