summaryrefslogtreecommitdiff
path: root/src/paste.c
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2010-07-20 18:51:01 +0100
committerPádraig Brady <P@draigBrady.com>2010-07-22 01:04:47 +0100
commit47076e3c7c22fc7557f388ad3d47228b922da71e (patch)
tree94f785d628a11e6c786f5aa85daa88d2a672b2fe /src/paste.c
parent63b5e8164847285f5d3c1dbc9f7c41ad8c17ccc6 (diff)
downloadcoreutils-47076e3c7c22fc7557f388ad3d47228b922da71e.tar.xz
provide POSIX_FADV_SEQUENTIAL hint to appropriate utils
Following on from commit dae35bac, 01-03-2010, "sort: inform the system about our input access pattern" apply the same hint to all appropriate utils. This currently gives around a 5% speedup for reading large files from fast flash devices on GNU/Linux. * src/base64.c: Call fadvise (..., FADVISE_SEQUENTIAL); * src/cat.c: Likewise. * src/cksum.c: Likewise. * src/comm.c: Likewise. * src/cut.c: Likewise. * src/expand.c: Likewise. * src/fmt.c: Likewise. * src/fold.c: Likewise. * src/join.c: Likewise. * src/md5sum.c: Likewise. * src/nl.c: Likewise. * src/paste.c: Likewise. * src/pr.c: Likewise. * src/ptx.c: Likewise. * src/shuf.c: Likewise. * src/sum.c: Likewise. * src/tee.c: Likewise. * src/tr.c: Likewise. * src/tsort.c: Likewise. * src/unexpand.c: Likewise. * src/uniq.c: Likewise. * src/wc.c: Likewise, unless we don't actually read().
Diffstat (limited to 'src/paste.c')
-rw-r--r--src/paste.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/paste.c b/src/paste.c
index 36e1cfbc0..dbbf52df5 100644
--- a/src/paste.c
+++ b/src/paste.c
@@ -42,6 +42,7 @@
#include <sys/types.h>
#include "system.h"
#include "error.h"
+#include "fadvise.h"
#include "quotearg.h"
/* The official name of this program (e.g., no `g' prefix). */
@@ -211,6 +212,7 @@ paste_parallel (size_t nfiles, char **fnamptr)
error (EXIT_FAILURE, errno, "%s", fnamptr[files_open]);
else if (fileno (fileptr[files_open]) == STDIN_FILENO)
opened_stdin = true;
+ fadvise (fileptr[files_open], FADVISE_SEQUENTIAL);
}
}
@@ -367,6 +369,7 @@ paste_serial (size_t nfiles, char **fnamptr)
ok = false;
continue;
}
+ fadvise (fileptr, FADVISE_SEQUENTIAL);
}
delimptr = delims; /* Set up for delimiter string. */