Benchmark for methods described in this article:
https://medium.com/@frontman/%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2-%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85-%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B9-d84ed1b1a930
and one own method
(c) Tegos