about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2006-11-18T18·56+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2006-11-18T18·56+0000
commit0541ddc7e33c35a35efe85b6d6f603efb5bac8c8 (patch)
tree55d80aab366bdfe95cfd9a70f9ced5f03d955d6e
parent471749ca7eb594660488954d23391f5329d638a4 (diff)
* Turn off synchronisation between C and C++ I/O functions. This
  gives a huge speedup in operations that read or write from standard
  input/output.  (So libstdc++'s I/O isn't that bad, you just have to
  call std::ios::sync_with_stdio(false).)  For instance, `nix-store
  --register-substitutes' went from 1.4 seconds to 0.1 seconds on a
  certain input.  Another victory for Valgrind.

-rw-r--r--src/libmain/shared.cc2
-rw-r--r--src/nix-store/main.cc2
2 files changed, 3 insertions, 1 deletions
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc
index 00e197499e..d135691a1a 100644
--- a/src/libmain/shared.cc
+++ b/src/libmain/shared.cc
@@ -225,6 +225,8 @@ int main(int argc, char * * argv)
     std::cerr.rdbuf()->pubsetbuf(buf, sizeof(buf));
 #endif
 
+    std::ios::sync_with_stdio(false);
+
     try {
         try {
             initAndRun(argc, argv);
diff --git a/src/nix-store/main.cc b/src/nix-store/main.cc
index 5a87806d03..8c2ff22799 100644
--- a/src/nix-store/main.cc
+++ b/src/nix-store/main.cc
@@ -632,7 +632,7 @@ static void opDump(Strings opFlags, Strings opArgs)
 }
 
 
-/* A source that read restore intput to stdin. */
+/* A source that reads restore input from stdin. */
 struct StdinSource : RestoreSource
 {
     virtual void operator () (unsigned char * data, unsigned int len)