]> granicus.if.org Git - clang/commitdiff
speed up -emit-html in a release build by 6.5% by avoiding std::string.
authorChris Lattner <sabre@nondot.org>
Wed, 16 Apr 2008 03:46:57 +0000 (03:46 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 16 Apr 2008 03:46:57 +0000 (03:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49764 91177308-0d34-0410-b5e6-96231b3b80d8

Driver/HTMLPrint.cpp
include/clang/Rewrite/Rewriter.h

index 981be851cf37aa89dd4637fc992ecf4a7f25b578..165689d143faf864c82713db9bd18e379152b60c 100644 (file)
@@ -56,8 +56,10 @@ HTMLPrinter::~HTMLPrinter() {
   // Emit the HTML.
   
   if (const RewriteBuffer *RewriteBuf = R.getRewriteBufferFor(FileID)) {
-    std::string S(RewriteBuf->begin(), RewriteBuf->end());
-    printf("%s\n", S.c_str());
+    char *Buffer = (char*)malloc(RewriteBuf->size());
+    std::copy(RewriteBuf->begin(), RewriteBuf->end(), Buffer);
+    fwrite(Buffer, 1, RewriteBuf->size(), stdout);
+    free(Buffer);
   }
 }
 
index bb4e16a8e8f89254731de32f17eba036d62097d3..261465ea5add8f7cdca2a6a75131d17b6c9af72b 100644 (file)
@@ -49,6 +49,7 @@ public:
   typedef BufferTy::const_iterator iterator;
   iterator begin() const { return Buffer.begin(); }
   iterator end() const { return Buffer.end(); }
+  unsigned size() const { return Buffer.size(); }
   
 private:  // Methods only usable by Rewriter.