Hi, On Thu, 30 Oct 2014 12:24:33 +0800 bycn82 <byc...@gmail.com> wrote:
> Hi, > According to my understanding in Java programming, the compiler will aren't we talking about C here? Erich > automatically store the values into a table and jump to the correct > one according to the value only when the condition values are in > running number, > > for example. > > swtich(a){ > case 1: code block 1 > case 2: code block 2 > case 3: code block 3 > case 4: code block 4 > default: code block 5 > } > > it will be handled by an array > 1-->code block 1 > 2-->code block 2 > 3-->code block 3 > 4-->code block 4 > others-->code block 5 > > so when the value N is greater than or lesser than 1, it will be > directly jump to the "code block 5" > otherwise, it will jump to N, because call the cases are nice in > running numbers, > > but when the cases are messy, it will by just like lots of if/else > > > On Thu, Oct 30, 2014 at 6:30 AM, Erich Dollansky < > erichsfreebsdl...@alogt.com> wrote: > > > Hi, > > > > On Wed, 29 Oct 2014 22:39:34 +0800 > > "bycn82" <byc...@gmail.com> wrote: > > > > > It is using the switch/case statement to make the code clear in > > > the > > > > > > I am not a C programmer, so I am not clear how the switch/case > > > will be optimized by the compiler in FreeBSD. But I used to write > > > a compiler by myself and I use a hash table to handle all the > > > conditions in the case statements because my compiler don't care > > > about performance!, But in C it is different, the case statement > > > can only accept "int" values, so I don't think it will use hash > > > or what , it should be directly use an array(), So whether it can > > > be optimized it depends on the conditions in the switch/case > > > statements, and I noticed that the cases statement in the 2 loops > > > are not arranging the opcode in running number, so does the > > > compiler smart enough to optimize it? > > > > > > > > I did not check recently. It was already a long, long time ago, that > > compilers checked the limits and used the values as an index into a > > table to jump to the code. I hope that this did not get changed. > > > > With other words, the order in the code does not matter. The only > > optimisation the compiler can do, is not to use a table if the > > statement consists of a low number of entries only. > > > > Erich > > _______________________________________________ freebsd-ipfw@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw To unsubscribe, send any mail to "freebsd-ipfw-unsubscr...@freebsd.org"