diff options
| author | mat <git@matdoes.dev> | 2023-10-02 00:20:20 -0500 |
|---|---|---|
| committer | mat <git@matdoes.dev> | 2023-10-02 00:20:20 -0500 |
| commit | 994bac2c13f11aa212798b44816310c661af4a0d (patch) | |
| tree | 008c506d68af3ad9b9111f4adcaf73206476834c /azalea-world/src | |
| parent | 4f6ab28325ce87678a406e07327bd4f051282109 (diff) | |
| download | azalea-drasl-994bac2c13f11aa212798b44816310c661af4a0d.tar.xz | |
add benchmarks to azalea-world
Diffstat (limited to 'azalea-world/src')
| -rwxr-xr-x | azalea-world/src/bit_storage.rs | 25 | ||||
| -rwxr-xr-x | azalea-world/src/palette.rs | 12 |
2 files changed, 16 insertions, 21 deletions
diff --git a/azalea-world/src/bit_storage.rs b/azalea-world/src/bit_storage.rs index 13fa0698..58ff28c4 100755 --- a/azalea-world/src/bit_storage.rs +++ b/azalea-world/src/bit_storage.rs @@ -76,7 +76,7 @@ pub struct BitStorage { bits: usize, mask: u64, size: usize, - values_per_long: u8, + values_per_long: usize, divide_mul: u64, divide_add: u64, divide_shift: i32, @@ -141,7 +141,7 @@ impl BitStorage { bits, mask, size, - values_per_long: values_per_long as u8, + values_per_long, divide_mul: divide_mul as u32 as u64, divide_add: divide_add as u32 as u64, divide_shift, @@ -153,9 +153,7 @@ impl BitStorage { let first = self.divide_mul; let second = self.divide_add; - (((index * first) + second) >> 32 >> self.divide_shift) - .try_into() - .unwrap() + (((index * first) + second) >> 32 >> self.divide_shift) as usize } /// Get the data at the given index. @@ -167,8 +165,7 @@ impl BitStorage { pub fn get(&self, index: usize) -> u64 { assert!( index < self.size, - "Index {} out of bounds (must be less than {})", - index, + "Index {index} out of bounds (must be less than {})", self.size ); @@ -179,7 +176,7 @@ impl BitStorage { let cell_index = self.cell_index(index as u64); let cell = &self.data[cell_index]; - let bit_index = (index - cell_index * self.values_per_long as usize) * self.bits; + let bit_index = (index - cell_index * self.values_per_long) * self.bits; cell >> bit_index & self.mask } @@ -189,11 +186,11 @@ impl BitStorage { return 0; } - assert!(index < self.size); - assert!(value <= self.mask); + debug_assert!(index < self.size); + debug_assert!(value <= self.mask); let cell_index = self.cell_index(index as u64); let cell = &mut self.data[cell_index]; - let bit_index = (index - cell_index * self.values_per_long as usize) * self.bits; + let bit_index = (index - cell_index * self.values_per_long) * self.bits; let old_value = *cell >> (bit_index as u64) & self.mask; *cell = *cell & !(self.mask << bit_index) | (value & self.mask) << bit_index; old_value @@ -205,11 +202,11 @@ impl BitStorage { return; } - assert!(index < self.size); - assert!(value <= self.mask); + debug_assert!(index < self.size); + debug_assert!(value <= self.mask); let cell_index = self.cell_index(index as u64); let cell = &mut self.data[cell_index]; - let bit_index = (index - cell_index * self.values_per_long as usize) * self.bits; + let bit_index = (index - cell_index * self.values_per_long) * self.bits; *cell = *cell & !(self.mask << bit_index) | (value & self.mask) << bit_index; } diff --git a/azalea-world/src/palette.rs b/azalea-world/src/palette.rs index f1d6b1a3..6e206062 100755 --- a/azalea-world/src/palette.rs +++ b/azalea-world/src/palette.rs @@ -121,13 +121,11 @@ impl PalettedContainer { fn create_or_reuse_data(&self, bits_per_entry: u8) -> PalettedContainer { let new_palette_type = PaletteKind::from_bits_and_type(bits_per_entry, &self.container_type); - // note for whoever is trying to optimize this: vanilla has this - // but it causes a stack overflow since it's not changing the bits per entry - // i don't know how to fix this properly so glhf - // let old_palette_type: PaletteType = (&self.palette).into(); - // if new_palette_type == old_palette_type { - // return self.clone(); - // } + + let old_palette_type = (&self.palette).into(); + if bits_per_entry == self.bits_per_entry && new_palette_type == old_palette_type { + return self.clone(); + } let storage = BitStorage::new(bits_per_entry as usize, self.container_type.size(), None).unwrap(); |
