Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

Re: need help with judy array searching (Judy Array References)

by eyepopslikeamosquito (Archbishop)
on Dec 16, 2020 at 00:17 UTC ( [id://11125269] : note . print w/replies, xml ) Need Help??

in reply to need help with judy array searching

I'm assuming that whoever wrote these Perl Judy scripts in the first place has now left your company, and without providing a comprehensive handover. Am I close?

You've asked two questions now on Judy arrays and neither has convinced me you have the technical chops required to take over this project. Maybe it's time to step back and look at the bigger picture. Do you really really need the performance boost that Judy arrays provide? Is this required performance boost clearly documented? Are benchmarks provided demonstrating why? Is there a strong business case? Or was it just a fun project to play with by a clever former employee?

If you don't really need the performance boost of Judy arrays, you might consider converting the code to simply use Perl hashes instead because that would make long term code maintenance easier for your company as employees come and go over time.

Having said that, the Judy array code looks like it was written by an expert (Doug Baskins) and appears to be very stable ... still, you may struggle to get quick support if you hit a bug.

BTW, one quote from the infamous BrowserUk scared me:

A supersearch for my name and judy arrays will turn up a compact, single file version of the Judy array code that compiled clean and worked very well for that application. Still slower than hashes, but far more compact. Just hope you don't find any bugs, because the Judy code is horribly complex.

Having got that off my chest, I find high performance fun, and I've never used Judy arrays, so I've put together some basic references below that I might play with later when I get more time.

BrowserUk on Judy arrays:

Judy arrays on PM:

Judy arrays on CPAN:

Building the Judy C Library on Linux

Notes below based on Re: Rosetta Code: Long List is Long - JudySL code by marioroy.

Introduction to Judy C Library: Judy Arrays Web Page

Download the Judy library (Judy-1.0.5.tar.gz) from: sourceforge Judy

Example build of the Judy C Library on Ubuntu Linux:

cd $HOME/local-judy tar -xzf Judy-1.0.5.tar.gz cd judy-1.0.5 ./configure --enable-64-bit make sudo make install

Example compile and run of a C++ program on Linux that uses the Judy library (taken from my-rosetta-code-notes):

clang++ -o llil4judy -std=c++20 -fopenmp -Wall -O3 llil4judy.cpp -I "$ +HOME/local-fast_io/fast_io/include" -I "$HOME/local-boost/boost_1_81_ +0" -I /usr/local/include -L /usr/local/lib -l Judy LD_LIBRARY_PATH=/usr/local/lib ./llil4judy big1.txt big2.txt big3.txt +>f.tmp