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.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,874f90f0816ffe3b X-Google-Attributes: gid103376,public From: kenner@lab.ultra.nyu.edu (Richard Kenner) Subject: Re: Most efficient way to check for null string? Date: 1997/06/23 Message-ID: <5oln1e$f4f$1@news.nyu.edu>#1/1 X-Deja-AN: 252014166 References: Organization: New York University Ultracomputer Research Lab Newsgroups: comp.lang.ada Date: 1997-06-23T00:00:00+00:00 List-Id: In article dewar@merv.cs.nyu.edu (Robert Dewar) writes: >>...If you really want to >>shave cycles, the following will likely be the most efficient: >> >> if Str'Last < Str'First then ... > >Bletch. That's the least readable of all, but Tucker's right that it >might be more efficient. Tucker didn't say why. It's because Ada >(foolishly, IMHO) allows Str's range to be something like >1_000 .. -1_000_000. Which means that calculating the 'Length involves >a conditional jump in the general case. That's true, but the condition on the conditional jump is precisely the same as the condition of the string being null, so the tests should be equivalent. Out of curiousity, I checked to see what GNAT will do. It neither optimized it to the above test, nor did the general computation of 'Length (involving conditional jumps) and tested its resul, but instead simply did the above test twice in a row! That redundant test should have been eliminated by the GCC optimizer and I just put on my list to find out one of these days why it wasn't.