Add performance enhancements for SkRegion::op

When looking at pprof for a particularly gnarly set of
consecutive ops (see new benchmark), a curious hotspot
was distance_to_sentinel. We can look at the item just
before the current run to see how long it is instead of
using a loop to walk
the entire way. This had a ~15% improvement.

Before:
```
$ ./control_nanobench --match region
curr/maxrss	loops	min	median	mean	max	stddev	samples   	config	bench
  91/88  MB	497	16.2ns	16.2ns	16.2ns	16.2ns	0%	█▁▁▁▁▁▁▁▁▃	nonrendering	region_contains_sect
  92/88  MB	1	1.37s	1.46s	1.5s	1.77s	8%	▁▃▄▄█▅▂▁▃▂	nonrendering	region_checkerboard
  91/88  MB	1	1.23ms	1.26ms	1.27ms	1.35ms	3%	█▃▂▄▁▁▅▁▁▆	nonrendering	region_setRects_10000_sorted
  91/88  MB	1	301µs	301µs	302µs	307µs	1%	█▂▂█▁▁▁▁▁▁	nonrendering	region_setRects_2500_sorted
  91/88  MB	4	59.1µs	59.1µs	60.1µs	69.1µs	5%	█▁▁▁▁▁▁▁▁▁	nonrendering	region_setRects_500_sorted
  91/88  MB	42	5.63µs	5.65µs	5.74µs	6.59µs	5%	▁▁▁▁▁▁█▁▁▁	nonrendering	region_setRects_50_sorted
  91/88  MB	1	5.5ms	5.51ms	5.52ms	5.55ms	0%	█▂▃█▂▁▄▁█▃	nonrendering	region_setRects_10000
  91/88  MB	1	1.37ms	1.39ms	1.39ms	1.42ms	1%	▇▁▄▇▂▃█▁▁▇	nonrendering	region_setRects_2500
  91/88  MB	2	266µs	266µs	268µs	285µs	2%	▂▂▁▁█▁▁▁▁▁	nonrendering	region_setRects_500
  91/88  MB	12	16.9µs	16.9µs	17.6µs	22.5µs	10%	▂▁▁▁█▁▁▁▁▂	nonrendering	region_setRects_50

```

After:
```
$ ./nanobench --match region
curr/maxrss	loops	min	median	mean	max	stddev	samples   	config	bench
  91/88  MB	394	16.2ns	16.2ns	16.2ns	16.5ns	1%	█▂▁▂▁▂▂▂▂▂	nonrendering	region_contains_sect
  92/88  MB	1	1.07s	1.1s	1.12s	1.26s	7%	▃▂█▄█▁▁▁▁▂	nonrendering	region_checkerboard
  92/88  MB	1	1.08ms	1.09ms	1.11ms	1.16ms	2%	█▂▆▂▁▆▂▂▁▅	nonrendering	region_setRects_10000_sorted
  91/88  MB	2	266µs	268µs	270µs	285µs	2%	▁▃▂▂▁█▁▃▁▂	nonrendering	region_setRects_2500_sorted
  91/88  MB	5	52µs	52.3µs	53.1µs	59.1µs	4%	▂▁▁▁█▃▁▁▁▂	nonrendering	region_setRects_500_sorted
  91/88  MB	49	5µs	5.01µs	5.03µs	5.19µs	1%	▂▁▁▁▁▁▁█▂▂	nonrendering	region_setRects_50_sorted
  91/88  MB	1	4.85ms	4.86ms	4.87ms	4.91ms	0%	▄▃▃▆▂▁▂█▁▁	nonrendering	region_setRects_10000
  91/88  MB	1	1.22ms	1.22ms	1.23ms	1.26ms	1%	█▁▁█▂▁▂█▂▂	nonrendering	region_setRects_2500
  91/88  MB	2	238µs	239µs	246µs	282µs	6%	▆▁▁▁▁▁▁▁█▁	nonrendering	region_setRects_500
  91/88  MB	13	14.6µs	14.7µs	14.8µs	15.6µs	2%	█▂▁▄▁▁▁▁▁▁	nonrendering	region_setRects_50

```

Bug: 511952524
Change-Id: I9c496ba621c61e62790cca62793de1fefee3a85e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1235636
Auto-Submit: Kaylee Lubick <kjlubick@google.com>
Reviewed-by: Florin Malita <fmalita@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
2 files changed