簡體   English   中英

在 Java 中通過 TCP 發送整數或字節數組之間的性能?

[英]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 發送intbyte[]之間,哪個性能更好? 簡單來說,哪個發送和接收會更快?

當您使用返回 int 的read()方法時,它仍然只返回一個字節的數據。 它不像它收到一個完整的 4 字節 int 發送。 Javadoc 中解釋了為什么即使它接收一個字節返回類型也是 int 的原因。 它通過返回-1而不是 (0-255) 字節值來表示(流/文件/等)結束。 當您實際發送一個 int 時(我不知道如果沒有DataOutputStream會怎么做),您會收到 4 個字節。

關於性能:根據經驗,網絡比 CPU 慢幾個數量級,因此面向字節或面向數組的方法之間沒有明顯區別(只要雙方都使用緩沖策略)。

[編輯] 但是,在您發送 BLOB(二進制大對象)的情況下,使用數組是您所期望的,因此如果您使用數組,其他程序員(以及未來的您)將更好地理解代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM