NAME
Data::ULID::XS - XS backend for ULID generation
SYNOPSIS
use Data::ULID::XS qw(ulid binary_ulid);
# use like Data::ULID
DESCRIPTION
This module replaces some parts of Data::ULID that are performance-critical with XS counterparts. Its interface is the same as Data::ULID, but you get free XS speedups.
FUNCTIONS
Same as Data::ULID. All functions should work exactly the same, but ulid and binary_ulid called with no arguments are reimplemented in XS.
RNG backend
The module uses CryptX to quickly generate secure randomness. The default algorithm used is Sober128. You can change that by replacing the $Data::ULID::XS::RNG variable with a different Crypt::PRNG object.
BENCHMARK
Comparing ULID generation speeds of Perl and XS implementations:
Rate Data::ULID::ulid Data::ULID::binary_ulid Data::ULID::XS::ulid Data::ULID::XS::binary_ulid
Data::ULID::ulid 85339/s -- -39% -91% -93%
Data::ULID::binary_ulid 140302/s 64% -- -85% -89%
Data::ULID::XS::ulid 944258/s 1006% 573% -- -26%
Data::ULID::XS::binary_ulid 1273091/s 1392% 807% 35% --
Benchmark ran on Thinkpad T480 (i7-8650U) and FreeBSD 14.0.
SEE ALSO
AUTHOR
Bartosz Jarzyna, <bbrtj.pro@gmail.com>
COPYRIGHT AND LICENSE
Copyright (C) by Bartosz Jarzyna
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.