목차

  • 개요
  •  필터
  • 프로젝션 (변환? 투사?)
    • Select
    • SelectMany
    • Zip
  • 진행중...

 

Linq란 무엇인가?

https://learn.microsoft.com/ko-kr/dotnet/csharp/linq/

라고 공식문서가 말하네요.

뭔가.... 어려운 말 막 쓰는데, 그냥 단순하게,

SQL처럼 쿼리형식으로 데이터 처리 (필터링/ 가공 등) 가 가능하게 해주는 언어 집합이다.

라고 생각하면 편할거 같네요.

 

특징으로는 "지연된 실행"이 있습니다.

결과가 필요한 함수 (Count, Max 등) 나 foreach에 사용하지 않는한 실행이 지연된다는 의미인데, 이걸 간과하고 코딩하면 발적화를 느껴보실 수 있습니다;;

 

사용해보며 느낀 장단점

장점

  • 코드 가독성 향상
  • 코드 재사용성 / 확장성 향상
    • 유지보수에 좋겠죠
    • 저는 게임에서 필터링하는 구간은 대부분 Linq를 애용하긴 합니다.

단점

  • 성능 부하 증가
  • 잘못쓰면 더더 성능 부하 증가

 

참고

공식문서에서는 쿼리 방식과 매서드 방식이 있는데, 성능상에 다른 점은 없지만, 쿼리 방식이 가독성이 좋으니 권장한다고 합니다. 다만 매서드 방식으로만 할 수 있는 함수들이 있다고 하더라고요.

 

개인적으로는 가독성은 주관적인 영역이니 권장하는 이유라 보기 힘들거같고, (실제로 전 매서드가 더 보기 편합니다) 매서드 방식으로만 할 수 있는게 있다면, 매서드 방식을 권장하는게 맞지않나? 싶어요. 음... 전 그래서 향후 포스팅에서는 매서드 방식으로 진행할 예정입니다.

 

 

여담

전 이직하고 처음으로 Linq를 접하고, 어언... 5년정도 쓴 거 같습니다. Linq 사용법 자체가 어렵진 않아서 금방 사용하는 방법은 익혔는데, 사용하다보니 성능상에 문제가 좀 있는 아이더군요. 

단순한 데이터 처리면 별 문제 없겠지만, Linq가 주로 사용되는 곳이 데이터 처리, 즉, 수백개의 데이터를 처리하는데 사용되다보니, 성능 부하로 프로파일링을 해보면 꽤 자주 보이더라고요.

굳이 필요가 없는데, 자주 호출하는 함수에 ToList를 해놨다거나, 너무 남용해서 썼다거나 등등... 그래서 인식이 쓰기 편하고, 보기에는 이쁘지만, 퍼포먼스는 나쁜 아이로 인식이 됐습니다.

그래서 어깨너머로 배워 쓰던 Linq를 제대로 공부해보려고 합니다. 이왕 공부하는거 포스팅으로도 남기고, Linq 백과사전을 함 만들어보자라는 포부로 시작해보려고 합니다.

 

 

 

Posted by 검은거북

블로그 이미지
프로그래밍 공부 요약 및 공부하며 발생한 궁금증과 해결과정을 포스팅합니다.
검은거북

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.1
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함