in reply to Re: A better implementation of LCSS?
in thread A better implementation of LCSS?
For what it's worth, I used Memoize on the String::LCSS::lcss sub, and the increase in performance is huge. In fact, String::LCSS is faster than String::LCSS_XS.
The String::LCSS_XS POD shows these Benchmark results (which I was able to reproduce):
Rate String::LCSS String::LCSS_XS String::LCSS 60.9/s -- -100% String::LCSS_XS 84746/s 138966% --
Here are the results with Memoize:
String::LCSS version = 0.12 String::LCSS_XS version = 1.2 >>>the quick brown fox <<< >>>the quick brown fox <<< Rate LCSS_XS LCSS LCSS_XS 195695/s -- -27% LCSS 268817/s 37% --
Here is the code to run it:
use strict; use warnings; use Benchmark qw(cmpthese); use String::LCSS qw(); use String::LCSS_XS qw(); use Memoize qw(memoize); memoize('String::LCSS::lcss'); printf "String::LCSS version = %s\n", $String::LCSS::VERSION; printf "String::LCSS_XS version = %s\n", $String::LCSS_XS::VERSION; my $s = 'i pushed the lazy dog into a creek, the quick brown fox told +me to'; my $t = 'the quick brown fox jumps over the lazy dog'; printf ">>>%s<<<\n", String::LCSS::lcss ($s, $t); printf ">>>%s<<<\n", String::LCSS_XS::lcss($s, $t); print "\n"; #cmpthese(100_000, { # w/out memoize cmpthese(1_000_000, { # w/ memoize LCSS => sub { my $lcss = String::LCSS::lcss ($s, $t); }, LCSS_XS => sub { my $lcss = String::LCSS_XS::lcss($s, $t); }, });
Keep in mind that String::LCSS has critical bugs.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: A better implementation of LCSS? (Memoize)
by BrowserUk (Patriarch) on Nov 18, 2015 at 21:33 UTC | |
by toolic (Bishop) on Nov 18, 2015 at 21:36 UTC | |
by BrowserUk (Patriarch) on Nov 18, 2015 at 21:52 UTC |