<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body bgcolor=white lang=EN-NZ link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>So it&#8217;s best to reduce the set size as much as possible.&nbsp; Looking at my code, I have some variables declared as Word (16-bit) with 65535 possible values but most are Byte.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'><o:p>&nbsp;</o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'> delphi-bounces@listserver.123.net.nz [mailto:delphi-bounces@listserver.123.net.nz] <b>On Behalf Of </b>Peter Ingham<br><b>Sent:</b> Wednesday, 8 June 2016 8:15 p.m.<br><b>To:</b> delphi@listserver.123.net.nz<br><b>Subject:</b> Re: [DUG] In [set] efficiency<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><div><p class=MsoNormal>(From memory &amp; without firing up a compiler to verify) ...<br><br>Sets are implemented as bitmaps with one bit allocated to each possible value of the set type (hence the limitations on the number of possible elements in the set).<br><br>So if you have<br>type bytesset = [0..7];&nbsp; // 8 possible values<br>var&nbsp; a: bytesset ;<br>begin<br>&nbsp; if a in [1,4] then<br><br>The set literal [1,4] ends up as a byte with the value $0A.<br>The test &quot;a in [1,4]&quot; is equivalent to &quot;(a AND $0A) &lt;&gt; 0&quot;.<br><br>The generated code (for a set of this size) is an AND&nbsp; followed by a conditional jump.&nbsp; Very efficient.<br><br>It gets a little nastier when the possible values gets larger as the size of the set grows&nbsp; (set of AnsiChar is 32 bytes; Set of Widechar exceeds the permissible size of a set).<br><br>The precise code generated by case varies between jump tables and linear comparisons.<br><br>Regards<br>&nbsp; <br><br>On 8/06/2016 5:27 p.m., Steve Peacocke wrote:<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal>If I remember correctly, the compiler changes both to array anyway so you come out with exactly the same compiled code.&nbsp;<o:p></o:p></p></div><div id=AppleMailSignature><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div id=AppleMailSignature><p class=MsoNormal>Perhaps someone can confirm this or tell me how wrong I am?<br><br>Steve Peacocke <o:p></o:p></p><div><p class=MsoNormal>+64 220 612-611<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div></div><div><p class=MsoNormal style='margin-bottom:12.0pt'><br>On 8/06/2016, at 4:56 PM, Ross Levis &lt;<a href="mailto:ross@stationplaylist.com">ross@stationplaylist.com</a>&gt; wrote:<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>I&#8217;m wondering which is more efficient to process...</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>if (a=1) or (a=2) then ...</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>or</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>if a in [1,2] then ...</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>If the answer is the first method, does it make a difference if more numbers are checked, eg. if a in [1..3,5] then</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>Cheers.</span><o:p></o:p></p></div></blockquote><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'>_______________________________________________<br>NZ Borland Developers Group - Delphi mailing list<br>Post: <a href="mailto:delphi@listserver.123.net.nz">delphi@listserver.123.net.nz</a><br>Admin: <a href="http://delphi.org.nz/mailman/listinfo/delphi">http://delphi.org.nz/mailman/listinfo/delphi</a><br>Unsubscribe: send an email to <a href="mailto:delphi-request@listserver.123.net.nz">delphi-request@listserver.123.net.nz</a> with Subject: unsubscribe<o:p></o:p></span></p></div></blockquote><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><br><br><br><o:p></o:p></span></p><pre>_______________________________________________<o:p></o:p></pre><pre>NZ Borland Developers Group - Delphi mailing list<o:p></o:p></pre><pre>Post: <a href="mailto:delphi@listserver.123.net.nz">delphi@listserver.123.net.nz</a><o:p></o:p></pre><pre>Admin: <a href="http://delphi.org.nz/mailman/listinfo/delphi">http://delphi.org.nz/mailman/listinfo/delphi</a><o:p></o:p></pre><pre>Unsubscribe: send an email to <a href="mailto:delphi-request@listserver.123.net.nz">delphi-request@listserver.123.net.nz</a> with Subject: unsubscribe<o:p></o:p></pre></blockquote><p><o:p>&nbsp;</o:p></p></div></body></html>