Another 18% speedup for mandocdb(8) -Q, found by gprof(1).
authorschwarze <schwarze@openbsd.org>
Mon, 6 Jan 2014 22:39:19 +0000 (22:39 +0000)
committerschwarze <schwarze@openbsd.org>
Mon, 6 Jan 2014 22:39:19 +0000 (22:39 +0000)
In -Q mode, refrain form validating and normalizing the format
of the date given in .Dd or .TH, as it won't be used anyway.

For /usr/share/man, mandocdb -Q now takes 45% of the time of makewhatis(8).

usr.bin/mandoc/man_validate.c
usr.bin/mandoc/mdoc_validate.c

index 54a4f5a..b103137 100644 (file)
@@ -1,7 +1,7 @@
-/*     $Id: man_validate.c,v 1.59 2013/12/31 18:07:06 schwarze Exp $ */
+/*     $Id: man_validate.c,v 1.60 2014/01/06 22:39:19 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2010, 2012, 2013 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2010, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -207,8 +207,8 @@ check_root(CHKARGS)
 
                man->meta.title = mandoc_strdup("unknown");
                man->meta.msec = mandoc_strdup("1");
-               man->meta.date = mandoc_normdate
-                       (man->parse, NULL, n->line, n->pos);
+               man->meta.date = man->quick ? mandoc_strdup("") :
+                   mandoc_normdate(man->parse, NULL, n->line, n->pos);
        }
 
        return(1);
@@ -431,8 +431,10 @@ post_TH(CHKARGS)
        if (n)
                n = n->next;
        if (n && n->string && '\0' != n->string[0]) {
-               man->meta.date = mandoc_normdate
-                   (man->parse, n->string, n->line, n->pos);
+               man->meta.date = man->quick ?
+                   mandoc_strdup(n->string) :
+                   mandoc_normdate(man->parse, n->string,
+                       n->line, n->pos);
        } else
                man->meta.date = mandoc_strdup("");
 
index aeea044..ec94325 100644 (file)
@@ -1,7 +1,7 @@
-/*     $Id: mdoc_validate.c,v 1.117 2014/01/06 00:53:14 schwarze Exp $ */
+/*     $Id: mdoc_validate.c,v 1.118 2014/01/06 22:39:19 schwarze Exp $ */
 /*
  * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2010, 2011, 2012, 2013 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org>
  * Copyright (c) 2010 Joerg Sonnenberger <joerg@netbsd.org>
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -2180,8 +2180,8 @@ post_dd(POST_ARGS)
 
        n = mdoc->last;
        if (NULL == n->child || '\0' == n->child->string[0]) {
-               mdoc->meta.date = mandoc_normdate
-                       (mdoc->parse, NULL, n->line, n->pos);
+               mdoc->meta.date = mdoc->quick ? mandoc_strdup("") :
+                   mandoc_normdate(mdoc->parse, NULL, n->line, n->pos);
                return(1);
        }
 
@@ -2192,8 +2192,8 @@ post_dd(POST_ARGS)
        }
 
        assert(c);
-       mdoc->meta.date = mandoc_normdate
-               (mdoc->parse, buf, n->line, n->pos);
+       mdoc->meta.date = mdoc->quick ? mandoc_strdup(buf) :
+           mandoc_normdate(mdoc->parse, buf, n->line, n->pos);
 
        return(1);
 }