This document shows the benchmark scores of HomCloud.
Computation times and maximal memory usages for persistence diagram computation
are measured by `time -v`

command. The benchmark results of the inverse analysis are also shown.

PC spec and OS are as follows:

- CPU: AMD Ryzen 9 5950X
- Memory: 128GB
- OS: Ubuntu 20.04

A persistence diagram is computed on a single core. Parallel computing is not used. The time and memory is measured only one time, and the result of this document is not the average time and memory.

Each point is randomly drawn from a uniform distribution on (-1,1)^3.

- 10,000 points - 2.4sec 350MB (pdgm file size: 13MB)
- 1d optimal volume with
`cutoff_radius=0.1`

- 3.5sec 240MB

- 1d optimal volume with
- 100,000 points - 23sec 3GB (pdgm file size: 136MB)
- 1d optimal volume with
`cutoff_radius=0.1`

- 32sec 1.6GB

- 1d optimal volume with
- 1,000,000 points - 260sec, 27GB (pdgm file size: 1.5GB)
- 1d optimal volume with
`cutoff_radius=0.1`

- 190sec 15GB

- 1d optimal volume with
- 3,000,000 points - 800sec, 80GB (pdgm file size: 4.4GB)
- 1d optimal volume with
`cutoff_radius=0.1`

- 310sec 43GB

- 1d optimal volume with

Each point is randomly drawn from a uniform distribution on (-1,1)^3.

- 10000 points - 3.6sec 380MB (pdgm file size: 13MB)
- 100000 points - 31sec 3GB (pdgm file size: 137MB)
- 1000000 points - 350sec, 27GB (pdgm file size: 1.5GB)

In HomCloud, alpha filtration is computed using the CGAL library. A PD is calculated using PHAT.

The following two types of data were used for 3D data. One is that each voxel value is random, and
the sublevel persistence diagram is computed. The other is the data obtained by distance transform.
The data by distance transform is more *ordered* than the random voxel value data,
and the order makes the computation faster.

- 100x100x100 - 5sec 570MB
- 300x300x300 - 614sec 11GB

- 100x100x100 - 1.6sec 310MB
- 300x300x300 - 50sec 6.4GB
- 600x600x600 - 530sec 60GB
- 800x800x800 - not comuputable because of memoly limitation. We plan to try bigger computer

The algorithm for computing the PD from 2D/3D bitmap is separated into the homccube3 library.

A point cloud in 10-dimensional Euclidean space is randomly uniformly generated and distance matrix with Euclidean distance is computed.

- 1000 points
- maxdim=1: 1.6sec 210MB
- maxdim=2: 90sec 10GB
- maxdim=3: Memory limitation

- 10000 points
- maxdim=1: 500sec, 16GB
- maxdim=2: Memory limitation

- 20000 points
- maxdim=1: 2000sec, 65GB

- 50000 points
- maxdim=1: Memory limitation

Ripser is used in HomCloud.