[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] numfmt: improve processing throughput by 800%
From: |
Pádraig Brady |
Subject: |
[PATCH] numfmt: improve processing throughput by 800% |
Date: |
Fri, 2 May 2014 01:58:59 +0100 |
The devmsg() calls that took quote_n() arguments,
didn't normally output anything, but still incurred
the overhead of those quote_n() calls.
* src/numfmt.c (devmsg): Move the inline function
with _internal_ enablement check to...
* src/system.h: ...here as a variadic macro, with
the enablement check at the outer level.
* src/factor.c: As per numfmt.c but there is no
performance change in this case.
* MEWS: Mention the significant performance improvement.
---
NEWS | 1 +
src/factor.c | 16 ----------------
src/numfmt.c | 16 ----------------
src/system.h | 10 ++++++++++
4 files changed, 11 insertions(+), 32 deletions(-)
diff --git a/NEWS b/NEWS
index 92ab59d..50303f9 100644
--- a/NEWS
+++ b/NEWS
@@ -68,6 +68,7 @@ GNU coreutils NEWS -*-
outline -*-
numfmt supports zero padding of numbers using the standard printf
syntax of a leading zero, for example --format="%010f".
+ Also throughput was improved by up to 800% by avoiding redundant processing.
shred now supports multiple passes on GNU/Linux tape devices by rewinding
the tape before each pass, avoids redundant writes to empty files,
diff --git a/src/factor.c b/src/factor.c
index c55edb8..63924d5 100644
--- a/src/factor.c
+++ b/src/factor.c
@@ -689,22 +689,6 @@ verify (W <= WIDE_UINT_BITS);
This flag is used only in the GMP code. */
static bool dev_debug = false;
-/* Like error(0, 0, ...), but without an implicit newline.
- Also a noop unless the global DEV_DEBUG is set.
- TODO: Replace with variadic macro in system.h or
- move to a separate module. */
-static inline void
-devmsg (char const *fmt, ...)
-{
- if (dev_debug)
- {
- va_list ap;
- va_start (ap, fmt);
- vfprintf (stderr, fmt, ap);
- va_end (ap);
- }
-}
-
/* Prove primality or run probabilistic tests. */
static bool flag_prove_primality = true;
diff --git a/src/numfmt.c b/src/numfmt.c
index c744875..e8f53fc 100644
--- a/src/numfmt.c
+++ b/src/numfmt.c
@@ -198,22 +198,6 @@ static int decimal_point_length;
/* debugging for developers. Enables devmsg(). */
static bool dev_debug = false;
-/* Like error(0, 0, ...), but without an implicit newline.
- Also a noop unless the global DEV_DEBUG is set.
- TODO: Replace with variadic macro in system.h or
- move to a separate module. */
-static inline void
-devmsg (char const *fmt, ...)
-{
- if (dev_debug)
- {
- va_list ap;
- va_start (ap, fmt);
- vfprintf (stderr, fmt, ap);
- va_end (ap);
- }
-}
-
static inline int
default_scale_base (enum scale_type scale)
{
diff --git a/src/system.h b/src/system.h
index a9588e7..f295ad1 100644
--- a/src/system.h
+++ b/src/system.h
@@ -617,6 +617,16 @@ usable_st_size (struct stat const *sb)
void usage (int status) ATTRIBUTE_NORETURN;
+/* Like error(0, 0, ...), but without an implicit newline.
+ Also a noop unless the global DEV_DEBUG is set. */
+#define devmsg(...) \
+ do \
+ { \
+ if (dev_debug) \
+ fprintf (stderr, __VA_ARGS__); \
+ } \
+ while (0)
+
#define emit_cycle_warning(file_name) \
do \
{ \
--
1.7.7.6
- [PATCH] numfmt: improve processing throughput by 800%,
Pádraig Brady <=