cfswitch is for assessing one expression and doing different
operations depending on the value, while this can be done with cfif
it is supposedly not as efficient. This is not always the case as
PaulH touches on, this occurs when the expression you are
assessing is a string, this is because in Java which everything in
CF is built on top of you cannot use a switch statement to assess a
string, so when you use cfswitch for this internally an exception
is raised with is caught and the switch statement is converted to
an equivalent if-elseif-else statement. This obviously has a
detriment in performance, however this is only really evident under
large load.
If most other programming languages switch should outperform
if-else when appropriate, mainly people use it because it is an
easier syntax to comprehend and modify when you are assessing an
expression. Most people are either ignorant to or ignore the string
issue unless they are having problems as it only really evident
under load.