bdk-blender/source/blender/blenlib
Campbell Barton 4f10800094 Mesh: optimize edit-mesh undo with selection (address #105205)
BLI_array_store still performed poorly for boolean arrays or any arrays
where many memory chunks had identical contents since the temporary hash
had many collisions, making lookups slow.

Resolve by ensuring duplicate chunks aren't added to the hash table.

Also increase the memory chunk size for edit-mesh undo to 64kb
which performs well with high poly meshes as it reduces the overhead of
having to manage many small memory chunks.

Notes:

- Before this change performance was quite bad (10-20x worse than v3.3).
- Performance from the test in #105046 is roughly the same as before.
- Performance of #105205 compared with v3.3 is close, even faster at
  times but varies much more (likely caused by threading).
2023-03-23 01:09:35 +11:00
..
intern Mesh: optimize edit-mesh undo with selection (address #105205) 2023-03-23 01:09:35 +11:00
tests Cleanup: format 2023-02-28 15:44:49 +11:00
BLI_alloca.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_allocator.hh Cleanup: replace UNUSED macro with commented args in C++ code 2022-10-03 17:38:16 -05:00
BLI_any.hh BLI: Use BLI_math_matrix_type.hh instead of BLI_math_float4x4.hh 2023-02-06 21:25:45 +01:00
BLI_args.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_array_store_utils.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_array_store.h Cleanup: strip blank lines around comment blocks 2022-08-17 12:51:07 +10:00
BLI_array_utils.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_array_utils.hh Curves: Support boolean attribute selection type, simplifications 2023-01-03 23:05:29 -05:00
BLI_array.h BLI_array: add BLI_array_trim utility to re-allocate the current size 2022-02-21 12:01:32 +11:00
BLI_array.hh Cleanup: follow C++ type cast style guide in some files 2022-09-25 17:39:45 +02:00
BLI_asan.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_assert.h Cleanup: remove workarounds and version checks for unsupported compilers 2022-09-27 07:05:13 +10:00
BLI_astar.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_atomic_disjoint_set.hh Cleanup: correct misspelling of occurrence 2022-12-05 12:54:02 +11:00
BLI_bit_vector.hh Revert "GPencil: Include UV information in simplify->sample modifier." 2023-02-20 11:20:07 +01:00
BLI_bitmap_draw_2d.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_bitmap.h BLI_bitmap: fix _BITMAP_NUM_BLOCKS to not over-count by one block 2022-07-15 10:21:27 +03:00
BLI_blenlib.h Cleanup: Clang tidy 2022-12-29 12:01:32 -05:00
BLI_bounds_types.hh Geometry: Cache bounds min and max, share between data-blocks 2022-11-15 13:48:00 -06:00
BLI_bounds.hh Geometry: Cache bounds min and max, share between data-blocks 2022-11-15 13:48:00 -06:00
BLI_boxpack_2d.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_buffer.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_cache_mutex.hh BLI: new basic CacheMutex 2022-11-08 15:50:49 +01:00
BLI_color_mix.hh Fix T102216: Change min_ff to max_ff in the return of BlendType max 2022-11-04 19:18:54 +11:00
BLI_color.hh Cleanup: use defaulted constructor 2023-01-17 13:43:38 +01:00
BLI_compiler_attrs.h Fix compiler warnings with clang 2022-09-28 16:03:39 +02:00
BLI_compiler_compat.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_compiler_typecheck.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_compute_context.hh Cleanup: spelling, punctuation & repeated words in comments 2022-09-17 15:08:40 +10:00
BLI_console.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_convexhull_2d.h Cleanup: spelling in comments 2022-09-28 09:41:31 +10:00
BLI_cpp_type_make.hh BLI: improve CPPType system 2022-11-12 18:33:31 +01:00
BLI_cpp_type.hh BLI: improve CPPType system 2022-11-12 18:33:31 +01:00
BLI_cpp_types_make.hh BLI: improve CPPType system 2022-11-12 18:33:31 +01:00
BLI_cpp_types.hh BLI: improve CPPType system 2022-11-12 18:33:31 +01:00
BLI_delaunay_2d.h Cleanup: Rename BLI_math_vec_types* files to BLI_math_vector_types 2023-01-06 20:09:51 +01:00
BLI_devirtualize_parameters.hh Cleanup: spelling in comments 2023-01-09 17:41:08 +11:00
BLI_dial_2d.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_disjoint_set.hh BLI: use templates for disjoint set data structure 2022-11-12 14:26:47 +01:00
BLI_dlrbTree.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_dot_export_attribute_enums.hh File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_dot_export.hh BLI: improve node graph export in dot format 2022-12-29 15:09:52 +01:00
BLI_dynlib.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_dynstr.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_easing.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_edgehash.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_endian_defines.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_endian_switch_inline.h Cleanup: remove workarounds and version checks for unsupported compilers 2022-09-27 07:05:13 +10:00
BLI_endian_switch.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_enumerable_thread_specific.hh Cleanup: Remove double #ifdef WITH_TBB check 2022-03-26 09:55:08 -06:00
BLI_expr_pylike_eval.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_fileops_types.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_fileops.h #99807: USD IO: Add support for exporting to USDZ 2023-02-27 11:59:57 +01:00
BLI_fileops.hh File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_filereader.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_fnmatch.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_function_ref.hh Cleanup: follow C++ type cast style guide in some files 2022-09-25 17:39:45 +02:00
BLI_generic_array.hh Fix T103781: assert when connecting viewer node on mesh without faces 2023-01-10 17:14:28 +01:00
BLI_generic_pointer.hh BLI: move generic data structures to blenlib 2022-03-19 08:26:29 +01:00
BLI_generic_span.hh BLI: Add utility functions to generic spans 2022-09-12 11:04:52 -05:00
BLI_generic_value_map.hh BLI: move generic data structures to blenlib 2022-03-19 08:26:29 +01:00
BLI_generic_vector_array.hh BLI: move generic data structures to blenlib 2022-03-19 08:26:29 +01:00
BLI_generic_virtual_array.hh Cleanup: unify method parameters for virtual arrays 2023-01-14 19:13:51 +01:00
BLI_generic_virtual_vector_array.hh Cleanup: replace UNUSED macro with commented args in C++ code 2022-10-03 17:38:16 -05:00
BLI_ghash.h Cleanup: spelling in comments, additional white space 2022-06-07 15:01:03 +10:00
BLI_gsqueue.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_hash_md5.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_hash_mm2a.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_hash_mm3.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_hash_tables.hh BLI: improve support for using vectors as hash table keys 2022-12-29 15:00:04 +01:00
BLI_hash.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_hash.hh Cleanup: Correct comment in hash description 2022-11-30 11:49:32 -06:00
BLI_heap_simple.h Cleanup: use "num" as a suffix in: source/blender/blenlib 2022-03-30 18:01:22 +11:00
BLI_heap.h Cleanup: use "num" as a suffix in: source/blender/blenlib 2022-03-30 18:01:22 +11:00
BLI_index_mask_ops.hh Curves: initial surface collision for curves sculpt mode 2023-02-11 13:46:37 +01:00
BLI_index_mask.hh BLI: inline index mask slice methods 2023-01-14 19:40:22 +01:00
BLI_index_range.hh Cleanup: Fix grammar in IndexRange header 2022-09-18 22:57:46 -05:00
BLI_inplace_priority_queue.hh File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_iterator.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_jitter_2d.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_kdopbvh.h Cleanup: improve const correctness of bvh tree 2023-01-13 18:09:27 +01:00
BLI_kdtree_impl.h BLI: add kdtree range search method that accepts c++ lambda 2022-06-28 13:13:41 +02:00
BLI_kdtree.h BLI: add kdtree range search method that accepts c++ lambda 2022-06-28 13:13:41 +02:00
BLI_lasso_2d.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_lazy_threading.hh Fix T102292: deadlock in geometry nodes evaluation with task isolation 2022-11-06 15:07:32 +01:00
BLI_length_parameterize.hh Fix: remove unnecessary assert 2023-02-23 13:18:05 +01:00
BLI_linear_allocator.hh Cleanup: replace C-style casts with functional casts for numeric types 2022-09-26 17:58:36 +10:00
BLI_link_utils.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_linklist_lockfree.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_linklist_stack.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_linklist.h Cleanup: move some files that use normals to C++ 2022-12-02 12:34:26 +01:00
BLI_listbase_wrapper.hh BLI: Fix ListBaseWrapper::get wrong return type 2022-11-13 16:48:30 +01:00
BLI_listbase.h Cleanup: Add warning to ListBase's BLI_remlink regarding not cleared prev/next pointers. 2023-03-06 16:08:45 +01:00
BLI_map_slots.hh Cleanup: replace UNUSED macro with commented args in C++ code 2022-10-03 17:38:16 -05:00
BLI_map.hh BLI: add clear-and-shrink method to more data structures 2022-12-09 12:00:37 +01:00
BLI_math_base_safe.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_math_base.h Cleanup: add comment explaining #interpf is performing lerp 2023-02-13 17:32:19 +01:00
BLI_math_base.hh BLI: Math: Add sign() function 2023-01-15 14:15:39 +01:00
BLI_math_bits.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_math_boolean.hh Cleanup: Rename BLI_math_vec_types* files to BLI_math_vector_types 2023-01-06 20:09:51 +01:00
BLI_math_color_blend.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_math_color.h Cleanup: match names between functions & declarations 2022-08-22 11:20:40 +10:00
BLI_math_color.hh Geometry Nodes: better support for byte color attributes 2022-04-21 16:11:26 +02:00
BLI_math_geom.h Fix T103469: improve uv cylinder projection and uv sphere projection 2023-01-06 17:12:41 +13:00
BLI_math_inline.h Cleanup: remove workarounds and version checks for unsupported compilers 2022-09-27 07:05:13 +10:00
BLI_math_interp.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_math_matrix_types.hh BLI: Math: Fix vector operator * with MutableMatView 2023-02-08 19:38:53 +01:00
BLI_math_matrix.h Cleanup: use '#' prefix for issues instead of 'T' 2023-02-12 14:56:05 +11:00
BLI_math_matrix.hh Cleanup: use '#' prefix for issues instead of 'T' 2023-02-12 14:56:05 +11:00
BLI_math_mpq.hh Cleanup: Simplify dependencies for GMP math header 2022-05-31 16:55:14 +02:00
BLI_math_rotation_legacy.hh Cleanup: Rename BLI_math_vec_types* files to BLI_math_vector_types 2023-01-06 20:09:51 +01:00
BLI_math_rotation_types.hh BLI: Use BLI_math_matrix_type.hh instead of BLI_math_float4x4.hh 2023-02-06 21:25:45 +01:00
BLI_math_rotation.h Revert "GPencil: Include UV information in simplify->sample modifier." 2023-02-20 11:20:07 +01:00
BLI_math_rotation.hh Cleanup: BLI: Rename vec_base to VecBase 2023-01-06 21:15:52 +01:00
BLI_math_solvers.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_math_statistics.h Cleanup: Further renaming in new curves code 2022-03-24 20:48:08 -05:00
BLI_math_time.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_math_vector_mpq_types.hh Cleanup: BLI: Rename vec_base to VecBase 2023-01-06 21:15:52 +01:00
BLI_math_vector_types.hh BLI: Fix missing const correctness 2023-01-31 15:36:24 +01:00
BLI_math_vector.h Merge branch 'blender-v3.4-release' 2022-11-27 21:42:37 +01:00
BLI_math_vector.hh EEVEE-Next: Virtual Shadow Map initial implementation 2023-02-08 21:18:44 +01:00
BLI_math.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_memarena.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_memblock.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_memiter.h Cleanup: remove duplicate compiler attribute 2022-03-11 15:29:11 +11:00
BLI_memory_utils.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_memory_utils.hh BLI: remove deduplicated memory utility functions 2022-12-09 14:15:41 +01:00
BLI_mempool.h Cleanup: use "num" as a suffix in: source/blender/blenlib 2022-03-30 18:01:22 +11:00
BLI_mesh_boolean.hh File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_mesh_intersect.hh Cleanup: Rename BLI_math_vec_types* files to BLI_math_vector_types 2023-01-06 20:09:51 +01:00
BLI_mmap.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_multi_value_map.hh BLI: add clear-and-shrink method to more data structures 2022-12-09 12:00:37 +01:00
BLI_noise.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_noise.hh Cleanup: Rename BLI_math_vec_types* files to BLI_math_vector_types 2023-01-06 20:09:51 +01:00
BLI_offset_indices.hh Cleanup: spelling in comments 2023-01-20 15:19:32 +11:00
BLI_parameter_pack_utils.hh BLI: improve CPPType system 2022-11-12 18:33:31 +01:00
BLI_path_util.h Cleanup: use '#' prefix for issues instead of 'T' 2023-02-12 14:56:05 +11:00
BLI_polyfill_2d_beautify.h Cleanup: use "num" as a suffix in: source/blender/blenlib 2022-03-30 18:01:22 +11:00
BLI_polyfill_2d.h Cleanup: use "num" as a suffix in: source/blender/blenlib 2022-03-30 18:01:22 +11:00
BLI_pool.hh Cleanup: spelling in comments, correct doxy slashes, replace '/w' 2022-09-07 13:04:44 +10:00
BLI_probing_strategies.hh Cleanup: follow C++ type cast style guide in some files 2022-09-25 17:39:45 +02:00
BLI_quadric.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_rand.h Cleanup: use "num" as a suffix in: source/blender/blenlib 2022-03-30 18:01:22 +11:00
BLI_rand.hh Cleanup: Rename BLI_math_vec_types* files to BLI_math_vector_types 2023-01-06 20:09:51 +01:00
BLI_range.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_rect.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_resource_scope.hh Cleanup: follow C++ type cast style guide in some files 2022-09-25 17:39:45 +02:00
BLI_scanfill.h Cleanup: update username in code-comments: campbellbarton -> ideasman42 2023-02-09 11:33:48 +11:00
BLI_serialize.hh Cleanup: strip blank lines around comment blocks 2022-08-17 12:51:07 +10:00
BLI_session_uuid.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_set_slots.hh Cleanup: replace UNUSED macro with commented args in C++ code 2022-10-03 17:38:16 -05:00
BLI_set.hh BLI: add clear-and-shrink method to more data structures 2022-12-09 12:00:37 +01:00
BLI_shared_cache.hh Geometry: Cache bounds min and max, share between data-blocks 2022-11-15 13:48:00 -06:00
BLI_simd.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_smallhash.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_sort_utils.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_sort.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_sort.hh Fix build when using WITH_TBB=OFF after recent changes 2022-03-22 01:30:19 +01:00
BLI_span.hh BLI: improve support for using vectors as hash table keys 2022-12-29 15:00:04 +01:00
BLI_stack.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_stack.hh BLI: add clear-and-shrink method to more data structures 2022-12-09 12:00:37 +01:00
BLI_strict_flags.h Cleanup: update username in code-comments: campbellbarton -> ideasman42 2023-02-09 11:33:48 +11:00
BLI_string_cursor_utf8.h BLF: Editing Text with Combining Characters 2022-09-27 08:40:36 -07:00
BLI_string_ref.hh Cleanup: delegate to string_view equality for StringRef 2023-01-11 13:19:11 +01:00
BLI_string_search.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_string_utf8.h Cleanup: simplify partition functions 2022-08-23 12:48:06 +10:00
BLI_string_utils.h BLI_string: C++ support for string joining macros 2022-11-03 14:32:50 +11:00
BLI_string.h Cleanup: add function attributes to BLI_sprintf 2022-11-09 12:32:08 +11:00
BLI_sys_types.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_system.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_task.h Cleanup: use '#' prefix for issues instead of 'T' 2023-02-12 14:56:05 +11:00
BLI_task.hh Functions: align chunk sizes in multi-function evaluation 2023-01-22 00:03:25 +01:00
BLI_threads.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_timecode.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_timeit.hh Cleanup: spelling in comments, strings 2022-03-25 12:04:16 +11:00
BLI_timer.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_user_counter.hh File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_utildefines_iter.h Cleanup: spelling in comments, minor formatting tweaks 2022-06-07 21:22:55 +10:00
BLI_utildefines_stack.h Cleanup: use "num" as a suffix in: source/blender/blenlib 2022-03-30 18:01:22 +11:00
BLI_utildefines_variadic.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_utildefines.h Revert "MSVC: lower C4100 warning level from 4 to 3" 2023-02-14 15:36:35 -03:00
BLI_utility_mixins.hh File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_uuid.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_uvproject.h Cleanup: Replace "UV's" with "UVs" 2023-01-10 14:50:13 -05:00
BLI_vector_list.hh Cleanup: trailing space 2023-01-31 15:49:04 +11:00
BLI_vector_set_slots.hh Cleanup: replace UNUSED macro with commented args in C++ code 2022-10-03 17:38:16 -05:00
BLI_vector_set.hh BLI: add clear-and-shrink method to more data structures 2022-12-09 12:00:37 +01:00
BLI_vector.hh BLI: improve support for using vectors as hash table keys 2022-12-29 15:00:04 +01:00
BLI_virtual_array.hh BLI: Use BLI_math_matrix_type.hh instead of BLI_math_float4x4.hh 2023-02-06 21:25:45 +01:00
BLI_virtual_vector_array.hh File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_voronoi_2d.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_voxel.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
BLI_winstuff.h Cleanup: remove workarounds and version checks for unsupported compilers 2022-09-27 07:05:13 +10:00
CMakeLists.txt Revert "GPencil: Include UV information in simplify->sample modifier." 2023-02-20 11:20:07 +01:00
PIL_time_utildefines.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
PIL_time.h File headers: SPDX License migration 2022-02-11 09:14:36 +11:00