forked from OSchip/llvm-project
2fcffcd0e8
This expands the lookup table statically and avoids routing through methods that contain asserts (like StringRef/std::string element accessors and drop_front) such that performance is more predictable across compilation environments. This was primarily driven by slow debug mode performance but has a large benefit in release builds as well. ``` ssd_mobilenet_v2_face_float (42MB .mlir) Debug/MSVC (old): 5.22s Debug/MSVC (new): 0.16s Release/MSVC (old): 0.81s Release/MSVC (new): 0.02s huggingface_minilm (536MB .mlir) Debug/MSVC (old): 65.31s Debug/MSVC (new): 2.03s Release/MSVC (old): 9.93s Release/MSVC (new): 0.27s ``` Now in debug the time is split evenly between lexString, tryGetFromHex, and element attrs hashing, with the next step to making it faster being to combine the work (incremental hashing during conversion, etc) - but this is at least in the right order of magnitude and retains the original API surface. I have not profiled a build with clang but this is strictly less code and simpler data structures so I'd expect improvements there as well. This also fixes a bug where 0xFF bytes in the input would read out of bounds. Reviewed By: dblaikie, stellaraccident Differential Revision: https://reviews.llvm.org/D112105 |
||
---|---|---|
.. | ||
APFixedPointTest.cpp | ||
APFloatTest.cpp | ||
APIntTest.cpp | ||
APSIntTest.cpp | ||
AnyTest.cpp | ||
ArrayRefTest.cpp | ||
BitFieldsTest.cpp | ||
BitVectorTest.cpp | ||
BitmaskEnumTest.cpp | ||
BreadthFirstIteratorTest.cpp | ||
BumpPtrListTest.cpp | ||
CMakeLists.txt | ||
CoalescingBitVectorTest.cpp | ||
DAGDeltaAlgorithmTest.cpp | ||
DeltaAlgorithmTest.cpp | ||
DenseMapTest.cpp | ||
DenseSetTest.cpp | ||
DepthFirstIteratorTest.cpp | ||
DirectedGraphTest.cpp | ||
EnumeratedArrayTest.cpp | ||
EquivalenceClassesTest.cpp | ||
FallibleIteratorTest.cpp | ||
FloatingPointMode.cpp | ||
FoldingSet.cpp | ||
FunctionExtrasTest.cpp | ||
FunctionRefTest.cpp | ||
HashingTest.cpp | ||
IListBaseTest.cpp | ||
IListIteratorTest.cpp | ||
IListNodeBaseTest.cpp | ||
IListNodeTest.cpp | ||
IListSentinelTest.cpp | ||
IListTest.cpp | ||
ImmutableListTest.cpp | ||
ImmutableMapTest.cpp | ||
ImmutableSetTest.cpp | ||
IntEqClassesTest.cpp | ||
IntervalMapTest.cpp | ||
IntrusiveRefCntPtrTest.cpp | ||
IteratorTest.cpp | ||
MapVectorTest.cpp | ||
MappedIteratorTest.cpp | ||
OptionalTest.cpp | ||
PackedVectorTest.cpp | ||
PointerEmbeddedIntTest.cpp | ||
PointerIntPairTest.cpp | ||
PointerSumTypeTest.cpp | ||
PointerUnionTest.cpp | ||
PostOrderIteratorTest.cpp | ||
PriorityWorklistTest.cpp | ||
RangeAdapterTest.cpp | ||
SCCIteratorTest.cpp | ||
STLExtrasTest.cpp | ||
STLForwardCompatTest.cpp | ||
ScopeExitTest.cpp | ||
SequenceTest.cpp | ||
SetVectorTest.cpp | ||
SimpleIListTest.cpp | ||
SmallPtrSetTest.cpp | ||
SmallSetTest.cpp | ||
SmallStringTest.cpp | ||
SmallVectorTest.cpp | ||
SparseBitVectorTest.cpp | ||
SparseMultiSetTest.cpp | ||
SparseSetTest.cpp | ||
StatisticTest.cpp | ||
StringExtrasTest.cpp | ||
StringMapTest.cpp | ||
StringRefTest.cpp | ||
StringSetTest.cpp | ||
StringSwitchTest.cpp | ||
TestGraph.h | ||
TinyPtrVectorTest.cpp | ||
TripleTest.cpp | ||
TwineTest.cpp | ||
TypeSwitchTest.cpp | ||
TypeTraitsTest.cpp | ||
WaymarkingTest.cpp |