A green check means the data is available for the selected measure; a yellow cell lists the measures that the package supports with that approach instead; and a red cross means the approach is not offered at all. Full details per package are in the "Packages" section below.
Considered for the comparison but not benchmarked, with the reason:
Every implementation is timed on the same pre-generated, byte-identical datasets, so no per-language random number generator can influence the comparison. Only the estimator call itself is measured, which means that reading the data from disk happens before the timer starts and is therefore excluded from the result. Each run discards warm-up calls and then records several timed repetitions, and the mean and standard deviation are pooled across seeds so that the error bars are meaningful. The representative variants use four seeds together with a per-seed time budget, while the remaining parameter sweeps use a single seed.
To keep the comparison fair, the runtimes are pinned to a single thread everywhere. On the Java side JIDT is configured with NUM_THREADS=1, and the numerical libraries in the other languages are restricted through OMP_NUM_THREADS=1, OPENBLAS_NUM_THREADS=1, MKL_NUM_THREADS=1, NUMEXPR_NUM_THREADS=1, RAYON_NUM_THREADS=1 and VECLIB_MAXIMUM_THREADS=1. The Python implementations additionally run with workers=1. All packages use the same seeds, the same input sizes and the same estimator parameters.
On this page, "discrete" refers to the maximum-likelihood (MLE) estimator only. The full detailed comparison covers all bias-corrected estimators, ordinal patterns, several kernel bandwidths, the KL and KSG families, and the Rényi and Tsallis entropies across parameter scalings, and it is available in the detailed view.