mirror of
https://github.com/syoyo/tinygltf.git
synced 2026-06-08 03:03:50 +00:00
Introduce a C-first TinyGLTF v3 runtime in tiny_gltf_v3.c with a pure-C JSON backend, hook the public header to the new implementation, and add CMake/test coverage for parse and write round-trips. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
71 lines
2.2 KiB
Makefile
71 lines
2.2 KiB
Makefile
# benchmark/Makefile — Build and run tinygltf v3 benchmarks
|
|
#
|
|
# Targets:
|
|
# make — build gen_synthetic + bench_v3
|
|
# make generate — generate synthetic test scenes
|
|
# make run — run benchmarks on all generated scenes
|
|
# make report — run benchmarks and produce CSV report
|
|
# make clean — remove binaries and generated scenes
|
|
|
|
CXX ?= g++
|
|
CXXFLAGS ?= -O2 -std=c++17 -Wall -Wextra -Wno-unused-function
|
|
CXXFLAGS += -fno-rtti -fno-exceptions
|
|
INCLUDES = -I..
|
|
|
|
BINDIR = .
|
|
GEN = $(BINDIR)/gen_synthetic
|
|
BENCH_V3 = $(BINDIR)/bench_v3
|
|
|
|
# Iteration counts
|
|
ITERATIONS ?= 10
|
|
WARMUP ?= 2
|
|
PREFIX ?= synthetic
|
|
|
|
.PHONY: all generate run report clean
|
|
|
|
all: $(GEN) $(BENCH_V3)
|
|
|
|
$(GEN): gen_synthetic.cpp
|
|
$(CXX) $(CXXFLAGS) -o $@ $<
|
|
|
|
$(BENCH_V3): bench_v3.cpp ../tiny_gltf_v3.h ../tiny_gltf_v3.c ../tinygltf_json_c.h
|
|
$(CXX) $(CXXFLAGS) $(INCLUDES) -o $@ $<
|
|
|
|
# Generate synthetic scenes of varying sizes
|
|
generate: $(GEN)
|
|
@echo "=== Generating synthetic scenes ==="
|
|
./$(GEN) --prefix $(PREFIX)
|
|
@echo ""
|
|
@echo "Generated files (binary + GLB):"
|
|
@ls -lh $(PREFIX)_*.gltf $(PREFIX)_*.glb $(PREFIX)_*.bin 2>/dev/null || true
|
|
|
|
# Run benchmarks on all generated scenes
|
|
run: $(BENCH_V3) generate
|
|
@echo ""
|
|
@echo "================================================================="
|
|
@echo " tinygltf v3 Benchmark"
|
|
@echo "================================================================="
|
|
@echo ""
|
|
@for f in $(PREFIX)_*.glb $(PREFIX)_*.gltf; do \
|
|
if [ -f "$$f" ]; then \
|
|
./$(BENCH_V3) "$$f" --iterations $(ITERATIONS) --warmup $(WARMUP); \
|
|
echo ""; \
|
|
fi; \
|
|
done
|
|
|
|
# Run benchmarks and produce CSV report
|
|
report: $(BENCH_V3) generate
|
|
@echo "file,size_bytes,iterations,parse_min_ms,parse_max_ms,parse_avg_ms,parse_median_ms,throughput_mbs,arena_peak_bytes,meshes,nodes,accessors,materials,animations" > benchmark_report.csv
|
|
@for f in $(PREFIX)_*.glb $(PREFIX)_*.gltf; do \
|
|
if [ -f "$$f" ]; then \
|
|
./$(BENCH_V3) "$$f" --iterations $(ITERATIONS) --warmup $(WARMUP) --csv | tail -1 >> benchmark_report.csv; \
|
|
fi; \
|
|
done
|
|
@echo "=== Report written to benchmark_report.csv ==="
|
|
@cat benchmark_report.csv | column -t -s,
|
|
|
|
clean:
|
|
rm -f $(GEN) $(BENCH_V3)
|
|
rm -f $(PREFIX)_*.gltf $(PREFIX)_*.glb $(PREFIX)_*.bin
|
|
rm -f benchmark_report.csv
|