1
我做了一個客戶端/服務器(android/pc),似乎客戶端的網絡使用率使用了大量的CPU。就像從網絡接收4k-5k一樣,cpu上升到33毫秒。如果數據比〜32k更高,則CPU可以高於90-100毫秒。Android Socket高CPU使用率
首先,我在java版本中嘗試過客戶端(網絡部分),之後在c中,問題仍然存在。
我剖析了發送數據的服務器部分,它使用大約0毫秒。
一些細節:
- TCP連接。
- 客戶端連接到服務器時,客戶端發送請求,服務器發送 數據(的4-10k塊),客戶端發送請求,服務器發送...
- 網絡部是帶螺紋的。
- 使用(recv或recv/select)獲取數據。
- 智能手機:Nexus one。
- 測試分析器模式(僅網絡部分和顯示fps /毫秒)。
- 在Wifi測試(電腦,手機,網絡都很近)。
讓我知道你是否有任何建議或疑問。
謝謝。
對於讀/寫,我使用了一個字節[]緩衝區。 初始化: m_recvBuffer =新字節[RECV_BUFFER_SIZE]; Loop: socket.getInputStream()。read(m_recvBuffer,0,RECV_BUFFER_SIZE); 而RECV_BUFFER_SIZE是32768字節。 – Xunil
嘗試圍繞套接字輸入流的BufferedInputStream。 – kichik
@kichik爲什麼?它不會有任何區別。 – EJP