【问题标题】:Android Socket High CPU usageAndroid Socket 高 CPU 使用率
【发布时间】:2011-09-24 00:36:47
【问题描述】:

我做了一个客户端/服务器(android/pc),客户端的网络使用似乎占用了很多 CPU。像只接收来自网络的 4k-5k,cpu 上升到 33 毫秒。如果数据高于 ~32k,则 cpu 可以高于 90-100 毫秒。

首先,我在java版本和c之后尝试了客户端(网络部分),问题仍然存在。

我分析了发送数据的服务器部分,它使用了大约 0 毫秒。

一些细节:

  • TCP 连接。
  • 客户端连接服务器,客户端发送请求,服务器发送 数据(4-10k 块),客户端发送请求,服务器发送...
  • 网络部分是线程化的。
  • 使用(recv 或 recv/select)获取数据。
  • 智能手机:Nexus one。
  • 在分析器模式下测试(仅网络部分和显示 fps/毫秒)。
  • 在 Wifi 中测试(电脑、手机、网络都关闭)。

如果您有任何建议或问题,请告诉我。

谢谢。

【问题讨论】:

    标签: android sockets networking client cpu-usage


    【解决方案1】:

    您是否在 Android 端使用 BufferedOutputStream 来写入数据?如果不是,它会逐字节写入,这可以解释 CPU 使用率高的原因。

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

    【讨论】:

    • 对于读/写,我使用了 byte[] 缓冲区。初始化:m_recvBuffer = 新字节[RECV_BUFFER_SIZE];循环:socket.getInputStream().read(m_recvBuffer, 0, RECV_BUFFER_SIZE); RECV_BUFFER_SIZE 为 32768 字节。
    • 在套接字输入流周围尝试 BufferedInputStream。
    • @kichik 为什么?不会有任何区别。
    • @Xunil 您应该编辑您的问题以包含您在评论中添加的代码,并使用代码格式化工具使其更易于访问
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2014-07-16
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多