1

我最近调试了我如何使用 SslStream 的性能问题。

客户端是 C#/.NET 并且具有以下 Stream 配置

  • 原始套接字/NetStream
  • 由 BufferedStream 包装
  • 由 SslStream 包装
  • 由“协议”流包装(发送字节/整数/字符串等)

当我通过互联网将数据从客户端发送到服务器时,我发现性能非常慢,在客户端序列化信息需要很长时间。

删除 SSL 流和连接加速到预期的水平。

然后我将上面的流配置更改为..

  • 原始套接字/NetStream
  • 由 SslStream 包装
  • 由 BufferedStream 包装 <-- 移动了这个
  • 由“协议”流包装(发送字节/整数/字符串等)

并且连接加速到了预期的水平。

有人可以解释为什么更改流配置对性能有如此大的帮助吗?特别是当我在与服务器相同的机器上测试客户端的原始配置时,它运行得非常快?

4

1 回答 1

7

原因很简单。您保存一个 int(仅 4 个字节),它被包装到 SSL 数据包中,然后被缓冲。更改顺序后,您开始在缓冲区中收集大量数据,然后用 SSL 将其包装为一个大块。更少的 SSL 包装器,更高的速度。

于 2013-02-19T19:18:36.337 回答