[llvm-commits] [llvm] r92884 - /llvm/trunk/lib/Support/StringRef.cpp

John McCall rjmccall at apple.com
Wed Jan 6 17:09:07 PST 2010


Just to drive you insane with trivialities... :)

On Jan 6, 2010, at 4:51 PM, Douglas Gregor wrote:
> @@ -51,13 +52,21 @@
>   size_type m = size();
>   size_type n = Other.size();
> 
> -  SmallVector<unsigned, 32> previous(n+1, 0);
> -  for (SmallVector<unsigned, 32>::size_type i = 0; i <= n; ++i) 
> +  unsigned SmallPrevious[32];
> +  unsigned SmallCurrent[32];
> +  
> +  unsigned *previous = SmallPrevious;
> +  unsigned *current = SmallCurrent;
> +  if (n + 1 > 32) {
> +    previous = new unsigned [n+1];
> +    current = new unsigned [n+1];
> +  }
> +  
> +  for (unsigned i = 0; i <= n; ++i) 
>     previous[i] = i;
> 
> -  SmallVector<unsigned, 32> current(n+1, 0);
>   for (size_type y = 1; y <= m; ++y) {
> -    current.assign(n+1, 0);
> +    std::memset(current, 0, (n + 1) * sizeof(unsigned));
>     current[0] = y;
>     for (size_type x = 1; x <= n; ++x) {
>       if (AllowReplacements) {

This memset is unnecessary;  the algorithm does not read values from 'current' that have not yet been written for this column.

Also, you only need one allocation. :)

John.



More information about the llvm-commits mailing list