It's only similar to YamlIO in API.<br><br>At the low level, it's exactly the same as what we've always been doing, it's just packaged behind an api that lets reading and writing use the same codepath.<br><br>The CodeViewRecordIO class is backed by a StreamReader or StreamWriter, which is itself backed anything that implements StreamInterface.  So the performance should be the same as that of whatever type of Stream you're usin.<br><br>If you've got a MappedBlockStream, it will transparently seek around to the different blocks and read them as needed.  If you've got a ByteStream, it just increments a pointer each time you read.<br><br>The only additional overhead here is a few virtual function indirections, but the size of the file should be irrelevant (at least compared to before this patch).<br><br>If we have trouble with large files, the fix would be to improve MappedBlockStream to page in data as necessary so we don't have to map in unused memory.<br><br>Tl;dr - this abstraction should be negligible overhead <br><br><div class="gmail_quote"><div dir="ltr">On Thu, Oct 27, 2016 at 5:40 PM Rui Ueyama <<a href="mailto:ruiu@google.com">ruiu@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">ruiu added a comment.<br class="gmail_msg">
<br class="gmail_msg">
How much is this similar to YamlIO? From my experience, I have to say that YamlIO is extremely slow when we give a fairly large (but not that large, like a few megabytes) data. I wonder if this is fast enough to handle hundreds of megabytes of debug info.<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
<a href="https://reviews.llvm.org/D26040" rel="noreferrer" class="gmail_msg" target="_blank">https://reviews.llvm.org/D26040</a><br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
</blockquote></div>