디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

Ada의 case when 최적화와 errno → 예외 매핑

나르시갤로그로 이동합니다. 2025.11.26 22:24:12
조회 57 추천 0 댓글 0

LLM 작성글이라 내용 중 틀린 내용이 있기는 한데 귀찮아서 고치지 않았습니다. ㅎㅎ

아마 타 언어 컴파일러도 이럴 것 같습니다.


Ada의 case when 최적화와 errno → 예외 매핑

시스템 프로그래밍을 하다 보면 errno를 받아서 Ada 예외로 변환하는 작업이 필요합니다. Clair 프로젝트에서도 Clair.Error 패키지에 수십 개의 예외와 errno 상수가 정의되어 있죠. 문제는 이걸 변환하는 함수(Raise_From_Errno)를 작성할 때 case when 절이 100~150개쯤 생긴다는 겁니다.

그럼 성능은 어떨까요? 단순 배열 탐색과 비교해보겠습니다.


1. case when 150개일 때

Ada 컴파일러(GNAT 등)는 case 문을 최적화합니다.

  • 값이 연속적(dense) → jump table 생성 → 사실상 정적 배열 인덱싱과 동일한 O(1) 성능
  • 값이 드문드문(sparse) → 비교 체인이나 이진 탐색 트리 생성 → O(log N) 또는 O(N)

errno 값은 1부터 97까지 연속적이므로, Ada 컴파일러는 jump table을 만들어줍니다. 즉, case when 150개라도 성능은 배열 인덱싱과 같은 수준입니다.


2. 정적 배열 + 2진 탐색

직접 (errno, exception) 쌍을 배열에 넣고 이진 탐색을 하면 O(log N)입니다.
N=150이면 log₂(150) ≈ 7번 비교. 성능상 큰 문제는 없지만, case when jump table보다는 느립니다.
장점은 유지보수성: 새 errno 추가 시 배열에만 넣으면 됩니다.


3. Raise_From_Errno 구현 방법

Raise_From_Errno 프로시저는 두 가지 방식으로 구현할 수 있습니다:

  1. 배열 인덱스 방식

    • 에러 코드가 연속적일 경우, 배열 인덱스처럼 직접 접근 가능.
    • Ada 컴파일러가 case when을 jump table로 최적화하므로 사실상 O(1).
  2. 정적 배열 + 이진 탐색 방식

    • 에러 코드가 연속적이지 않거나, 예외 매핑이 드문드문일 경우.
    • (errno, exception) 쌍을 정렬된 배열에 넣고 이진 탐색으로 찾음.
    • O(log N) 성능, 유지보수성은 뛰어남.

4. 결론

  • 성능 최적화가 최우선이면 → case when (jump table, O(1))
  • 유지보수성 자동화가 중요하면 → 정적 배열 + 이진 탐색 (O(log N), 충분히 빠름)
  • Clair 같은 시스템 프로그래밍 라이브러리에서는 자동 생성된 case when이 가장 Ada스럽고, 성능도 최적입니다.

