-
Notifications
You must be signed in to change notification settings - Fork 8
v0.3 Benchmarks
This page shows performance comparisons against other libraries : Assimp, OpenCascade and Lib3MF.
Each benchmark comparison consists of four consecutive performance tests:
- Read the input STL file into some mesh object
M
(eg.aiScene
for Assimp) - Write mesh
M
to STL ascii file - Write mesh
M
to STL binary little-endian file - Write mesh
M
to STL binary big-endian file
In case some functionality is not supported by the opponent then N/A
is displayed.
The column speedup
is the execution time of the opponent divided by the execution time of gmio, it tells how much gmio is faster(ie. > 1) or slower than its opponent.
To be relevant, the benchmark code for gmio produces the same resulting objects as its opponent.
benchmark_assimp "read" produces an aiScene
object the same way the Assimp importer does.
benchmark_opencascade "read" builds an StlMesh_Mesh
object.
benchmark_lib3mf "read" builds a NMR::CMesh
object.
Each performance test is run 5 times, only the best execution time is kept in the final result.
OS: Windows 7 Professional SP1 x64
CPU: Intel i5-4670 @ 3.4GHz
RAM: 16GB
Library | Version | Arch/compiler | Linkage | Note |
---|---|---|---|---|
gmio | v0.3.1 | x64/vs2013 | Static | See build options below (*)
|
Assimp | v3.1.1 | x64/? | DLL | Official "release" binaries from sourceforge |
OpenCascade | v7.0.0 | x64/vs2013 | DLL | Official "release" binaries |
Lib3MF | #a466df4 | x64/vs2013 | Static | Rebuilt as a static library |
(*)
Build options of gmio:
GMIO_BUILD_STRICT_C90=OFF
GMIO_STR2FLOAT_LIB=irrlicht_fast_atof
GMIO_FLOAT2STR_LIB=google_doubleconversion
File: Final_Eiffel_Tower.stl
Format: Binary STL (little-endian)
Count of triangles: 174762
Size: 8.33MB
Test | gmio | Assimp | speedup |
---|---|---|---|
read | 14ms | 18ms | 1.29x |
write(ascii) | 158ms | 1698ms | 10.75x |
write(binary/le) | 7ms | 129ms | 18.43x |
write(binary/be) | 8ms | N/A | N/A |
Test | gmio | OpenCascade | speedup |
---|---|---|---|
read | 572ms | 2221ms | 3.88x |
write(ascii) | 259ms | 3807ms | 14.70x |
write(binary/le) | 9ms | 4816ms | 535.11x |
write(binary/be) | 10ms | N/A | N/A |
Test | gmio | Lib3MF | speedup |
---|---|---|---|
read | 71ms | 79ms | 1.11x |
write(ascii) | 166ms | N/A | N/A |
write(binary/le) | 10ms | 30ms | 3.00x |
write(binary/be) | 12ms | N/A | N/A |
File: Buddha.stl
Format: ASCII STL
Count of triangles: 540372
Size: 143.78MB
Test | gmio | Assimp | speedup |
---|---|---|---|
read | 482ms | 476ms | 0.99x |
write(ascii) | 511ms | 5576ms | 10.91x |
write(binary/le) | 21ms | 382ms | 18.19x |
write(binary/be) | 23ms | N/A | N/A |
Test | gmio | OpenCascade | speedup |
---|---|---|---|
read | 2234ms | 10734ms | 4.80x |
write(ascii) | 731ms | 9580ms | 13.11x |
write(binary/le) | 28ms | 12485ms | 445.89x |
write(binary/be) | 31ms | N/A | N/A |
Test | gmio | Lib3MF | speedup |
---|---|---|---|
read | 749ms | N/A | N/A |
write(ascii) | 519ms | N/A | N/A |
write(binary/le) | 31ms | N/A | N/A |
write(binary/be) | 34ms | N/A | N/A |
File: Behotec-J66-HP.step
Format: STEP
Size: 21.78MB
This benchmark measures performance of writing TopoDS_Shape
internal triangulation. It's using gmio_stl_mesh_occshape
and OpenCascade's StlAPI_Writer
.
Test | gmio | OpenCascade | speedup |
---|---|---|---|
brepwrite(ascii) | 757ms | 3326ms | 4.39x |
brepwrite(binary/le) | 44ms | 74ms | 1.68x |
brepwrite(binary/be) | 46ms | N/A | N/A |