<div>These two assumptions are basically the most challenging issues stop people from getting more performance, e.g. If somehow you want to support incremental parsing, a primitive like `ensureN` probably need to do something like</div><div><div><br></div><div>```</div><div>ensureN n = Parser $ \ buf ... k -> </div><div>    if n < length buf then k buf ...</div><div>                            else partial buf ... k</div><div>```</div><div><br></div><div>The k appear twice inside `ensureN` 's  both branch, which will stop parsers from getting inline sooner or later since inlining k into both branch will produce exponential amount of code, so instead GHC will allocate k and make a jump, the best we can get is probably to try make it a joint point, so no allocation is needed, but that's the best you can get from argument passing buffers.</div><div><br></div><div>Regards</div><div>Han Dong</div><div><div><br></div><div><br></div><div style="font-size: 12px;font-family: Arial Narrow;padding:2px 0 2px 0;">------------------ 原始邮件 ------------------</div><div style="font-size: 12px;background:#efefef;padding:8px;"><div><b>发件人:</b> "Joachim Durchholz"<jo@durchholz.org>;</div><div><b>发送时间:</b> 2019年3月20日(星期三) 中午1:28</div><div><b>收件人:</b> "haskell-cafe"<haskell-cafe@haskell.org>;<wbr></div><div></div><div><b>主题:</b> Re: [Haskell-cafe] Yet another binary reader (10x faster thanHackage's binary; )</div></div><div><br></div>Am 19.03.19 um 22:58 schrieb Станислав Черничкин:<br>> possibly because of inlining of <br>> specialization magic.<br><br>I have seen people validate this kind of assumption, by looking at the <br>various intermediate representations of code.<br>If you're after performance, you may want to do that. You may find that <br>things work differently than expected, with the potential for becoming a <br>bottleneck when stuff is scaled up (more varied datatypes in the input <br>stream, or more complex target datatypes, stuff hidden behind "oh I <br>don't need GC yet", that kind of finding).<br><br>Regards,<br>Jo<br>_______________________________________________<br>Haskell-Cafe mailing list<br>To (un)subscribe, modify options or view archives go to:<br>http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe<br>Only members subscribed via the mailman list are allowed to post.</div></div>