From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "J-P. Rosen" Newsgroups: comp.lang.ada Subject: Re: Ada case-statement Date: Thu, 15 Mar 2018 06:54:11 +0100 Organization: Adalog Message-ID: References: <365d65ea-5f4b-4b6a-be9b-1bba146394ab@googlegroups.com> <76eeca56-3246-49d2-baf3-0879741e7e12@googlegroups.com> NNTP-Posting-Host: XdjV4tYMtFfMKGpv0MuDzQ.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 X-Notice: Filtered by postfilter v. 0.8.3 Content-Language: fr Xref: reader02.eternal-september.org comp.lang.ada:50985 Date: 2018-03-15T06:54:11+01:00 List-Id: Le 15/03/2018 à 04:10, Dan'l Miller a écrit : > For dense case statements that utilize all or most of an enumerated > type's enumerated values, a jump table is the most likely on most > processors to achieve O(1) growth [instead of if-statement-based O(n) > growth, where n is the quantity of enumerated values in an enumerated > type]. Long time ago, as I was working on Ada/ED, my shelf had a PHD thesis entirely on how to generate code for case statements. Various techniques depending on the number of values, the density of mentionned values in the subtype, etc. Of course, you had the if/elsif and plain jump table techniques, but also hashed jump tables, jump tables indexed by intervals, various mixes (if/elsif to eliminate sparse cases, then tables for the rest)... -- J-P. Rosen Adalog 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00 http://www.adalog.fr