Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6522eb0

Browse files
committed
* Parser/grammar1.c (finddfa): massive speed up by using direct
addressing instead of searching
1 parent 8534741 commit 6522eb0

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

Parser/grammar1.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,23 @@ finddfa(g, type)
3636
grammar *g;
3737
register int type;
3838
{
39-
register int i;
4039
register dfa *d;
40+
#if 1
41+
/* Massive speed-up */
42+
d = &g->g_dfa[type - NT_OFFSET];
43+
assert(d->d_type == type);
44+
return d;
45+
#else
46+
/* Old, slow version */
47+
register int i;
4148

4249
for (i = g->g_ndfas, d = g->g_dfa; --i >= 0; d++) {
4350
if (d->d_type == type)
4451
return d;
4552
}
4653
assert(0);
4754
/* NOTREACHED */
55+
#endif
4856
}
4957

5058
char *

0 commit comments

Comments
 (0)