Skip to content
Hugues Delorme edited this page Mar 30, 2017 · 1 revision

Introduction

This page shows performance comparisons against other libraries : Assimp, OpenCascade and Lib3MF.

Each benchmark comparison consists of four consecutive performance tests:

  1. Read the input STL file into some mesh object M (eg. aiScene for Assimp)
  2. Write mesh M to STL ascii file
  3. Write mesh M to STL binary little-endian file
  4. 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.

Running configuration

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

Results for testing model 1

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

Results for testing model 2

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

Results for testing model 3

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