Avevo bisogno di essere in grado di fornire la rappresentazione esadecimale di un hash SHA512. Forse non sono stato abbastanza duro, ma ho trovato alcune funzioni su Hackage per farlo. Così ho scritto un'implementazione usando unfoldrN
. È decisamente abbastanza veloce per i miei scopi, ma mi chiedo se qualcuno sa di un approccio più veloce.Trasformare efficientemente un ByteString in una rappresentazione esadecimale
Ho messo la mia implementazione su Github come un esempio: https://gist.github.com/2356925. Il file include anche un'implementazione semplice basata su Numeric.showHex
, un test QuickCheck e un benchmark di criterio. I miei attuali risultati della versione semplice rispetto alla versione unfoldrN
sono:
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
Chiunque vuole prendere una pugnalata a migliorarlo?
http://whosawthatcoming.com/private/PMBFOGQIHT BLAM! – Will