[Home] [By Thread] [By Date] [Recent Entries]
> Except that it doesn't show that, because every entity expansion > involves copying the following text forward. Since you have to look at the char, copying it back would go through the mem cache. I figured that was cheaper than saying (if buf != src) first. Of course, the whole routine should be optimized by putting if (memchr(buff, '&', size) == NULL) return size; > I'd be astonished if that > wins compared with delivering expansions SAX-style. I'd even be > surprised if it wins against non-in-place expansion to a separate > buffer (assuming the copy was optimized away for the no entity refs > case). I don't know what to say here. Have you done much "to the metal" coding in C/C++ kinds of things? Imagine an embedded device, for example: no need for multiple buffers. Imagine streaming the output -- no need for multiple system calls, computing total length, etc. The input is all in one buffer -- how *can* it be easier and more efficient to split it up? Surely at times you wished SAX would guarantee one call/chardata? But even if not, don't think of SAX. Think of smaller faster things. Hope this helps. /r$
|

Cart



