From cc85b927cdc1a4dad3217842215903a45044fc43 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sat, 22 Jun 2013 00:22:08 -0400 Subject: 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. --- dep.h | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'dep.h') diff --git a/dep.h b/dep.h index d1d3bbb..a7c74a1 100644 --- a/dep.h +++ b/dep.h @@ -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); -- cgit v1.2.3