Following on from commit f86bb696, 01-02-2010,
    "join: make -t '' operate on the whole line".
    Bypassing the delimiter search in this case,
    was seen to give around an 8% performance boost.
    
    * src/join (xfields): Don't bother looking for '\n'
    in the data, which we know won't be present.

diff --git a/src/join.c b/src/join.c
index fa18c9d..f3a7288 100644
--- a/src/join.c
+++ b/src/join.c
@@ -249,13 +249,13 @@ xfields (struct line *line)
   if (ptr == lim)
     return;
 
-  if (0 <= tab)
+  if (0 <= tab && tab != '\n')
     {
       char *sep;
       for (; (sep = memchr (ptr, tab, lim - ptr)) != NULL; ptr = sep + 1)
         extract_field (line, ptr, sep - ptr);
     }
-  else
+  else if (0 > tab)
     {
       /* Skip leading blanks before the first field.  */
       while (isblank (to_uchar (*ptr)))


Reply via email to