BLI: refactor IndexMask for better performance and memory usage #104629

Merged
Jacques Lucke merged 254 commits from JacquesLucke/blender:index-mask-refactor into main 2023-05-24 18:11:47 +02:00
1 changed files with 3 additions and 10 deletions
Showing only changes of commit f3759712ad - Show all commits

View File

@ -56,11 +56,7 @@ template<typename T> void copy_assign_compressed_cb(const void *src, void *dst,
const T *src_ = static_cast<const T *>(src);
T *dst_ = static_cast<T *>(dst);
mask.foreach_span_or_range([&](const auto mask_segment) {
for (const int64_t i : IndexRange(mask_segment.size())) {
dst_[i] = src_[mask_segment[i]];
}
});
mask.foreach_index([&](const int64_t i, const int64_t i_in_mask) { dst_[i_in_mask] = src_[i]; });
}
template<typename T> void copy_construct_cb(const void *src, void *dst)
@ -79,11 +75,8 @@ template<typename T> void copy_construct_compressed_cb(const void *src, void *ds
const T *src_ = static_cast<const T *>(src);
T *dst_ = static_cast<T *>(dst);
mask.foreach_span_or_range([&](const auto mask_segment) {
for (const int64_t i : IndexRange(mask_segment.size())) {
new (dst_ + i) T(src_[mask_segment[i]]);
}
});
mask.foreach_index_optimized(
[&](const int64_t i, const int64_t i_in_mask) { new (dst_ + i_in_mask) T(src_[i]); });
}
template<typename T> void move_assign_cb(void *src, void *dst)