πŸš€ Zero allocation LINQ πŸš€

πŸš€ Zero allocation LINQ πŸš€

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°: πŸ“’ #news
НС сСкрСт, Ρ‡Ρ‚ΠΎ LINQ Π² .NET ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠ΅ΠΉ памяти, Ρ‡Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² часто исполняСмой ΠΈΠ»ΠΈ высоконагруТСнной Π»ΠΎΠ³ΠΈΠΊΠ΅. Π Π΅Π±ΡƒΡ‚ΡΡˆΠΊΠΈ ΠΈΠ· Cysharp, извСстныС ΠΏΠΎ UniTask ΠΈ R3, 2 Π½Π΅Π΄Π΅Π»ΠΈ Π½Π°Π·Π°Π΄ создали Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ZLinq β€” это ΠΈΡ… NonAlloc struct-based имплСмСнтация Linq.

πŸ‘¨β€πŸ’» ΠŸΠ°ΠΊΠ΅Ρ‚ ΡƒΠΆΠ΅ совмСстим с .NET 9, .NET 10, Unity (ΠΎΡ‚ 2022.3.12f1) ΠΈ Godot (ΠΎΡ‚ 4.0.0).

Π’ Unity ΠΈ Godot прСдусмотрСны ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для GameObject, Transform ΠΈ Node2D. АналогичныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΈ для Json, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для систСм ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ/ΠΏΠ°Ρ‚Ρ‡ΠΈΠ½Π³Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

πŸŽ₯ Π£Π·Π½Π°Π» ΠΏΡ€ΠΎ ZLinq ΠΈΠ· Π²ΠΈΠ΄Π΅ΠΎ с ΠΊΠ°Π½Π°Π»Π° git-amend. Π’Π°ΠΌ рассмотрСны ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π² Unity. Π’Π°ΠΊΠΆΠ΅ Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ для профилирования.

πŸ’‘ МнС нравятся ΠΈ UniTask, ΠΈ R3. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠΎΠΊΠ° для мСня ZLinq, построСнный Π½Π° Ρ‚Π΅Ρ… ΠΆΠ΅ идСях, выглядит ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅Ρ‰Π°ΡŽΡ‰ΠΈΠΉ инструмСнт для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ LINQ-запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° GC ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

⚠ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠΊΠ° находится Π² стадии preview, Π½ΠΎ Π² Π½Π΅-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²ΠΎΠΉ срСдС я ΡƒΠΆΠ΅ Π½Π°Ρ‡Π½Ρƒ с Π½Π΅ΠΉ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ.

β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

2
4 коммСнтария