Back in June there was a thread called "CFFILE Performance" about this on
the BlueDragon Interest mailing list that might be helpful to you, Rick.  I
know you're a subscriber and that you probably have those emails handy.  But
for those who don't, you can search the archives of the list here:

http://www.newatlanta.com/c/products/bluedragon/self_help/archiveSearch/show
Search

Josh 

-----Original Message-----
From: Rick Root [mailto:[EMAIL PROTECTED] 
Sent: Thursday, August 17, 2006 11:03 AM
To: CF-Talk
Subject: Performance problem

I have some code that dynamically generates CSV, TAB, and EXCEL (HTML
tables) from a query, and it is running pretty slowly.  A lot slower than
I'd like it to.  Essentially, I set a bunch of variables like START_PAGE,
END_PAGE, START_ROW, END_ROW, START_FIELD, and END_FIELD that allow me to
loop through the query and loop through the list of fields and output the
data in the appropriate format.

I added some debugging code and generating 124 rows took 19 seconds. 
Generating 1416 rows took 309 seconds.  Which means if someone wants to
generate a drop with 5,000 rows, it's gonna take a long freakin' time!

It seems like it shouldn't be that slow.  It's only writing every 100 rows
to disk (the 124 record file was 445KB).  And a couple of cflog statements
indicate that the file write takes less than a second.

Here's the query loop that outputs the rows of data.

<cfloop query="resultSet">
        <cfset fileOutput = fileOutput & START_ROW>
        <cfloop list="#fields#" index="ThisColumn">
                <cfset field = evaluate("resultSet.#ThisColumn#")>
                <cfif field eq "" and format eq "EXCEL"><cfset
field="&nbsp;"></cfif>
                <cfset fileOutput = fileOutput & START_FIELD>
                <cfif format eq "CSV">
                        <cfset fileOutput = fileOutput & csvFormat(field)>
                <cfelse>
                        <cfset fileOutput = fileOutput & FIELD>
                </cfif>
        </cfloop>
        <cfset fileOutput = fileOutput & END_ROW>
        <cfif currentRow MOD 100 is 0>
                <cflog text="writing file #now()#">
                <cffile action="APPEND" 
file="#application.udf.ROOT_DIR#\tools\entityLookup3\drops\#filename#" 
output="#fileOutput#" addnewline="No">
                <cflog text="done writing file  #now()#">
                <cfset fileOutput = "">
        </cfif>
</cfloop>

I suspect that it's the Evaluate() that's running slowly.

Any ideas on how to speed this code up?

Thanks!

Rick



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
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:250178
Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm
Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4

Reply via email to