Мне нужно было дать шестнадцатеричное представление хеша SHA512. Может быть, я просто не выглядел достаточно тяжело, но я мог найти любые функции в Hackage, чтобы это сделать. Поэтому я написал реализацию с помощью unfoldrN
. Это определенно достаточно быстро для моих целей, но мне интересно, знает ли кто-нибудь более быстрый подход.
Я поставил свою реализацию на Github как сущность: https://gist.github.com/2356925. Файл также включает простую реализацию на основе Numeric.showHex
, теста QuickCheck и критерия критерия. Мои текущие результаты простой версии и версии unfoldrN
:
benchmarking simple
mean: 4.677296 ms, lb 4.656011 ms, ub 4.696684 ms, ci 0.950
std dev: 104.2791 us, lb 87.77023 us, ub 128.1627 us, ci 0.950
found 5 outliers among 100 samples (5.0%)
4 (4.0%) low mild
variance introduced by outliers: 15.195%
variance is moderately inflated by outliers
benchmarking unfoldrN_MS1
mean: 370.0101 us, lb 365.9819 us, ub 373.8619 us, ci 0.950
std dev: 20.17016 us, lb 16.92772 us, ub 24.08982 us, ci 0.950
found 14 outliers among 100 samples (14.0%)
7 (7.0%) low mild
7 (7.0%) high mild
variance introduced by outliers: 52.467%
variance is severely inflated by outliers
Кто-нибудь хочет сделать удар, чтобы улучшить его?