Abstract
In a high performance finite automata implementation, a great deal of time is spent on cache misses. Additionally, when the transition labels are not simple letters, the implementation of a state's outtransitions is limited to ‘lists of transitions’ or ‘arrays of transitions’. In either case, still more time is spent on finding the appropriate outtransition for a given input symbol.
In this paper, we consider some ways to minimize these effects, using Ribbit's FIRE Engine II automata toolkit as the testbed. The optimizations considered include cache placement and transition list ordering. Some of the optimizations require information on the popularity of transitions within the automata (assuming ‘typical’ input strings). We also consider ways of obtaining the popularity information, such as: the structure of the regular expression from which the automaton was constructed and instrumenting the automaton to collect profiling information.
Preview
Unable to display preview. Download preview PDF.
References
Aho, A.V., R. Sethi, and J.D. Ullman. Compilers: Principles, Techniques, and Tools. (Addison-Wesley, Reading, MA, 1988).
Budd, T. Classic Data Structures in C++. (Addison-Wesley, Reading, MA, 1994).
Watson, B.W. Taxonomies and Toolkits of Regular Language Algorithms. (Ph.D dissertation, Eindhoven University of Technology, The Netherlands, 1995).
Wolfe, M. High Performance Compiler for Parallel Computing. (Addison-Wesley, Reading, MA, 1995).
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1998 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Watson, B.W. (1998). Practical optimizations for automata. In: Wood, D., Yu, S. (eds) Automata Implementation. WIA 1997. Lecture Notes in Computer Science, vol 1436. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0031396
Download citation
DOI: https://doi.org/10.1007/BFb0031396
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-64694-5
Online ISBN: 978-3-540-69104-4
eBook Packages: Springer Book Archive