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 文字列/秒です。ソースコードを見ると、すべての区切り文字を循環して、最小フレーム長を生成するものを見つけているようです。調べてみると、区切り文字を 1 つだけ探すと、 2 つの区切り記号。私は自分自身のデコーダーを書きたいと思っていますが、ここで何が起こっているのかを理解したいと思っています. 任意の洞察をいただければ幸いです。

4

1 に答える 1

0

まさにその通りです.. 1つだけを探す方がはるかに安価です.

于 2012-06-23T18:31:21.300 に答える