👉 요약: Ada의 case when은 내부적으로 정적 배열 매핑(jump table)로 최적화되므로, errno 매핑에 가장 적합합니다. 다만 연속적이지 않은 경우에는 정적 배열 + 이진 탐색도 좋은 대안이 될 수 있습니다.

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 이제는 의미 없어진 것 같은 시상식은? 운영자 25/12/01 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
2906244 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 12.03 48 0
2906243 코드 짜는 능력이랑 제일 연관 깊은 수학의 예 ㅇㅇ갤로그로 이동합니다. 12.03 75 0
2906239 발명도둑잡기야 [1] 프갤러(58.29) 12.03 72 0
2906235 코드 짜는 능력이랑 제일 연관 깊은 수학은 뭐임? [4] ㅇㅇ(211.108) 12.03 104 1
2906229 피아노 연습하다 답답해서 직접 만든 강아지 컨셉 플로팅 카운터 앱 뭉순갤로그로 이동합니다. 12.03 97 3
2906218 다들 어떤 생각으로 오픈소스에 기여함? [4] ㅇㅇ갤로그로 이동합니다. 12.03 57 0
2906201 옛날에 따먹던년 걸레보지인줄 알았는데 [1] ㅇㅇ(124.48) 12.02 118 1
2906188 생기부에 박제 ㅇㅅㅇ [4] 따당갤로그로 이동합니다. 12.02 126 2
2906177 고무백 1년 죽엇다 생각하고 해도 취업힘드냐.. [1] 프갤러(27.239) 12.02 54 0
2906164 https://open.kakao.com/o/gsrkSjeh 프갤러(143.244) 12.02 37 0
2906162 FreeBSD 15가 출시되었습니다. [4] 나르시갤로그로 이동합니다. 12.02 118 1
2906153 aws 왜씀? 프갤러(49.165) 12.02 45 0
2906146 부흥동인가 달안동인가 넥도리아(223.38) 12.02 69 0
2906145 술 빨고 집 왔는데 [12] 루도그담당(118.235) 12.02 97 0
2906143 춥긴 춥네 ㅇㅅㅇ [1] 류류(118.235) 12.02 54 0
2906142 쿠팡 털리고 매일 불안에 떠는 중 [6] 가연아갤로그로 이동합니다. 12.02 96 0
2906128 아 진짜 나는 바보야. [8] 재현갤로그로 이동합니다. 12.02 50 0
2906120 요즘 뭐 볼게 없냐 프갤러(211.196) 12.02 36 0
2906119 국회방송 쿠팡 생중계 개꿀잼이누 타이밍뒷.통수한방(1.213) 12.02 59 0
2906118 1월 2일까지만 회사 나가기로 오늘 이야기 했습니다. [1] ㅇㅇ(118.235) 12.02 46 0
2906116 [사설]쿠팡, 5년간 고위 공무원 44명 영입… ‘할 일’ 않고 로비 매 발명도둑잡기(211.246) 12.02 63 0
2906114 [단독] 조작 정황 정영학, 법정 제출 검사는 '쿠팡 불기소' 엄희준 발명도둑잡기(211.246) 12.02 41 0
2906113 형들 커뮤니티 사이트 만들었는데 어떻게 유입 높이지? [3] 탱스갤로그로 이동합니다. 12.02 86 0
2906112 군사기밀 빼낸 '일본인' 간첩은 집행유예... 황당한 법 누가 만들 발명도둑잡기(211.246) 12.02 52 0
2906110 라이시테(Laïcité)는 프랑스식 세속주의, 정교분리 사상 발명도둑잡기(211.246) 12.02 34 0
2906108 "돈 필요 없다…쿠팡 中개발자, 앙심 품고 털었다?" 발명도둑잡기(211.246) 12.02 41 0
2906107 쿠팡 안되겠네. 국유화 해야겠네 [2] 프갤러(121.133) 12.02 63 0
2906106 WPF에 해답을 줘 이 프레임워크의 가치는 어디서옴? [4] 거북이속이거북갤로그로 이동합니다. 12.02 65 0
2906103 원래 쿠팡 김범석이 한국인 증오하는 사람이다 발명도둑잡기(211.246) 12.02 48 1
2906102 쿠팡 중국인 개발자가 인증 시스템 개발햇다고 함 [2] 헬마스터갤로그로 이동합니다. 12.02 79 1
2906100 chironpractor 얼마 받고 그러는건지 [5] 발명도둑잡기(211.246) 12.02 94 0
2906096 안타 달라스갤로그로 이동합니다. 12.02 34 0
2906095 nextjs가 김치 프론트 대세가 된건 재앙인듯 [2] ㅇㅇ(182.228) 12.02 79 0
2906094 신입 퇴사 고소 예정 [5] 프갤러(106.102) 12.02 108 0
2906091 윤석열에 베팅 발명도둑잡기(118.235) 12.02 58 0
2906088 대학원 면접 때 양복 입어야 되나? [3] 나르시갤로그로 이동합니다. 12.02 55 0
2906086 ‘왕초 윤석열과 권력층 도둑들’ 또 나라 삼킬 수 있다 발명도둑잡기(118.235) 12.02 56 0
2906085 늦지 않게 도착했군 [7] 개멍청한유라갤로그로 이동합니다. 12.02 76 0
2906084 [대한민국] 악의 무리들과 싸우는 위대한 미국 ㅇㅇ(121.172) 12.02 50 1
2906083 윤석열 3년간 국가적 손실 300조씩 발생했다 [2] 발명도둑잡기(118.235) 12.02 60 0
2906082 일하는 척 하는 웹사이트ㅡ관심부ㅏㄱ탁드립ㄴ다 프갤러(58.72) 12.02 38 0
2906081 쿠팡 it직원 대부분이 중국인이라고 하네 [6] 헬마스터갤로그로 이동합니다. 12.02 108 0
2906080 나 어떤 프로그램 하나 짰는데 [2] 프갤러(85.12) 12.02 104 0
2906078 라이브코딩 테스트는 뭐 보는거임? [2] ㅇㅇ(182.228) 12.02 63 0
2906076 보안 사고마다 벌금 먹여서 파산시키고 정부가 인수해야 [2] 프갤러(110.8) 12.02 84 0
2906075 안녕하세요. [2] ㅇㅇ(211.169) 12.02 60 0
2906074 인지과학조져라 손발이시립디다갤로그로 이동합니다. 12.02 51 0
2906073 그냥 말하는거 딱 들어보면 알어 ㅇㅇ갤로그로 이동합니다. 12.02 110 0
2906070 ??? ㅇㅅㅇ [4] 헤르 미온느갤로그로 이동합니다. 12.02 79 0
2906069 GPT 나온 뒤로 해킹이 많아진듯 프갤러(223.194) 12.02 74 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2