mirror of
https://github.com/bevyengine/bevy
synced 2024-11-22 12:43:34 +00:00
Remove unnecessary branch in query iteration (#12844)
# Objective - Since #10811,Bevy uses `assert `in the hot path of iteration. The `for_each `method has an assert in the outer loop to help the compiler remove unnecessary branching in the internal loop. - However , ` for` style iterations do not receive the same treatment. it still have a branch check in the internal loop, which could potentially hurt performance. ## Solution - use `TableRow::from_u32 ` instead of ` TableRow::from_usize` to avoid unnecessary branch. Before ![image](https://github.com/bevyengine/bevy/assets/45868716/f6d2a1ac-2129-48ff-97bf-d86713ddeaaf) After ---------------------------------------------------------------------------- ![image](https://github.com/bevyengine/bevy/assets/45868716/bfe5a9ee-ba6c-4a80-85b0-1c6d43adfe8c)
This commit is contained in:
parent
8092e2c86d
commit
06738bff63
1 changed files with 2 additions and 2 deletions
|
@ -56,7 +56,7 @@ impl TableId {
|
|||
/// Will panic if the provided value does not fit within a [`u32`].
|
||||
#[inline]
|
||||
pub const fn from_usize(index: usize) -> Self {
|
||||
assert!(index as u32 as usize == index);
|
||||
debug_assert!(index as u32 as usize == index);
|
||||
Self(index as u32)
|
||||
}
|
||||
|
||||
|
@ -116,7 +116,7 @@ impl TableRow {
|
|||
/// Will panic if the provided value does not fit within a [`u32`].
|
||||
#[inline]
|
||||
pub const fn from_usize(index: usize) -> Self {
|
||||
assert!(index as u32 as usize == index);
|
||||
debug_assert!(index as u32 as usize == index);
|
||||
Self(index as u32)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue