2011-09-24 176 views
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测试(电脑,手机,网络都很近)。

让我知道你是否有任何建议或疑问。

谢谢。

回答

1

您是否在Android端使用BufferedOutputStream来写入数据?如果不是,它将逐字节地写入,这将解释高CPU使用率。

如果不是这种情况,请在问题中添加一些源代码。

+0

对于读/写,我使用了一个字节[]缓冲区。 初始化: m_recvBuffer =新字节[RECV_BUFFER_SIZE]; Loop: socket.getInputStream()。read(m_recvBuffer,0,RECV_BUFFER_SIZE); 而RECV_BUFFER_SIZE是32768字节。 – Xunil

+0

尝试围绕套接字输入流的BufferedInputStream。 – kichik

+0

@kichik为什么?它不会有任何区别。 – EJP