Date: Thu, 30 Oct 2014 06:30:53 +0800 From: Erich Dollansky <erichsfreebsdlist@alogt.com> To: "bycn82" <bycn82@gmail.com> Cc: freebsd-ipfw@freebsd.org Subject: Re: performance of the swtich/case statements Message-ID: <20141030063053.12608314@X220.alogt.com> In-Reply-To: <009101cff386$29c30e50$7d492af0$@gmail.com> References: <009101cff386$29c30e50$7d492af0$@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, On Wed, 29 Oct 2014 22:39:34 +0800 "bycn82" <bycn82@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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20141030063053.12608314>