resources/page: Use binary search in Pages.Prev/Next if possible
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 11 Oct 2019 11:55:46 +0000 (13:55 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 13 Oct 2019 10:36:17 +0000 (12:36 +0200)
commit653e6856ea1cfc60cc16733807d23b302dbe4bd5
treec77d48f3ec9a07a47ae5a8d53b2cf7b6c459f66f
parentf4f566edf4bd6a590cf9cdbd5cfc0026ecd93b14
resources/page: Use binary search in Pages.Prev/Next if possible

This is obviously much faster for lager data sets:

```bash
name                         old time/op    new time/op    delta
SearchPage/ByWeight-100-4       267ns ± 4%     272ns ± 5%     ~     (p=0.457 n=4+4)
SearchPage/ByWeight-5000-4     10.8µs ± 3%     1.2µs ± 2%  -88.99%  (p=0.029 n=4+4)
SearchPage/ByWeight-10000-4    21.1µs ± 1%     1.4µs ±11%  -93.28%  (p=0.029 n=4+4)
```

See #4500
hugolib/pages_test.go
resources/page/pages_prev_next.go
resources/page/pages_sort.go
resources/page/pages_sort_search.go [new file with mode: 0644]
resources/page/pages_sort_search_test.go [new file with mode: 0644]
resources/page/pages_sort_test.go
resources/page/testhelpers_test.go
resources/page/weighted.go