Performance testing of OBJ loader

[1]:
%load_ext autoreload
%autoreload 2
[2]:
import lmenv
env = lmenv.load('.lmenv')
[3]:
import os
import imageio
import pandas as pd
import numpy as np
import timeit
import lmscene
import lightmetrica as lm
[4]:
%load_ext lightmetrica_jupyter
[5]:
lm.init()
lm.log.init('jupyter')
lm.progress.init('jupyter')
lm.info()
[I|0.000] Lightmetrica -- Version 3.0.0 (rev. 70601db) Linux x64
[6]:
lm.comp.load_plugin(os.path.join(env.bin_path, 'objloader_tinyobjloader'))
[I|0.017] Loading plugin [name='objloader_tinyobjloader']
[I|0.017] .. Successfully loaded [name='objloader_tinyobjloader']
[7]:
objloader_names = ['simple', 'tinyobjloader']
scene_names = lmscene.scenes_small()
[8]:
loading_time_df = pd.DataFrame(columns=objloader_names, index=scene_names)
for scene_name in scene_names:
    # Check consistency with other loaders
    for objloader_name in objloader_names:
        # Load the scene with selected obj loader
        lm.objloader.init(objloader_name)
        lm.reset()

        def load_model():
            lm.load_model('model_obj', 'wavefrontobj', {
                'path': os.path.join(env.scene_path, 'fireplace_room/fireplace_room.obj')
            })

        loading_time = timeit.timeit(stmt=load_model, number=1)
        loading_time_df[objloader_name][scene_name] = loading_time
[I|0.053] Loading asset [name='model_obj']
[I|0.053] .. Loading OBJ file [path='fireplace_room.obj']
[I|0.053] .. Loading MTL file [path='fireplace_room.mtl']
[I|0.377] .. Loading texture [path='wood.ppm']
[I|0.468] .. Loading texture [path='leaf.ppm']
[I|0.470] .. Loading texture [path='picture8.ppm']
[I|0.502] .. Loading texture [path='wood5.ppm']
[I|0.559] Loading asset [name='model_obj']
[I|0.861] .. Loading texture [path='wood.ppm']
[I|0.949] .. Loading texture [path='leaf.ppm']
[I|0.951] .. Loading texture [path='picture8.ppm']
[I|0.980] .. Loading texture [path='wood5.ppm']
[I|1.035] Loading asset [name='model_obj']
[I|1.035] .. Loading OBJ file [path='fireplace_room.obj']
[I|1.035] .. Loading MTL file [path='fireplace_room.mtl']
[I|1.355] .. Loading texture [path='wood.ppm']
[I|1.444] .. Loading texture [path='leaf.ppm']
[I|1.447] .. Loading texture [path='picture8.ppm']
[I|1.475] .. Loading texture [path='wood5.ppm']
[I|1.531] Loading asset [name='model_obj']
[I|1.824] .. Loading texture [path='wood.ppm']
[I|1.911] .. Loading texture [path='leaf.ppm']
[I|1.913] .. Loading texture [path='picture8.ppm']
[I|1.943] .. Loading texture [path='wood5.ppm']
[I|1.995] Loading asset [name='model_obj']
[I|1.996] .. Loading OBJ file [path='fireplace_room.obj']
[I|1.996] .. Loading MTL file [path='fireplace_room.mtl']
[I|2.307] .. Loading texture [path='wood.ppm']
[I|2.388] .. Loading texture [path='leaf.ppm']
[I|2.390] .. Loading texture [path='picture8.ppm']
[I|2.417] .. Loading texture [path='wood5.ppm']
[I|2.473] Loading asset [name='model_obj']
[I|2.772] .. Loading texture [path='wood.ppm']
[I|2.859] .. Loading texture [path='leaf.ppm']
[I|2.862] .. Loading texture [path='picture8.ppm']
[I|2.891] .. Loading texture [path='wood5.ppm']
[9]:
loading_time_df
[9]:
simple tinyobjloader
fireplace_room 0.502512 0.471116
cornell_box_sphere 0.492432 0.461976
cube 0.473428 0.468999