Spaces:
Running
Running
# Copyright (c) Meta Platforms, Inc. and affiliates. | |
# All rights reserved. | |
# | |
# This source code is licensed under the BSD-style license found in the | |
# LICENSE file in the root directory of this source tree. | |
from itertools import product | |
from fvcore.common.benchmark import benchmark | |
from tests.test_io_obj import TestMeshObjIO | |
from tests.test_io_ply import TestMeshPlyIO | |
def bm_save_load() -> None: | |
simple_kwargs_list = [ | |
{"V": 100, "F": 200}, | |
{"V": 1000, "F": 2000}, | |
{"V": 10000, "F": 20000}, | |
] | |
benchmark( | |
TestMeshObjIO.bm_load_simple_obj_with_init, | |
"LOAD_SIMPLE_OBJ", | |
simple_kwargs_list, | |
warmup_iters=1, | |
) | |
benchmark( | |
TestMeshObjIO.bm_save_simple_obj_with_init, | |
"SAVE_SIMPLE_OBJ", | |
simple_kwargs_list, | |
warmup_iters=1, | |
) | |
benchmark( | |
TestMeshPlyIO.bm_load_simple_ply_with_init, | |
"LOAD_SIMPLE_PLY", | |
simple_kwargs_list, | |
warmup_iters=1, | |
) | |
benchmark( | |
TestMeshPlyIO.bm_save_simple_ply_with_init, | |
"SAVE_SIMPLE_PLY", | |
simple_kwargs_list, | |
warmup_iters=1, | |
) | |
complex_kwargs_list = [{"N": 8}, {"N": 32}, {"N": 128}] | |
benchmark( | |
TestMeshObjIO.bm_load_complex_obj, | |
"LOAD_COMPLEX_OBJ", | |
complex_kwargs_list, | |
warmup_iters=1, | |
) | |
benchmark( | |
TestMeshObjIO.bm_save_complex_obj, | |
"SAVE_COMPLEX_OBJ", | |
complex_kwargs_list, | |
warmup_iters=1, | |
) | |
benchmark( | |
TestMeshPlyIO.bm_load_complex_ply, | |
"LOAD_COMPLEX_PLY", | |
complex_kwargs_list, | |
warmup_iters=1, | |
) | |
benchmark( | |
TestMeshPlyIO.bm_save_complex_ply, | |
"SAVE_COMPLEX_PLY", | |
complex_kwargs_list, | |
warmup_iters=1, | |
) | |
# Texture loading benchmarks | |
kwargs_list = [{"R": 2}, {"R": 4}, {"R": 10}, {"R": 15}, {"R": 20}] | |
benchmark( | |
TestMeshObjIO.bm_load_texture_atlas, | |
"PYTORCH3D_TEXTURE_ATLAS", | |
kwargs_list, | |
warmup_iters=1, | |
) | |
kwargs_list = [] | |
S = [64, 256, 1024] | |
F = [100, 1000, 10000] | |
R = [5, 10, 20] | |
test_cases = product(S, F, R) | |
for case in test_cases: | |
s, f, r = case | |
kwargs_list.append({"S": s, "F": f, "R": r}) | |
benchmark( | |
TestMeshObjIO.bm_bilinear_sampling_vectorized, | |
"BILINEAR_VECTORIZED", | |
kwargs_list, | |
warmup_iters=1, | |
) | |
benchmark( | |
TestMeshObjIO.bm_bilinear_sampling_grid_sample, | |
"BILINEAR_GRID_SAMPLE", | |
kwargs_list, | |
warmup_iters=1, | |
) | |
if __name__ == "__main__": | |
bm_save_load() | |