I didnt disagree. I just said it wasnt enough processing to matter. -----Original Message----- From: Christopher Jordan [mailto:[EMAIL PROTECTED] Sent: Thursday, December 21, 2006 9:51 AM To: CF-Talk Subject: Re: automatically generate password
Hmm... well, cfscript code is still closer to the native java than tag based code. To quote a guy from my local CFUG. "That is exactly what I've been saying / seeing for many years (pre & post CFMX). The reason that tags are slower is because when the template JITs, it adds extra libraries into the class. So in other words, when you write your code in cfscript, your code needs fewer cftag libraries mentioned as Java import namespaces because your code is closer to the native Java and requires less overhead. Also, the tag named import also contains functionality you may not be using. Therefore, you have thinner JITs and faster code. Now, if we could just get adobe to start offering cfscript equivalents for the most used tags, we wouldn't have to have functions that replace our tags inside cfscript. We can only hope!" To see this comment in context, check out this blog entry <http://www.daveshuck.com/blog/index.cfm/2006/1/27/Benchmarks--try-VS-isdefi ned--script-VS-tag>. I've also seen the speed increases. Here's an email that I recently posted to my CFUG mailing list. The numbers at the bottom of the email amazed me. <------ BEGIN ------> Not to beat a dead horse, but I just wanted to share some numbers. Just this morning I changed the part of the code in one of my CFCs from this: <CFSet var ThisOrderID = ""> <CFSet var ThisFieldList = ""> <CFSet var ThisClientID = ""> <CFSet var ThisMarketPath = ""> <CFParam Name="Arguments.OrderID" Default=""> <CFParam Name="Arguments.FieldList" Default="*"> <CFParam Name="Arguments.StafPakID" Default="#ThisStafpakClientID#"> <CFParam Name="Arguments.Path" Default="#ThisStafpakPath#"> <CFSet ThisOrderID = Trim(Arguments.OrderID)> <CFSet ThisClientID = Trim(Arguments.StafPakID)> <CFSet ThisMarketPath = Trim(Arguments.Path)> <CFSet ThisFieldList = Trim(Arguments.FieldList)> to this: <CFScript> var My = StructNew(); My.OrderID = ""; My.FieldList = "*"; My.StafpakID = ThisStafpakClientID; My.Path = ThisStafpakPath; My.ArgumentList = StructKeyList(Arguments); // loop over the Arguments Structure and put all key values into the local // 'My' scope... for (My.i = 1; My.i LTE StructCount(Arguments); My.i = My.i + 1){ My.KeyName = ListGetAt(My.ArgumentList, My.i); "My.#My.KeyName#" = Arguments[My.KeyName]; } </CFScript> and then looked at the numbers in the debugging. I was amazed! The old way: 5170 ms 5170 ms 1 CFC[ C:\Inetpub\wwwroot\Include\CFC\StafPak.cfc | FetchThisOrder(... The new way: 140 ms 140 ms 1 CFC[ C:\Inetpub\wwwroot\Include\CFC\StafPak.cfc | FetchThisOrder(... Holy milliseconds, Batman! Just because I know the numbers fluctuate I ran both again. The old way (take 2): 1124 ms 1124 ms 1 CFC[ C:\Inetpub\wwwroot\Include\CFC\StafPak.cfc | FetchThisOrder(... The new way (take 2): 78 ms 78 ms 1 CFC[ C:\Inetpub\wwwroot\Include\CFC\StafPak.cfc | FetchThisOrder(... Jinkies!! That was smokin'! I'm definitely changing the way I do some things around here... ;o) <------ END ------> Anyway, the speed increase gained in changing your code in this instance may be immeasurable, but in general cfscript code is faster than tagged code. I find this topic fascinating. I hope you don't think I've wasted anyone's time. :o) Cheers, Chris Bobby Hartsfield wrote: > I converted this to a udf but it's not any faster. Not really enough > processing to make a difference really. > > -----Original Message----- > From: Christopher Jordan [mailto:[EMAIL PROTECTED] > Sent: Wednesday, December 20, 2006 4:36 PM > To: CF-Talk > Subject: Re: automatically generate password > > I've not followed this thread entirely, but if generating a good random > password is still an issue, then I'd go with and idea like Bobby has > stated, but I'd use a UDF and not a custom tag. > > As I've recently become *very* aware of, CFScript is just *way* faster > than tag based code, especially for something like this. > > Check out CFLib.org there are two or three password generators out > there. One always creates eight character passwords but is free from > annoying similar looking characters like 1 and l (one and lower-case > L... just in case). Another generates any length password you want, and > another generates WEP keys. > > Here's a link to the first one I mentioned called Make Password > <http://www.cflib.org/udf.cfm?ID=437>. > > Cheers, > Chris > > > > Bobby Hartsfield wrote: > >> Take a look at the link I gave you... >> >> <CF_RANDOM_PASS LENGTH="8,20" >> CHARSET="AlphaNumeric" >> UCASE="Yes" >> RETURNVARIABLE="pword"> >> >> That will generate a password between 8 and 20 characters long with >> > numbers > >> and lower and uppercase letters and store it in a variable called 'pword' >> (you can change it to whatever you want) >> >> The link again... >> http://acoderslife.com/tutorials/index.cfm?act=t&cid=1&tid=2 >> >> copy that code and save it in a file called random_pass.cfm and put it in >> your custom tag directory (or in the application root somewhere) >> >> >> > > -- http://www.cjordan.info ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Create robust enterprise, web RIAs. Upgrade & integrate Adobe Coldfusion MX7 with Flex 2 http://ad.doubleclick.net/clk;56760587;14748456;a?http://www.adobe.com/products/coldfusion/flex2/?sdid=LVNU Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:264745 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4

