[llvm-dev] Why is printing an Instruction so slow?
mats petersson via llvm-dev
llvm-dev at lists.llvm.org
Mon Oct 5 09:18:03 PDT 2015
Using `llvm::outs()` will only be noticeably faster if `std::endl;` is
replaced with `'\n'` or similar, since `std::endl;` will cause a flush as
well - it may be little better, but for buffering to work well, you wan't a
few thousand characters in the buffer, not just a few dozen.
On 5 October 2015 at 17:05, don hinton via llvm-dev <llvm-dev at lists.llvm.org
> Hi Steve:
> llvm::errs() is unbuffered, so that might explain it. Could you try
> llvm::outs() instead and see if that helps.
> On Mon, Oct 5, 2015 at 11:17 AM, Stephen Thomas via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>> Hi all,
>> When writing my custom passes, I often emit log messages to llvm::errs()
>> like so:
>> llvm::errs() << "Could not handle instruction: " << *Inst << std::endl;
>> where Inst is a pointer to an Instruction.
>> I've profiled my code and found that this way of printing an Instruction
>> takes a very long time: indeed, it is the bottleneck of my pass.
>> Of course, I could always switch these log messages off for production
>> runs, but during development and debugging, I'd like to have them on to
>> make debugging much easier.
>> Is there a faster way to print an Instruction?
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev