temp-file: Use 64 kB buffer for temporary files.
authorBen Pfaff <blp@cs.stanford.edu>
Sat, 7 May 2011 20:01:02 +0000 (13:01 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Sat, 7 May 2011 20:01:02 +0000 (13:01 -0700)
Generally PSPP uses temporary files because it has a lot of data to
write to them.  The default glibc buffer is only 4 kB.  In my tests
using a 64 kB reduced runtime from 2.5 seconds to 2.0 seconds, but
increasing the buffer to 1 MB had no additional effect, so 64 kB is a
reasonable choice.

Bug #33260.

src/libpspp/temp-file.c

index c1ffbea664dc6e7cce73fef03584f45d65bd024f..ffd5da7cef162dfdaef2ab20e66513b33b67b5ba 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2010 Free Software Foundation, Inc.
+   Copyright (C) 2010, 2011 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -56,6 +56,8 @@ create_temp_file (void)
 
   file_name = xasprintf ("%s/%d", temp_dir->dir_name, idx++);
   stream = fopen_temp (file_name, "wb+");
+  if (stream != NULL)
+    setvbuf (stream, NULL, _IOFBF, 65536);
   free (file_name);
 
   return stream;