들어가며C언어에서 조건문에는 if문, switch문이 있다. 논리적으로 둘은 치환 가능하다. 따라서 무엇을 선택할지에 대해서, 프로그래머의 단순한 "취향차이"로 치부하는 경우가 많다. 하지만, switch문은 컴파일러에 의해 최적화가 적용될 여지가 있다.컴파일러의 최적화규칙적인 조건이 많다면, if문이 아닌 switch문으로 작성하는 것이 좋다. 어셈블리어로 변환되는 것을 확인해 보자.개발환경Apple M1 ProMacOS Sonoma 14.3C89 clang 규칙적인 조건의 예시if_in_regular.c#include void if_in_regular(int value) { if (value == 1) { printf("Value is 1\n"); } else if (value..
들어가며알고리듬을 공부했다면, swap 함수를 작성해본적이 있을 것이다. 정렬 알고리듬 또한 공부했을 것이다. 하지만, 공부했던 자료를 되돌아 보자. int 타입 숫자들만 정렬해보지 않았는가? 실제 상황에서는 다양한 타입에 대해 대응해야 할 것이다! 타입에 얽매이지 않는 프로그래밍을 Generic 프로그래밍이라 한다. Generic 프로그래밍은 코드의 재사용성을 높이고, 다양한 데이터 타입을 지원하며, 타입 안정성을 유지할 수 있게 한다. 이를 통해 우리는 하나의 함수나 클래스로 다양한 데이터 타입을 처리할 수 있다. 본 글에서는 특정 타입에 대한 swap 함수부터 시작하여, Generic Swap 함수를 구현하고, Generic Sort 함수까지의 구현하는 여정을 담았다. 같이 따라가보며, 구현하기 위..
들어가며C 코드를 작성할 때, "함수의 탈출 조건을 먼저 처리하는 것"과 "변수 선언을 먼저 하는 것"의 성능 차이에 대해 궁금했다. 탈출조건에 먼저 걸리는 클라이언트 코드가 많다면 탈출조건이 먼저 있는 게 좋을 것이고, 그렇지 않은 경우(탈출 조건에 먼저 걸리지 않는 클라이언트 코드가 많은 경우)라도 변수 선언과 탈출조건 중 어떤 것이 상단에 작성되더라도 둘 다 실행되어야 하기 때문에 탈출조건이 상단으로 가는 게 좋다고 생각된다. 분석 지점을 쉽게 표현하자면, 아래 두 포인트로 추려낼 수 있겠다.변수가 선언 시점에 명령어로 접수되는지아니면 사용 시점에 명령어로 접수되는지 또한, 선언 뿐만 아니라 초기화까지 했더라도 실제로 사용하는 시점에 명령어로 접수되는지도 궁금해졌다.만약, 컴파일러 최적화 중 변수가..
ByteByteGo 의 정기메일 에서 발췌한 부분이다.Error handling is one of the most important aspects of building reliable systems. Today, we will discuss an important topic: Can Kafka lose messages? A common belief among many developers is that Kafka, by its very design, guarantees no message loss. However, understanding the nuances of Kafka's architecture and configuration is essential to truly grasp how and whe..
- Total
- Today
- Yesterday
- Memory
- S1
- CPU
- Spring MVC
- core c++
- condition variable
- 엔티티 설계 주의점
- reader-writer lock
- thread
- sleep lock
- S4
- tomcat11
- Java
- JPA
- generic swap
- PS
- pocu
- generic sort
- tree
- 연관관계 편의 메서드
- 객체 변조 방어
- C
- OOP
- 백준
- 이진탐색
- 톰캣11
- Dispatcher Servlet
- servlet
- 논문추천
- 개발 공부 자료
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |