Browse Source

Merge topic 'enlarge-build-file-stream-buffer'

bbdb000c55 GlobalNinjaGenerator: enlarge file stream buffer

Acked-by: Kitware Robot <[email protected]>
Merge-request: !6903
Brad King 3 years ago
parent
commit
f4893ac0b1
2 changed files with 14 additions and 0 deletions
  1. 13 0
      Source/cmGlobalNinjaGenerator.cxx
  2. 1 0
      Source/cmGlobalNinjaGenerator.h

+ 13 - 0
Source/cmGlobalNinjaGenerator.cxx

@@ -1025,6 +1025,19 @@ bool cmGlobalNinjaGenerator::OpenBuildFileStreams()
     return false;
   }
 
+  // New buffer size 8 MiB
+  constexpr auto buildFileStreamBufferSize = 8 * 1024 * 1024;
+
+  // Ensure the buffer is allocated
+  if (!this->BuildFileStreamBuffer) {
+    this->BuildFileStreamBuffer =
+      cm::make_unique<char[]>(buildFileStreamBufferSize);
+  }
+
+  // Enlarge the internal buffer of the `BuildFileStream`
+  this->BuildFileStream->rdbuf()->pubsetbuf(this->BuildFileStreamBuffer.get(),
+                                            buildFileStreamBufferSize);
+
   // Write a comment about this file.
   *this->BuildFileStream
     << "# This file contains all the build statements describing the\n"

+ 1 - 0
Source/cmGlobalNinjaGenerator.h

@@ -529,6 +529,7 @@ private:
   /// The file containing the build statement. (the relationship of the
   /// compilation DAG).
   std::unique_ptr<cmGeneratedFileStream> BuildFileStream;
+  std::unique_ptr<char[]> BuildFileStreamBuffer;
   /// The file containing the rule statements. (The action attached to each
   /// edge of the compilation DAG).
   std::unique_ptr<cmGeneratedFileStream> RulesFileStream;