[PATCH] D126159: [ADT] Add edit_distance_insensitive to StringRef
Nathan James via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 2 01:40:46 PDT 2022
njames93 marked 4 inline comments as done.
njames93 added inline comments.
================
Comment at: llvm/include/llvm/ADT/edit_distance.h:86-91
+ Previous + (Map(FromArray[y - 1]) == Map(ToArray[x - 1]) ? 0u : 1u),
+ std::min(Row[x - 1], Row[x]) + 1);
}
else {
- if (FromArray[y-1] == ToArray[x-1]) Row[x] = Previous;
+ if (Map(FromArray[y - 1]) == Map(ToArray[x - 1]))
+ Row[x] = Previous;
----------------
dblaikie wrote:
> is there any concern about the number of times the map operation is used? Looks like the algorithm visits elements more than once, so might be worth some caching?
>
> Like an easy one would probably be to compute `Map(FromArray[y-1])` outside the `for x` loop at least? (but maybe other caching should be done too, I don't know - I guess toLower is cheap enough that it's not worth much more involved caching? - I guess `Map(ToArray[x])` could be computed and cached for the next round's references to `Map(ToArray[x-1])` for instance?)
Caching the outer loop value makes sense, but for the inner loop, probably not so much. If its expensive then it'd be better off to just create new arrays with the mapped values, then call ComputeEditDistance with no map functor.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D126159/new/
https://reviews.llvm.org/D126159
More information about the llvm-commits
mailing list