Add compiler timing diagnostics to mjsCompiler, printed by compile.cc

For example, `compile mujoco_menagerie/robotis_op3/scene.xml` now outputs

```
Compile 1 (cold cache):
  total:      317.2 ms
  assets:     284.8 ms (wall clock)
    load:     616.1 ms
    hull:      26.4 ms
    poly:     137.8 ms
    inert:    177.8 ms
    bvh:      568.2 ms
    octr:       1.6 ms
    tex:       25.3 ms
  other:       32.4 ms

Compile 2 (warm cache):
  total:       79.9 ms
  assets:      54.5 ms (wall clock)
    load:     888.5 ms
    hull:       0.0 ms
    poly:       0.0 ms
    inert:      0.0 ms
    bvh:        0.0 ms
    octr:       0.0 ms
    tex:       21.4 ms
  other:       25.3 ms
```

PiperOrigin-RevId: 917850214
Change-Id: Iaec86230bec0faf2e47820e20cbff61de5b2621e
This commit is contained in:
Yuval Tassa
2026-05-19 08:27:35 -07:00
committed by Copybara-Service
parent f712eed4ce
commit bdf00966f9
23 changed files with 309 additions and 43 deletions
+17
View File
@@ -718,6 +718,23 @@ ENUMS: Mapping[str, EnumDecl] = dict([
('mjORIENTATION_EULER', 4),
]),
)),
('mjtCTimer',
EnumDecl(
name='mjtCTimer',
declname='enum mjtCTimer_',
values=dict([
('mjCTIMER_TOTAL', 0),
('mjCTIMER_ASSETS', 1),
('mjCTIMER_TEXTURE', 2),
('mjCTIMER_MESH_LOAD', 3),
('mjCTIMER_MESH_HULL', 4),
('mjCTIMER_MESH_POLYGON', 5),
('mjCTIMER_MESH_INERTIA', 6),
('mjCTIMER_MESH_BVH', 7),
('mjCTIMER_MESH_OCTREE', 8),
('mjNCTIMER', 9),
]),
)),
('mjtCatBit',
EnumDecl(
name='mjtCatBit',
+16
View File
@@ -6471,6 +6471,22 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
),
doc='Get compiler error message from spec.',
)),
('mjs_getTimer',
FunctionDecl(
name='mjs_getTimer',
return_type=PointerType(
inner_type=ValueType(name='double', is_const=True),
),
parameters=(
FunctionParameterDecl(
name='s',
type=PointerType(
inner_type=ValueType(name='mjSpec'),
),
),
),
doc='Get compiler timing diagnostics from spec, returns pointer to array of size mjNCTIMER.', # pylint: disable=line-too-long
)),
('mjs_isWarning',
FunctionDecl(
name='mjs_isWarning',