๐ ๊ฒ์
"performance" ๊ฒ์ ๊ฒฐ๊ณผ 15๊ฑด
-
C# yield์ ์จ๊ฒจ์ง ๋น์ฉ, ์ปดํ์ผ๋ฌ๊ฐ ์๋ ค์ฃผ์ง ์๋ ๊ฒ๋ค
๋๋ถ๋ถ์ C# ๊ฐ๋ฐ์๋ yield return์ ์ธ ์ค์ ์์ง๋ง, ๊ทธ ๋ค์์ ์ค์ ๋ก ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๋์ง๋ ์ ๋ชจ๋ฅธ๋ค๋ ๋ฌธ์ ์์์์ ์ถ๋ฐํ ๊ธ์ ๋๋ค. yield return์ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ํ ๋จธ์ (state machine)์ ์๋ ์์ฑํด์ฃผ๋๋ฐ, ์ด ๊ณผ์ ์์ ์์์น ๋ชปํ ์ฑ๋ฅ ๋น์ฉ์ด ๋ฐ์ํ ์ ์๋ค๋ ๋ด์ฉ์ ๋ค๋ฃน๋๋ค. ๋ฐ๋ณต๋ฌธ์ด๋ ์ปฌ๋ ์ ์ฒโฆ
-
EF Core์ Include()๊ฐ Select() ํ๋ก์ ์
๋ณด๋ค ํจ์ฌ ๋๋ฆฐ ์ด์ ๋?
Stack Overflow์ ์ฌ๋ผ์จ ์ง๋ฌธ์ผ๋ก, ์ค์ฒฉ๋ ์ฐ๊ด ์ํฐํฐ๋ฅผ ์กฐํํ ๋ EF Core์ Include()๊ฐ Select()๋ฅผ ํ์ฉํ ํ๋ก์ ์ ๋ณด๋ค ์ฑ๋ฅ์ด ๋์ ๋๊ฒ ๋จ์ด์ง๋ ์ด์ ๋ฅผ ๋ฌป๊ณ ์์ต๋๋ค. ASP.NET Core์ SQL Server ํ๊ฒฝ์์ ์ค์ ๋ก ๊ฒช์ ์ฑ๋ฅ ๋ฌธ์ ๋ผ ์ค๋ฌด ๋ฐ์ดํฐ ์กฐํ ๋ก์ง์ ์ง๋ ๊ฐ๋ฐ์๋ผ๋ฉด ๊ณต๊ฐํ ๋งํ ์ฃผ์ ์ ๋๋ค. Includโฆ
-
์๊ฐ C# / .NET ์ข
ํฉ
2026๋ 6์ .NET ์ํ๊ณ๋ AI ํตํฉ์ด ์ด์ ์๋ํยท๋น๋ ์ง๋จยท๋ก์ปฌ ์ถ๋ก ๋ฑ ๊ฐ๋ฐ ์ ์์ญ์ผ๋ก ํ์ฐ๋ ํ ๋ฌ์ด์์ต๋๋ค. Microsoft Build 2026์ ๊ธฐ์ ์ผ๋ก .NET 11๊ณผ C# ์ ๊ธฐ๋ฅ ๋ก๋๋งต์ด ๊ฐ์ํ๋๊ณ , ์ํคํ ์ฒ ์ค๊ณ์ ์ธ์ด ๊ธฐ๋ฅ ์ฌํ๋ผ๋ ์ค์ฉ์ ์ฃผ์ ๋ ์ปค๋ฎค๋ํฐ์ ๋์ ๊ด์ฌ์ ๋ฐ์์ต๋๋ค. ## 1. .NET ร AI ์ค์ ๊ตฌํ โ ์ดโฆ
-
Linear๋ ์ด๋ป๊ฒ ์ด๋ ๊ฒ ๋น ๋ฅธ๊ฐ? โ ๊ธฐ์ ์ ์ฌ์ธต ๋ถ์
ํ๋ก์ ํธ ๊ด๋ฆฌ ๋๊ตฌ Linear์ ๋๋ผ์ด ๋ฐ์ ์๋ ๋น๊ฒฐ์ ๊ธฐ์ ์ ์ผ๋ก ํํค์น ๊ธ์ด HN์์ 149์ , ๋๊ธ 82๊ฐ๋ฅผ ๊ธฐ๋กํ๋ฉฐ ํฐ ์ฃผ๋ชฉ์ ๋ฐ์์ต๋๋ค. Linear๋ ํด๋ฆญ ์ฆ์ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋๋ ์์ค์ ์๋๋ก ์ ๋ช ํ๋ฐ, ์ด ๋ถ์์์๋ ๋๊ด์ ์ ๋ฐ์ดํธ(optimistic updates), local-first ์ํคํ ์ฒ, ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๋๊ธฐํ ์ ๋ต ๋ฑ์ด ํต์ฌ ๋น๊ฒฐโฆ
-
dateutil vs DateTimeOffset: ํ์์คํฌํ 100๋ง ๊ฐ ํ์ฑ ์ฑ๋ฅ ๋น๊ต โ 19๋ฐฐ ์ฐจ์ด
Python์ `dateutil.parser.parse`์ C#์ `DateTimeOffset.TryParseExact`๋ฅผ ํ์์คํฌํ 100๋ง ๊ฑด ์ฒ๋ฆฌ ๊ธฐ์ค์ผ๋ก ์ง์ ๋ฒค์น๋งํฌํ ๊ฒฐ๊ณผ๋ฅผ ๊ณต์ ํ๋ ๊ธ์ ๋๋ค. `dateutil`์ ํ์์ ์๋์ผ๋ก ์ถ๋ก ํ๋ ML ๋ฐฉ์์ ํ ํฌ๋์ด์ ๋ฅผ ์ฌ์ฉํด ํธ๋ฆฌํ์ง๋ง, `DateTimeOffset.TryParseExact`๋ ๋ฏธ๋ฆฌ โฆ
-
์๊ฐ C# / .NET ์ข
ํฉ
2026๋ 5์์ .NET 11 Preview๋ฅผ ์ถ์ผ๋ก ๋ฐํ์ยท์ธ์ดยทAPI ์ ๋ฐ์ ๊ฑธ์น ๋๊ท๋ชจ ์ ๋ฐ์ดํธ๊ฐ ๊ณต๊ฐ๋๊ณ , Microsoft Agent Framework์ MCP๋ฅผ ์ค์ฌ์ผ๋ก .NET AI ์์ด์ ํธ ์ํ๊ณ๊ฐ ๋น ๋ฅด๊ฒ ๊ตฌ์ฒดํ๋ ํ ๋ฌ์ด์๋ค. ์ฑ๋ฅ ๋ฒค์น๋งํฌ, ์ํคํ ์ฒ ํจํด ํ๋ํ, ํจํค์ง ๋ณด์ ์์ ์์ญ์์๋ ์ค์ง์ ์ธ ์ง์ ์ด ์ด์ด์ก๋ค. ## 1. .NEโฆ
-
๋๊ท๋ชจ PDF ํ
์คํธ ์ถ์ถ ์ฑ๋ฅ ๋น๊ต: pypdf vs PdfPig โ ์ต๋ 6๋ฐฐ ์ฐจ์ด
Python์ PDF ํ์ pypdf์ C# ๋๋ฑ ๊ตฌํ์ฒด์ธ PdfPig๋ฅผ ๋๊ท๋ชจ ํ ์คํธ ์ถ์ถ ์๋๋ก ๋น๊ตํ ๊ธ์ ๋๋ค. ๋์ผํ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ ๋ PdfPig(C#)๊ฐ 4~6๋ฐฐ ๋ ๋น ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ ๋๋ค. Python์ ๋ชจ๋ ๋ฐ์ดํธ๊ฐ CPython ์ธํฐํ๋ฆฌํฐ๋ฅผ ๊ฑฐ์น๋ ๋ฐ๋ฉด, C#์ ์ปดํ์ผ๋ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ์คํ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. PDF ์ฒ๋ฆฌ ํ์ดํ๋ผโฆ
-
ArrayPool๋ก ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์์ด 10๋ง ์ ํธ์ง ๊ฑฐ๋ฆฌ(Edit Distance) ๊ณ์ฐ โ 14์ด โ 200ms
Python์ textdistance ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ .NET์ ArrayPool ๊ธฐ๋ฐ ๊ตฌํ์ ๋น๊ตํ ์ฑ๋ฅ ๋ฒค์น๋งํฌ์ ๋๋ค. Python์ ๋ฌธ์์ด ์๋ง๋ค O(mรn) ํฌ๊ธฐ์ ํ๋ ฌ์ ์๋ก ํ ๋นํ๊ธฐ ๋๋ฌธ์ 10๋ง ์ ์ฒ๋ฆฌ์ 14์ด๊ฐ ์์๋ฉ๋๋ค. .NET์์๋ ArrayPool๋ก ํ ํ๋๋ฅผ ๋ฏธ๋ฆฌ ํ ๋นํ ๋ค ๋ชจ๋ ํธ์ถ์์ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ ์์ ์ 200ms ๋ฏธ๋งโฆ
-
Blazor WebAssembly์ Virtual DOM์ ์ฐํํด ์์ WASM ํฌ์ธํฐ๋ก ์ฑ๋ฅ ๊ทนํ๊น์ง ๋์ด์ฌ๋ฆฌ๊ธฐ
ํ ๊ฐ๋ฐ์๊ฐ Blazor WebAssembly์ Virtual DOM ๋ ๋๋ง ๋ฐฉ์์ ์์ ํ ์ฐํํ๋ ์คํ์ ์ ๊ทผ๋ฒ์ ๊ณต๊ฐํด ํ์ ์ ๋๋ค. V.A.L.I.D.(Validated Abstraction Layer for Immediate Diffing)๋ผ๋ ์ปดํ์ผ ํ์ ์ํ ์ถ์ ํ๋ ์์ํฌ๋ฅผ ํตํด, ์์ WebAssembly ๋ฉ๋ชจ๋ฆฌ ์ฌ๋ฉ(memory slab)์ โฆ
-
.NET 11 Process API ๋ํญ ๊ฐ์ โ ๊ต์ฐฉ ์๋ ์ถ๋ ฅ ์บก์ฒยทํธ๋ค ์ ์ด API ์ถ๊ฐ
.NET 11์์ ์ธ๋ถ ํ๋ก์ธ์ค๋ฅผ ๋ค๋ฃจ๋ Process API๊ฐ ํฌ๊ฒ ๊ฐํ๋ฉ๋๋ค. ๊ฐ์ฅ ๋์ ๋๋ ๋ถ๋ถ์ ํ์ค ์ถ๋ ฅ์ ์บก์ฒํ ๋ ๋ฐ์ํ๋ ๊ต์ฐฉ(deadlock) ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ๊ณ ์์ค API๊ฐ ์ถ๊ฐ๋ ๊ฒ์ ๋๋ค. ๊ทธ ์ธ์๋ ์์ ํ๋ก์ธ์ค์ ํธ๋ค์ ์์ํ ์ง ์ฌ๋ถ๋ฅผ ์ธ๋ฐํ๊ฒ ์ ์ดํ๋ ๊ธฐ๋ฅ, ํ๋ก์ธ์ค ์๋ช ๊ด๋ฆฌ ๊ฐ์ , ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฒผ์ด `SafeProcessHandlโฆ
-
Copilot Studio, .NET 10 WebAssembly ๋ง์ด๊ทธ๋ ์ด์
์ผ๋ก ์ฑ๋ฅ ํฅ์
Microsoft Copilot Studio๊ฐ .NET 10 ๊ธฐ๋ฐ์ WebAssembly ์์ง์ผ๋ก ์ ๊ทธ๋ ์ด๋๋์์ต๋๋ค. ์ด๋ฒ ๋ง์ด๊ทธ๋ ์ด์ ์ ๊ฐ๋จํ์ ๋ฟ๋ง ์๋๋ผ ๋ฐฐํฌ๋ฅผ ๋จ์ํํ๊ณ ์ต์ข ์ฌ์ฉ์๋ค์ ์ํด ์๋ฏธ ์๋ ์ฑ๋ฅ ํฅ์์ ์ ๊ณตํ์ต๋๋ค. WebAssembly ํ๊ฒฝ์์ .NET 10์ ์ต์ ์ต์ ํ ๊ธฐ๋ฅ๋ค์ด ์ค์ ํ๋ก๋์ ํ๊ฒฝ์์ ํจ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ข์ ์ฌ๋ก์ ๋โฆ
-
Valve๊ฐ Microsoft์ Windows ๊ฒ์ด๋ฐ ์ฑ๋ฅ ๋ํญ ๊ฐ์ ๊ฐ์
Valve๊ฐ Microsoft์ Windows ๊ฒ์ด๋ฐ ์ฑ๋ฅ ๊ฐ์ ์ ๊ฐํ๊ฒ ์๊ตฌํ๊ณ ์๋ค๋ ์์์ด ๋ณด๋๋์์ต๋๋ค. Valve๋ ๊ทธ๋์ Steam Deck๊ณผ Linux ์ค์ฌ ์ ๋ต์ ์ถ์งํ๋ฉด์ Windows์ ๊ฒ์ด๋ฐ ์ต์ ํ ๋ถ์กฑ์ ๋นํํด์์ต๋๋ค. Microsoft๋ DirectStorage, Windows Game Pass ๋ฑ์ ๊ธฐ์ ๋ก ๋์ํ๊ณ ์์ง๋ง, Valvโฆ
-
.NET์ Postgres๋ฅผ ํ์ฉํ ๊ณ ์ฑ๋ฅ ๋ถ์ฐ ์บ์ฑ ๊ตฌํ
๋ง์ดํฌ๋ก์ํํธ๊ฐ .NET ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์๋ ๋ถ์ฐ ์บ์ฑ ํจํด๊ณผ ์ต์ ํ ๊ธฐ๋ฒ์ ์์ธํ ์ค๋ช ํฉ๋๋ค. Azure ์์์ Postgres๋ฅผ ํ์ฉํ์ฌ ์บ์ฑ์ ๊ตฌํํ๋ฉด ์ง์ฐ ์๊ฐ์ ์ค์ด๊ณ , ํ์ ์์คํ ์ ๋ถํ๋ฅผ ๊ฐ์์ํค๋ฉฐ, ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ต์ฑ์ ๊ฐ์ ํ ์ ์์ต๋๋ค. ์ด ๊ธ์์๋ ์ค์ ๊ตฌํ์ ์ฐธ๊ณ ํ ์ ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ .NET ์ ํ๋ฆฌโฆ
-
์๊ฐ C# / .NET ์ข
ํฉ
.NET 10์ Minimal APIs ์ฑ์ํ, Linux ์ํ๊ณ ํ๋, Native AOT ์ค๋ฌด ํ์ฉ์ด ์ด๋ฒ ์๊ฐ์ ์ค์ฌ์ด๋ฉฐ, ๋์์ Semantic Kernel์ ํตํ AI/LLM ํตํฉ์ด ํ์ฐ๋๊ณ ์์ต๋๋ค. ## 1. .NET 10, ํ๋ก๋์ ํ์ค ๊ธฐ์ ๋ก ํ๋ฆฝ .NET 10์ Minimal APIs๊ฐ ์ด์ ํ๋ก๋์ ํ๊ฒฝ์์ ์์ ํ ๊ฒ์ฆ๋ ๊ธฐ์ ๋ก ์ธ์ ๋ฐโฆ
-
async/await ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๊ธฐ - ์ฑ๋ฅ ๋ญ๋น ๋ฌธ์ ํด๊ฒฐ
๋๋ถ๋ถ์ .NET ๊ฐ๋ฐ์๋ค์ด async/await๋ฅผ ์๋ชป ์ฌ์ฉํ๊ณ ์๋ค๋ ํ์ค์ ์ง์ํ๋ ๊ธ์ ๋๋ค. ์ผ๋ฐ์ ์ธ ์ค์ ์ฌํญ๋ค๊ณผ ๊ฐ๊ฐ์ ์ฑ๋ฅ ์ํฅ์ ๋ถ์ํ๊ณ , ์ฌ๋ฐ๋ฅธ ๋น๋๊ธฐ ํจํด์ ์ ์ํฉ๋๋ค. ํนํ ConfigureAwait ์ฌ์ฉ, Task.Result ํผํ๊ธฐ, async all the way ์์น ๋ฑ ์ค๋ฌด์์ ์์ฃผ ๋์น๋ ๋ถ๋ถ๋ค์ ๋ค๋ฃน๋๋ค. ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์โฆ