[PATCH] D30130: ArgList: cache index ranges containing arguments with each ID
Richard Smith via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 17 17:34:27 PST 2017
rsmith created this revision.
Improve performance of argument list parsing with large numbers of IDs and large numbers of arguments, by tracking a conservative range of indexes within the argument list that might contain an argument with each ID. In the worst case (when the first and last argument with a given ID are at the opposite ends of the argument list), this still results in a linear-time walk of the list, but it helps substantially in the common case where each ID occurs only once, or a few times close together in the list.
This gives a ~10x speedup to clang's `test/Driver/response-file.c`, which constructs a very large set of command line arguments and feeds them to the clang driver.
In passing I also converted the interface to use variadic templates. I can split those changes into a separate patch if you'd prefer.
Repository:
rL LLVM
https://reviews.llvm.org/D30130
Files:
include/llvm/Option/ArgList.h
lib/Option/ArgList.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D30130.89000.patch
Type: text/x-patch
Size: 21342 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170218/a6c0cdb0/attachment.bin>
More information about the llvm-commits
mailing list