디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.11.26 22:24:12
조회 64 추천 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 루틴 ON! 운동 찐템! 지금 할인 중 운영자 25/11/27 - -
공지 프로그래밍 갤러리 이용 안내 [97] 운영자 20.09.28 48850 65
2906903 ㅈ문가들은 왜 그러고 사는걸까? [2] ㅇㅇ(124.48) 20:05 14 0
2906902 노무현 대통령이 등장하는 '변호인' _ AI 페이스 스왑 발명도둑잡기(118.216) 19:15 16 0
2906901 디시 게시글 읽어오는 API 나 크롤링 [1] 오마이걸갤로그로 이동합니다. 19:09 26 0
2906900 지금 트리플 모니터 나옵니다. 넥도리아(119.195) 18:36 19 0
2906899 1인 개발자 애니뉴스님 노력갤로그로 이동합니다. 18:31 30 0
2906898 [대한민국] 나경원, 대통령 등 소년기 흉악범죄 의무 공개 법안 발의 ㅇㅇ(121.172) 18:19 17 2
2906897 냥덩이의 비밀❤+ [1] ♥발라당냥덩♥갤로그로 이동합니다. 18:08 43 0
2906896 내가 다크웹으로 결제하는이유 타이밍뒷.통수한방(1.213) 18:03 25 0
2906895 님들....? 1인앱 개발 하고 있는데.. 님들은 테스트 어떻게 함..? [1] 프갤러(220.87) 18:01 35 0
2906894 [단독] 수년간 안 오던 스팸 전화가 온다면?? [2] 나르시갤로그로 이동합니다. 17:59 23 0
2906893 [참고물] AI 기본사회 이후의 경제는 어떻게 이뤄질 것일까?.. [5] +abcd3421갤로그로 이동합니다. 17:36 35 0
2906892 내년부터 실수령 요렇게 줄어든대 ㅇㅅㅇ [17] 가연아갤로그로 이동합니다. 17:09 135 6
2906891 모니터 델이 자꾸 깜빡이는데 dp 케이블이 깜빡이는데 해결방법 Know 넥도리아(119.195) 17:08 25 0
2906890 러스트 egui는 진짜 쓰라고 만든거 맞냐? [4] ㅇㅇ(114.30) 17:01 44 0
2906889 러시아 사람들은 한국인들이 겨울에 춥다고 하는게 이해가 안간다고 함 발명도둑잡기(118.216) 16:56 27 0
2906888 인지과학조져라 손발이시립디다갤로그로 이동합니다. 16:01 29 0
2906887 넷플릭스, 120조원에 워너 브라더스 인수... 영화 시장 대격변 발명도둑잡기(118.216) 15:56 18 0
2906886 쿠팡도 쓴 회피 공식···‘중국인 탓’ 낙인찍는 순간 기업 책임은 가려진 발명도둑잡기(118.216) 15:55 23 0
2906885 걸스데이 유라, 레고로 꽉 채운 집 공개 “더 이상 놔둘 데 없어”(집대 발명도둑잡기(118.216) 15:51 20 0
2906884 대만도 중국어 쓴다? 한국 사람이 한국어 쓰는 것과 의미는 다르다 발명도둑잡기(118.216) 15:49 19 0
2906883 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ ♥발라당냥덩♥갤로그로 이동합니다. 15:25 31 0
2906882 설마.. 나님이 또 갤 하나를 통째로 망하게 한건강..? [3] ♥발라당냥덩♥갤로그로 이동합니다. 15:18 74 0
2906881 [대한민국] 조진웅 사태 분석 ㅇㅇ(121.172) 15:01 29 0
2906880 쿠팡 비밀번호 유출된거같다 [11] 헬마스터갤로그로 이동합니다. 14:56 92 0
2906879 "생김새는 물론 인생도 노무현" 발명도둑잡기(118.216) 14:36 25 0
2906878 인터프리터언어 쓰면서 테스트 안쓰는 새끼들을 죽여야함 [11] 박민준갤로그로 이동합니다. 14:31 73 0
2906877 비슷한 영화들만 반복되고..티켓값은 오르고.. 발명도둑잡기(118.216) 14:29 18 0
2906876 으아아아 휴가 가고 싶다. [10] cvs.갤로그로 이동합니다. 14:08 42 0
2906875 ◆개발자말고 아버지소개로 트럭정비하는게 맞냐? [5] ㅇㅇ갤로그로 이동합니다. 14:02 53 0
2906874 발명도둑잡기 <- 이 정치병자 갤에서 꺼졌으면 [8] 박민준갤로그로 이동합니다. 14:01 72 2
2906873 [애니뉴스][투표] 웹에서 비주얼노벨 구현 라이브러리 ㅇㅇ(121.172) 13:58 14 0
2906872 ‘빠릿빠릿’했던 기자가 작전세력이 됐다 발명도둑잡기(118.216) 13:36 27 0
2906870 [애니뉴스][감상] 암살자인 내 스테이터스가 용사보다도 훨씬 강한데요 ㅇㅇ(121.172) 13:04 19 0
2906869 34살에 빚있으면 여친 사귀면 안됨?? [11] ㅇㅇ(221.168) 13:04 84 0
2906868 엡스타인 이메일 급이면 이메일 서버 운영자가 몰래 지울 수 있지 않을까? [1] 발명도둑잡기(118.216) 12:56 30 0
2906867 파이썬은 ide가 오류 안잡아줌? [1] 프갤러(58.29) 12:18 52 0
2906866 개글배이새끼덜 사람낚는어부갤로그로 이동합니다. 12:09 35 0
2906865 범죄자 좌파 조진웅과 이재명의 상관 관계 ♥발라당냥덩♥갤로그로 이동합니다. 12:09 38 0
2906864 [대한민국] 영포티와 장경태 사건 분석 ㅇㅇ(121.172) 11:56 18 0
2906863 쿠팡 상품 구경중인데 ㅇㅇ(119.56) 11:54 33 0
2906862 프흐프 현업게이들 질문받아라 이기 [7] 슈퍼막코더(126.156) 11:25 83 0
2906861 [애니뉴스][과학컬럼] 광속가변의 법칙 ㅇㅇ(121.172) 10:19 21 0
2906860 쿠팡 탈퇴한다는 사람들 원래 잘 안쓰는 사람들 아님? ㅇㅅㅇ [4] 헤르 미온느갤로그로 이동합니다. 10:11 62 0
2906859 국가보안법 폐지 시도 중국 식민지 현실화 [3] ♥발라당냥덩♥갤로그로 이동합니다. 09:31 91 1
2906858 이재명 무지성 돈 풀기 가용외환보유 0원? 국가부도 시그널 [1] ♥발라당냥덩♥갤로그로 이동합니다. 09:23 35 0
2906857 쿠팡 탈퇴함 괴씸하네 중국개발자 ㅇㅇ(14.5) 09:19 37 0
2906856 편의점 몰카..ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 09:07 34 0
2906855 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 09:03 29 0
2906854 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 09:02 46 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2