首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DelimiterBasedFrameDecoder的可变服务器性能

使用DelimiterBasedFrameDecoder的可变服务器性能
EN

Stack Overflow用户
提问于 2012-06-23 01:06:54
回答 1查看 481关注 0票数 1

我有一个服务器读取入站换行符分隔的字符串。管道看起来像这样:

代码语言:javascript
复制
    ...
    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));
    ...

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

代码语言:javascript
复制
    pipeline.addLast("framer", 
        new DelimiterBasedFrameDecoder(65535, 
            new ChannelBuffer[] { ChannelBuffers.wrappedBuffer(
                new byte[] {'\n'})})); 

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-24 02:31:21

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11160920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档