Open doonv opened 9 months ago
I was able to reproduce the issue! For some reason its only laggy on doctests. Unit tests work perfectly fine.
/// ```
/// use bevy::gizmos::gizmos::Gizmos;
///
/// fn system(mut _gizmos: Gizmos) {}
///
/// bevy::ecs::system::assert_is_system(system);
/// ```
pub struct A;
I was able to use a few nightly compiler flags to show the performance of the tests, so here are the benchmarks:
assert_is_system
: ~0.55sassert_is_system
: ~2.9sassert_is_system
: 0.0sAnother thing to add: It appears Gizmos
in particular is much laggier than normal. Other configurations take around ~1.1s to run.
This appears to also happen in other bevy crates such as bevy_ui
and error
for some reason.
running those test seems fast enough on my computer:
> cargo test --doc -p bevy_gizmos
Finished test [unoptimized + debuginfo] target(s) in 0.32s
Doc-tests bevy_gizmos
running 23 tests
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::cuboid (line 266) ... ok
test crates/bevy_gizmos/src/arcs.rs - arcs::Gizmos<'s>::arc_2d (line 25) ... ok
test crates/bevy_gizmos/src/arrows.rs - arrows::Gizmos<'s>::arrow_2d (line 97) ... ok
test crates/bevy_gizmos/src/arrows.rs - arrows::Gizmos<'s>::arrow (line 72) ... ok
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::line_gradient (line 79) ... ok
test crates/bevy_gizmos/src/circles.rs - circles::Gizmos<'s>::circle_2d (line 64) ... ok
test crates/bevy_gizmos/src/circles.rs - circles::Gizmos<'s>::circle (line 26) ... ok
test crates/bevy_gizmos/src/arrows.rs - arrows::ArrowBuilder<'_,'_>::with_tip_length (line 24) ... ok
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::line_2d (line 301) ... ok
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::line (line 59) ... ok
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::linestrip_2d (line 345) ... ok
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::line_gradient_2d (line 320) ... ok
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::linestrip_gradient (line 167) ... ok
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::ray (line 99) ... ok
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::linestrip (line 143) ... ok
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::ray_gradient (line 118) ... ok
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::ray_2d (line 391) ... ok
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::linestrip_gradient_2d (line 364) ... ok
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::ray_gradient_2d (line 410) ... ok
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::rect (line 246) ... ok
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::rect_2d (line 435) ... ok
test crates/bevy_gizmos/src/lib.rs - (line 6) ... ok
test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::sphere (line 208) ... ok
test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.62s
running those test seems fast enough on my computer:
> cargo test --doc -p bevy_gizmos Finished test [unoptimized + debuginfo] target(s) in 0.32s Doc-tests bevy_gizmos running 23 tests test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::cuboid (line 266) ... ok test crates/bevy_gizmos/src/arcs.rs - arcs::Gizmos<'s>::arc_2d (line 25) ... ok test crates/bevy_gizmos/src/arrows.rs - arrows::Gizmos<'s>::arrow_2d (line 97) ... ok test crates/bevy_gizmos/src/arrows.rs - arrows::Gizmos<'s>::arrow (line 72) ... ok test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::line_gradient (line 79) ... ok test crates/bevy_gizmos/src/circles.rs - circles::Gizmos<'s>::circle_2d (line 64) ... ok test crates/bevy_gizmos/src/circles.rs - circles::Gizmos<'s>::circle (line 26) ... ok test crates/bevy_gizmos/src/arrows.rs - arrows::ArrowBuilder<'_,'_>::with_tip_length (line 24) ... ok test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::line_2d (line 301) ... ok test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::line (line 59) ... ok test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::linestrip_2d (line 345) ... ok test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::line_gradient_2d (line 320) ... ok test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::linestrip_gradient (line 167) ... ok test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::ray (line 99) ... ok test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::linestrip (line 143) ... ok test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::ray_gradient (line 118) ... ok test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::ray_2d (line 391) ... ok test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::linestrip_gradient_2d (line 364) ... ok test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::ray_gradient_2d (line 410) ... ok test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::rect (line 246) ... ok test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::rect_2d (line 435) ... ok test crates/bevy_gizmos/src/lib.rs - (line 6) ... ok test crates/bevy_gizmos/src/gizmos.rs - gizmos::Gizmos<'s>::sphere (line 208) ... ok test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.62s
That is really weird. What compiler are you using and what OS?
Another weird thing: Running in --release
mode causes the doctests to finish in only 1.14s
That is really weird. What compiler are you using and what OS?
On an apple m1 max, with rust 1.74.1
Bevy version
https://github.com/bevyengine/bevy/commit/dc8fc6cb34d6064530c698f30445cd69d1c79682 (Latest as of writing)
[Optional] Relevant system information
rustc 1.74.1 (a28077b28 2023-12-04)
What you did
Running
cargo test --doc
onbevy_gizmos
What went wrong
The doctests are extremely long. Lasting for over 60 seconds. It appears running
assert_is_system
on a system withGizmos
causes massive lag. Removingassert_is_system
makes the tests run much quicker.Additional information
I created a project that does a similar test, it ran instantly. Which is weird.