mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-09-17 09:12:09 +00:00
32451ed978
Created comprehensive documentation and benchmark demonstrating why immutable elements with type-stable fields are 40-130x faster than mutable Dict-based elements. benchmarks/element_immutability_benchmark.jl: - Compares mutable (Dict) vs immutable (NamedTuple) implementations - Measures field access, updates, assembly loops, large-scale meshes - Results: 40x faster field access, 130x faster assembly, zero allocations docs/design/IMMUTABILITY.md: - Explains counterintuitive API change: element = update(element, ...) - Benchmarks show 40-130x speedup despite 'copying' elements - Key insight: Type stability >> mutation, compiler optimizes away copies - Migration guide: old mutable API → new immutable API - GPU/HPC rationale: Only bits types work on GPU (no pointers) Key Results: - Field access: 1ns vs 45ns (40x faster) - Assembly: 9ns vs 1124ns per element (130x faster) - Large mesh: 0.01ms vs 1.2ms for 1000 elements (120x faster) - Memory: 0 allocations vs 70,000 allocations - GPU: Compatible (bits types) vs Incompatible (pointers) This documents a fundamental architectural decision for JuliaFEM 1.0.