diff options
author | Paul Smith <psmith@gnu.org> | 2013-06-22 00:22:08 -0400 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2013-06-22 00:22:08 -0400 |
commit | cc85b927cdc1a4dad3217842215903a45044fc43 (patch) | |
tree | 74ae34c9306f5dde33e258c4181215ee04d4203f /dep.h | |
parent | bee4d93a591f7f729717f6079f7d62ef555d9887 (diff) | |
download | gunmake-cc85b927cdc1a4dad3217842215903a45044fc43.tar.gz |
Create a character map to use for locating stop-points in strings.
In various places we were passing flags and characters to compare, then
using complex conditionals to see where to stop in string searches.
Performance numbers reveal that we were spending as much as 23% of our
processing time in these functions, most of it in the comparison lines.
Instead create a character map and use a single bitwise comparison to
determine if this is any one of the stop characters.
Diffstat (limited to 'dep.h')
-rw-r--r-- | dep.h | 15 |
1 files changed, 7 insertions, 8 deletions
@@ -53,13 +53,12 @@ struct nameseq const char *name; }; - -#define PARSEFS_NONE (0x0000) -#define PARSEFS_NOSTRIP (0x0001) -#define PARSEFS_NOAR (0x0002) -#define PARSEFS_NOGLOB (0x0004) -#define PARSEFS_EXISTS (0x0008) -#define PARSEFS_NOCACHE (0x0010) +#define PARSEFS_NONE 0x0000 +#define PARSEFS_NOSTRIP 0x0001 +#define PARSEFS_NOAR 0x0002 +#define PARSEFS_NOGLOB 0x0004 +#define PARSEFS_EXISTS 0x0008 +#define PARSEFS_NOCACHE 0x0010 #define PARSE_FILE_SEQ(_s,_t,_c,_p,_f) \ (_t *)parse_file_seq ((_s),sizeof (_t),(_c),(_p),(_f)) @@ -68,7 +67,7 @@ struct nameseq void *parse_file_seq (); #else void *parse_file_seq (char **stringp, unsigned int size, - int stopchar, const char *prefix, int flags); + int stopmap, const char *prefix, int flags); #endif char *tilde_expand (const char *name); |