1

我有一个服务器读取入站换行符分隔的字符串。管道如下所示:

    ...
    pipeline.addLast("framer",
        new DelimiterBasedFrameDecoder(65535, Delimiters.lineDelimiter()));

    // plain old strings
    pipeline.addLast("decoder", new StringDecoder());

    // callback to handler
    pipeline.addLast("handler", new ConnectorHandler(collector));
    ...

当我将解码器更改为以下内容时:

    pipeline.addLast("framer", 
        new DelimiterBasedFrameDecoder(65535, 
            new ChannelBuffer[] { ChannelBuffers.wrappedBuffer(
                new byte[] {'\n'})})); 

我的服务器速度提高了 3-4 倍。我不明白为什么会这样。入站字符串的长度在 1K-4K 之间变化,大约 10K 字符串/秒。查看源代码,它似乎循环遍历所有定界符以找到产生最小帧长度的定界符 - 通过检查,我看不出只寻找一个定界符会比寻找两个分隔符。我很想尝试编写自己的解码器,但我想了解这里发生了什么。任何见解将不胜感激。

4

1 回答 1

0

就是这样..只找一个便宜得多。

于 2012-06-23T18:31:21.300 回答