Android Socket高CPU使用率
问题描述:
我做了一个客户端/服务器(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测试(电脑,手机,网络都很近)。
让我知道你是否有任何建议或疑问。
谢谢。
答
您是否在Android端使用BufferedOutputStream来写入数据?如果不是,它将逐字节地写入,这将解释高CPU使用率。
如果不是这种情况,请在问题中添加一些源代码。
对于读/写,我使用了一个字节[]缓冲区。 初始化: m_recvBuffer =新字节[RECV_BUFFER_SIZE]; Loop: socket.getInputStream()。read(m_recvBuffer,0,RECV_BUFFER_SIZE); 而RECV_BUFFER_SIZE是32768字节。 – Xunil
尝试围绕套接字输入流的BufferedInputStream。 – kichik
@kichik为什么?它不会有任何区别。 – EJP