RE: iif: am I understanding correctly?

2006-07-24 Thread Snake
This always makes me laugh.

Why don't you make a page with CFIF, then run it

Now use IIF() and run it

What difference do you see in execution time? Bugger all.

If you make a big loop that calls IIF 1000 times then you may notice a
difference.

Also imagine this code

select name = bob #IIF(name is bob, 'selected','')#

Now do the same thing with CFIF/CFELSE, how messy is that.

Don't NOT use something just because some cycle counting freak tells you not
to because you must save every possible 1000th of a millisecond. At least
try it for yourself first.

-
Snake


-Original Message-
From: Mike Soultanian [mailto:[EMAIL PROTECTED] 
Sent: 24 July 2006 04:17
To: CF-Talk
Subject: Re: iif: am I understanding correctly?



Don't use iif()

Always use cfif/cfelse instead of iif(). It is significantly faster and more
readable.

Mike




~|
Introducing the Fusion Authority Quarterly Update. 80 pages of hard-hitting,
up-to-date ColdFusion information by your peers, delivered to your door four 
times a year.
http://www.fusionauthority.com/quarterly

Archive: 
http://www.houseoffusion.com/cf_lists/message.cfm/forumid:4/messageid:247467
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4


RE: iif: am I understanding correctly?

2006-07-24 Thread Ashwin Mathew
I've seen debates around this so many times I decided to blog it:
http://blogs.sanmathi.org/ashwin/2006/07/24/whento-evaluate-and-iif/

In summary - evaluate() and iif() will perform well when the expressions
being evaluated remain static, since the Java classes that are compiled
to process the expressions are cached in memory. If the expressions
change from call to call (different sets of operators and variables),
then these will be expensive, since the expressions will have to be
compiled into Java classes for every call. 

-Original Message-
From: Snake [mailto:[EMAIL PROTECTED] 
Sent: Monday, July 24, 2006 2:18 PM
To: CF-Talk
Subject: RE: iif: am I understanding correctly?

This always makes me laugh.

Why don't you make a page with CFIF, then run it

Now use IIF() and run it

What difference do you see in execution time? Bugger all.

If you make a big loop that calls IIF 1000 times then you may notice a
difference.

Also imagine this code

select name = bob #IIF(name is bob, 'selected','')#

Now do the same thing with CFIF/CFELSE, how messy is that.

Don't NOT use something just because some cycle counting freak tells you
not to because you must save every possible 1000th of a millisecond. At
least try it for yourself first.

-
Snake


-Original Message-
From: Mike Soultanian [mailto:[EMAIL PROTECTED]
Sent: 24 July 2006 04:17
To: CF-Talk
Subject: Re: iif: am I understanding correctly?



Don't use iif()

Always use cfif/cfelse instead of iif(). It is significantly faster and
more
readable.

Mike






~|
Introducing the Fusion Authority Quarterly Update. 80 pages of hard-hitting,
up-to-date ColdFusion information by your peers, delivered to your door four 
times a year.
http://www.fusionauthority.com/quarterly

Archive: 
http://www.houseoffusion.com/cf_lists/message.cfm/forumid:4/messageid:247476
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4


RE: iif: am I understanding correctly?

2006-07-24 Thread Russ
Well we all know what the industry standard has been, but it seems that in
real world tests, iif is faster then cfif in some instances, and arguably
more readable (especially if you're using it inside a select or
radio/checkbox.  

Russ

 -Original Message-
 From: Mike Soultanian [mailto:[EMAIL PROTECTED]
 Sent: Sunday, July 23, 2006 11:17 PM
 To: CF-Talk
 Subject: Re: iif: am I understanding correctly?
 
 I saw this written in the Coldfusion coding practices from Sean Corfield:
 
 http://livedocs.macromedia.com/wtg/public/coding_standards/performance.htm
 l
 
 Performance Don'ts
 
 The following are 'negative' recommendations, e.g., Don't do xyz
 
 Don't use evaluate()
 
 Avoid evaluate() unless there is no other way to write your code (and
 there is almost always another way to write your code).
 
 Don't use iif()
 
 Always use cfif/cfelse instead of iif(). It is significantly faster and
 more readable.
 
 Mike
 
 Russ wrote:
  I wrote some test code, and it seems that cfif and iif perform
 similarly,
  and sometimes cfif ends up being slower?  Is my test code flawed in some
  way?
 
  cfset startTime=GetTickCount()
  cfloop from=1 to=10 index=x
  cfoutput#iif(isDefined(blah),DE(.),DE(,))#/cfoutput
  /cfloop
  cfset midTime=GetTickCount()
 
  cfloop from=1 to=10 index=x
  cfoutput
  cfif isDefined(blah)
  .
  cfelse
  ,
  /cfif
  /cfoutput
  /cfloop
  cfset endTime=getTickCount()
  cfoutputbrThe time to do with IIF is #midtime-starttime#/cfoutput
  cfoutputbrTime to do with cfif #endTime-midTime#/cfoutput
 
  Russ
 
  -Original Message-
  From: Munson, Jacob [mailto:[EMAIL PROTECTED]
  Sent: Friday, July 21, 2006 6:34 PM
  To: CF-Talk
  Subject: RE: iif: am I understanding correctly?
 
  This part of the app is not going to take heavy traffic, so
  the performance
  hit would be negligible.  However going forward I will always
  take into
  consideration the possible performance implications of
  iif/evaluate/DE.
  Yeah, and another thing to keep in mind when memorizing things that
  perform better performance can change with new versions of CF.  Or if
  you move to a different app server, or different OS.  That's why I said
  I like to test my own code, if I'm worried, because I never believe the
  'general rules of thumb'.  :)
 
 
  ---
 
  This transmission may contain information that is privileged,
 confidential
  and/or exempt from disclosure under applicable law. If you are not the
  intended recipient, you are hereby notified that any disclosure,
 copying,
  distribution, or use of the information contained herein (including any
  reliance thereon) is STRICTLY PROHIBITED. If you received this
  transmission in error, please immediately contact the sender and
 destroy
  the material in its entirety, whether in electronic or hard copy
 format.
  Thank you. A1.
 
 
 
 
 
 
 
 

~|
Introducing the Fusion Authority Quarterly Update. 80 pages of hard-hitting,
up-to-date ColdFusion information by your peers, delivered to your door four 
times a year.
http://www.fusionauthority.com/quarterly

Archive: 
http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:247503
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4


RE: iif: am I understanding correctly?

2006-07-23 Thread Russ
Looks like that works... and for large values of X, looks like this method
is the fastest, followed by iif with DE, followed by cfif.  Does this mean
that it's no longer true that iif is not efficient?  If I'm using it only a
few times on a page, and it's a little slower then cfif, I don't really
care, and if it's faster then cfif when I use it inside something that does
a lot of computation, I might as well... More likely I will be using
whichever statement make sense, iif inside checkboxes and select's and such
and cfif elsewhere, since they are about the same.  

Russ

 -Original Message-
 From: Phillip Holmes [mailto:[EMAIL PROTECTED]
 Sent: Sunday, July 23, 2006 2:26 AM
 To: CF-Talk
 Subject: RE: iif: am I understanding correctly?
 
 You must have copied the code straight off the page. The ticks that my
 blog
 displays are blowing up CF.
 Try this.
 
 cfscript
   variables.foo = 1;
   out = IIf(variables.foo NEQ 1,'aString1','aString2');
   writeOutput(out);
 /cfscript
 
 
 Warmest Regards,
 
 Phillip B. Holmes
 http://phillipholmes.com
 214-995-6175 (cell)
 
 
 
 
 
 
 -Original Message-
 From: Russ [mailto:[EMAIL PROTECTED]
 Sent: Sunday, July 23, 2006 1:11 AM
 To: CF-Talk
 Subject: RE: iif: am I understanding correctly?
 
 I'm not too sure what you're trying to do in that article, but I couldn't
 get it to compile... can you explain what you're doing?
 
 Russ
 
  -Original Message-
  From: Phillip Holmes [mailto:[EMAIL PROTECTED]
  Sent: Sunday, July 23, 2006 1:59 AM
  To: CF-Talk
  Subject: RE: iif: am I understanding correctly?
 
  Brad,
 
  IIF() actually compiles down to a 'short-circuited' if in java.
 
  Here is an article about how to use IIF() without having to use
  evaluate()
  -
  IIf() without Delayed Evaluation.
 
  http://www.phillipholmes.com/?p=43
 
  Warmest Regards,
 
  Phillip B. Holmes
  http://phillipholmes.com
  214-995-6175 (cell)
 
 
 
 
 
 
  -Original Message-
  From: Brad Wood [mailto:[EMAIL PROTECTED]
  Sent: Sunday, July 23, 2006 12:40 AM
  To: CF-Talk
  Subject: RE: iif: am I understanding correctly?
 
  Hmm, I had always just figured that cfif and iif just compiled down to
  the exact same java anyway...
 
  I wonder if one could have an advantage over the other if the
  condition was either true or false  all this worrying over a few
  microseconds
  :)
 
  ~Brad
 
  --
  No virus found in this outgoing message.
  Checked by AVG Free Edition.
  Version: 7.1.394 / Virus Database: 268.10.1/390 - Release Date:
  7/17/2006
 
 
 
 
 
 
 
 

~|
Introducing the Fusion Authority Quarterly Update. 80 pages of hard-hitting,
up-to-date ColdFusion information by your peers, delivered to your door four 
times a year.
http://www.fusionauthority.com/quarterly

Archive: 
http://www.houseoffusion.com/cf_lists/message.cfm/forumid:4/messageid:247433
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4


RE: iif: am I understanding correctly?

2006-07-21 Thread Munson, Jacob
Does it?  I'm assuming you're referring to dynamic variables (from
reading your other reply), but my cfif example has a dynamic variable as
well. 

 -Original Message-
 From: loathe [mailto:[EMAIL PROTECTED] 
 Sent: Friday, July 21, 2006 2:37 PM
 
 But it executes much faster.
 
  -Original Message-
  From: Munson, Jacob [mailto:[EMAIL PROTECTED]
  Sent: Friday, July 21, 2006 4:22 PM
  
  Here's how I understand iif:  If the condition is true, 
 return the 2nd
  parameter, otherwise return the 3rd.
  
  So in your example, if (didquery and didfind) returns true, the code
  will evaluate getCust.#i#.  Otherwise it will evaluate DE().
  
  iif is basically just a shorter cfif statement, using your 
 example iif,
  this would do the same thing:
  cfif didquery and didfind
  cfset temp = evaluate(getCust.#i#)
  cfelse
  cfset temp = 
  /cfif
  
  But that takes a lot more code.

This transmission may contain information that is privileged, confidential 
and/or exempt from disclosure under applicable law. If you are not the intended 
recipient, you are hereby notified that any disclosure, copying, distribution, 
or use of the information contained herein (including any reliance thereon) is 
STRICTLY PROHIBITED. If you received this transmission in error, please 
immediately contact the sender and destroy the material in its entirety, 
whether in electronic or hard copy format. Thank you. A1.



~|
Introducing the Fusion Authority Quarterly Update. 80 pages of hard-hitting,
up-to-date ColdFusion information by your peers, delivered to your door four 
times a year.
http://www.fusionauthority.com/quarterly

Archive: 
http://www.houseoffusion.com/cf_lists/message.cfm/forumid:4/messageid:247360
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4


RE: iif: am I understanding correctly?

2006-07-21 Thread loathe
cfif didquery and didfind
cfset temp = variables[getCust][i]
cfelse
cfset temp = 
/cfif

Does the same thing right?

 -Original Message-
 From: Munson, Jacob [mailto:[EMAIL PROTECTED]
 Sent: Friday, July 21, 2006 4:43 PM
 To: CF-Talk
 Subject: RE: iif: am I understanding correctly?
 
 Does it?  I'm assuming you're referring to dynamic variables (from
 reading your other reply), but my cfif example has a dynamic variable as
 well.
 
  -Original Message-
  From: loathe [mailto:[EMAIL PROTECTED]
  Sent: Friday, July 21, 2006 2:37 PM
 
  But it executes much faster.
 
   -Original Message-
   From: Munson, Jacob [mailto:[EMAIL PROTECTED]
   Sent: Friday, July 21, 2006 4:22 PM
  
   Here's how I understand iif:  If the condition is true,
  return the 2nd
   parameter, otherwise return the 3rd.
  
   So in your example, if (didquery and didfind) returns true, the code
   will evaluate getCust.#i#.  Otherwise it will evaluate DE().
  
   iif is basically just a shorter cfif statement, using your
  example iif,
   this would do the same thing:
  
   But that takes a lot more code.
 
 This transmission may contain information that is privileged, confidential
 and/or exempt from disclosure under applicable law. If you are not the
 intended recipient, you are hereby notified that any disclosure, copying,
 distribution, or use of the information contained herein (including any
 reliance thereon) is STRICTLY PROHIBITED. If you received this
 transmission in error, please immediately contact the sender and destroy
 the material in its entirety, whether in electronic or hard copy format.
 Thank you. A1.
 
 
 
 

~|
Introducing the Fusion Authority Quarterly Update. 80 pages of hard-hitting,
up-to-date ColdFusion information by your peers, delivered to your door four 
times a year.
http://www.fusionauthority.com/quarterly

Archive: 
http://www.houseoffusion.com/cf_lists/message.cfm/forumid:4/messageid:247365
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4


RE: iif: am I understanding correctly?

2006-07-21 Thread Munson, Jacob
Yeah, it should.  But the question is, is that faster or not?  Without
running some tests with cftimer, I'm not sure.  But I'm always a fan of
using less code, as long as it doesn't kill the server.  :)

 -Original Message-
 From: loathe [mailto:[EMAIL PROTECTED] 
 Sent: Friday, July 21, 2006 3:00 PM
 
 cfif didquery and didfind
   cfset temp = variables[getCust][i]
 cfelse
   cfset temp = 
 /cfif
 
 Does the same thing right?
 
  -Original Message-
  From: Munson, Jacob [mailto:[EMAIL PROTECTED]
  Sent: Friday, July 21, 2006 4:43 PM
  To: CF-Talk
  Subject: RE: iif: am I understanding correctly?
  
  Does it?  I'm assuming you're referring to dynamic variables (from
  reading your other reply), but my cfif example has a 
 dynamic variable as
  well.
  
   -Original Message-
   From: loathe [mailto:[EMAIL PROTECTED]
   Sent: Friday, July 21, 2006 2:37 PM
  
   But it executes much faster.

This transmission may contain information that is privileged, confidential 
and/or exempt from disclosure under applicable law. If you are not the intended 
recipient, you are hereby notified that any disclosure, copying, distribution, 
or use of the information contained herein (including any reliance thereon) is 
STRICTLY PROHIBITED. If you received this transmission in error, please 
immediately contact the sender and destroy the material in its entirety, 
whether in electronic or hard copy format. Thank you. A1.



~|
Introducing the Fusion Authority Quarterly Update. 80 pages of hard-hitting,
up-to-date ColdFusion information by your peers, delivered to your door four 
times a year.
http://www.fusionauthority.com/quarterly

Archive: 
http://www.houseoffusion.com/cf_lists/message.cfm/forumid:4/messageid:247369
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4


Re: iif: am I understanding correctly?

2006-07-21 Thread Josh Nathanson
This part of the app is not going to take heavy traffic, so the performance 
hit would be negligible.  However going forward I will always take into 
consideration the possible performance implications of iif/evaluate/DE.

Ben -- I guess I like messing around with stuff like this (iif, evaluate 
etc.) because I feel like I don't fully understand it, and if I can get it 
to work as desired, maybe I can come to a better understanding of how 
certain things in CF work in a more general sense.

-- Josh


- Original Message - 
From: Munson, Jacob [EMAIL PROTECTED]
To: CF-Talk cf-talk@houseoffusion.com
Sent: Friday, July 21, 2006 2:52 PM
Subject: RE: iif: am I understanding correctly?


 OK, I ran cftimer on both examples, iif and the if/else way,
 and both came
 back 0 ms.  So I think in this case, since it's only looping
 over 10 list
 items or whatever, I'll stick with the leaner code.  Maybe if
 you were
 looping over thousands of list elements or query rows or
 something, there'd
 be a more noticeable performance hit.

 Interesting.  However, if your app ever need's to scale, it /could/ end
 up being thousands of list elements, if hundreds of people are firing
 that code simultaneously.  That's why I usually try to simulate some
 traffic by putting the pieces of code I want to test in a loop that runs
 thousands of times.  It's not the best way to test (a load tester would
 be better), but it gives you a better idea.  Of course, none of this is
 relevant if you know your app will never have that much traffic.  :)


 -

 This transmission may contain information that is privileged, confidential 
 and/or exempt from disclosure under applicable law. If you are not the 
 intended recipient, you are hereby notified that any disclosure, copying, 
 distribution, or use of the information contained herein (including any 
 reliance thereon) is STRICTLY PROHIBITED. If you received this 
 transmission in error, please immediately contact the sender and destroy 
 the material in its entirety, whether in electronic or hard copy format. 
 Thank you. A1.



 

~|
Introducing the Fusion Authority Quarterly Update. 80 pages of hard-hitting,
up-to-date ColdFusion information by your peers, delivered to your door four 
times a year.
http://www.fusionauthority.com/quarterly

Archive: 
http://www.houseoffusion.com/cf_lists/message.cfm/forumid:4/messageid:247390
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4


RE: iif: am I understanding correctly?

2006-07-21 Thread Ben Nadel
Josh, 

I am right with you on that point! I am a huge fan of learning by doing!
Keep it up.

...
Ben Nadel 
www.bennadel.com

-Original Message-
From: Josh Nathanson [mailto:[EMAIL PROTECTED] 
Sent: Friday, July 21, 2006 6:10 PM
To: CF-Talk
Subject: Re: iif: am I understanding correctly?

This part of the app is not going to take heavy traffic, so the performance
hit would be negligible.  However going forward I will always take into
consideration the possible performance implications of iif/evaluate/DE.

Ben -- I guess I like messing around with stuff like this (iif, evaluate
etc.) because I feel like I don't fully understand it, and if I can get it
to work as desired, maybe I can come to a better understanding of how
certain things in CF work in a more general sense.

-- Josh


- Original Message -
From: Munson, Jacob [EMAIL PROTECTED]
To: CF-Talk cf-talk@houseoffusion.com
Sent: Friday, July 21, 2006 2:52 PM
Subject: RE: iif: am I understanding correctly?


 OK, I ran cftimer on both examples, iif and the if/else way,
 and both came
 back 0 ms.  So I think in this case, since it's only looping
 over 10 list
 items or whatever, I'll stick with the leaner code.  Maybe if
 you were
 looping over thousands of list elements or query rows or
 something, there'd
 be a more noticeable performance hit.

 Interesting.  However, if your app ever need's to scale, it /could/ end
 up being thousands of list elements, if hundreds of people are firing
 that code simultaneously.  That's why I usually try to simulate some
 traffic by putting the pieces of code I want to test in a loop that runs
 thousands of times.  It's not the best way to test (a load tester would
 be better), but it gives you a better idea.  Of course, none of this is
 relevant if you know your app will never have that much traffic.  :)


 -

 This transmission may contain information that is privileged, confidential

 and/or exempt from disclosure under applicable law. If you are not the 
 intended recipient, you are hereby notified that any disclosure, copying, 
 distribution, or use of the information contained herein (including any 
 reliance thereon) is STRICTLY PROHIBITED. If you received this 
 transmission in error, please immediately contact the sender and destroy 
 the material in its entirety, whether in electronic or hard copy format. 
 Thank you. A1.



 



~|
Introducing the Fusion Authority Quarterly Update. 80 pages of hard-hitting,
up-to-date ColdFusion information by your peers, delivered to your door four 
times a year.
http://www.fusionauthority.com/quarterly

Archive: 
http://www.houseoffusion.com/cf_lists/message.cfm/forumid:4/messageid:247392
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4


RE: iif: am I understanding correctly?

2006-07-21 Thread Munson, Jacob
 This part of the app is not going to take heavy traffic, so 
 the performance
 hit would be negligible.  However going forward I will always 
 take into
 consideration the possible performance implications of 
 iif/evaluate/DE.

Yeah, and another thing to keep in mind when memorizing things that
perform better performance can change with new versions of CF.  Or if
you move to a different app server, or different OS.  That's why I said
I like to test my own code, if I'm worried, because I never believe the
'general rules of thumb'.  :)


---

This transmission may contain information that is privileged, confidential 
and/or exempt from disclosure under applicable law. If you are not the intended 
recipient, you are hereby notified that any disclosure, copying, distribution, 
or use of the information contained herein (including any reliance thereon) is 
STRICTLY PROHIBITED. If you received this transmission in error, please 
immediately contact the sender and destroy the material in its entirety, 
whether in electronic or hard copy format. Thank you. A1.



~|
Introducing the Fusion Authority Quarterly Update. 80 pages of hard-hitting,
up-to-date ColdFusion information by your peers, delivered to your door four 
times a year.
http://www.fusionauthority.com/quarterly

Archive: 
http://www.houseoffusion.com/cf_lists/message.cfm/forumid:4/messageid:247393
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4