Hi
I’ve been following the project and noticed the focus on performance. I recently developed a library called TurboPLY that might be of interest to this community, especially for handling the massive property sets typical in Gaussian Splatting (SH coefficients, opacities, etc.).
TurboPLY:
High-performance, lightweight PLY file I/O library designed for large-scale datasets with zero-copy memory-mapped I/O

https://github.com/guangxi-research/turboply
I have integrated TurboPly into OpenSplat and implemented both Model::saveWithTurboPly() and Model::loadWithTurboPly().
Here are the benchmark results on PLY I/O under different vertex counts and spherical harmonic coefficients:
| Number of Vertices |
Spherical Harmonic Coefficients |
Model::savePly()(s) |
Model::saveWithTurboPly(enable_file_mapping:true)(s) |
Model::saveWithTurboPly(enable_file_mapping:false)(s) |
File Size (KB) |
Format |
| 100,000 |
0 |
0.422 |
0.051 |
0.048 |
6642 |
Binary |
|
9 |
0.430 |
0.054 |
0.062 |
10157 |
Binary |
|
24 |
0.438 |
0.130 |
0.148 |
16017 |
Binary |
|
45 |
0.448 |
0.140 |
0.158 |
24221 |
Binary |
| 500,000 |
0 |
1.822 |
0.181 |
0.245 |
33204 |
Binary |
|
9 |
1.948 |
0.328 |
0.377 |
50782 |
Binary |
|
24 |
2.003 |
0.673 |
0.567 |
80080 |
Binary |
|
45 |
2.013 |
0.726 |
0.959 |
121096 |
Binary |
| 10,000,000 |
0 |
3.759 |
0.388 |
0.466 |
66407 |
Binary |
|
9 |
3.758 |
0.582 |
0.665 |
101564 |
Binary |
|
24 |
3.793 |
0.908 |
1.023 |
160158 |
Binary |
|
45 |
3.968 |
1.388 |
1.504 |
242190 |
Binary |
| Number of Vertices |
Spherical Harmonic Coefficients |
Model::loadPly()(s) |
Model::loadWithTurboPly(enable_file_mapping:true)(s) |
Model::loadWithTurboPly(enable_file_mapping:false)(s) |
File Size (KB) |
Format |
| 100,000 |
0 |
0.376 |
0.027 |
0.031 |
6642 |
Binary |
|
9 |
0.357 |
0.041 |
0.046 |
10157 |
Binary |
|
24 |
0.431 |
0.063 |
0.073 |
16017 |
Binary |
|
45 |
0.444 |
0.090 |
0.112 |
24221 |
Binary |
| 500,000 |
0 |
1.782 |
0.146 |
0.186 |
33204 |
Binary |
|
9 |
1.832 |
0.214 |
0.220 |
50782 |
Binary |
|
24 |
1.856 |
0.310 |
0.384 |
80080 |
Binary |
|
45 |
1.868 |
0.504 |
0.597 |
121096 |
Binary |
| 10,000,000 |
0 |
3.578 |
0.313 |
0.313 |
66407 |
Binary |
|
9 |
3.563 |
0.657 |
0.780 |
101564 |
Binary |
|
24 |
3.607 |
0.941 |
1.138 |
160158 |
Binary |
|
45 |
3.642 |
1.138 |
1.138 |
242190 |
Binary |