Skip to content

Instantly share code, notes, and snippets.

@boughtonp
Created April 15, 2011 19:46
Show Gist options
  • Save boughtonp/922346 to your computer and use it in GitHub Desktop.
Save boughtonp/922346 to your computer and use it in GitHub Desktop.
<cfsilent>
<cfapplication name="Test_StringConcat" />
<cfif NOT StructKeyExists(application,'counter')>
<cfset application.counter = 0 />
<cfset application.m0_total = 0 />
<cfset application.m1_total = 0 />
<cfset application.m2_total = 0 />
<cfset application.m3_total = 0 />
</cfif>
<cfset application.counter++ />
<cfset qryData = QueryNew("invoicenum,comment")/>
<cfloop index="i" from=1 to=50000 >
<cfset R = QueryAddRow(qryData) />
<cfset qryData.invoicenum[R] = RandRange(0,50000) />
<cfset qryData.comment[R] = RandRange(0,50000) />
</cfloop>
<cfset m0_start = getTickCount() />
<cfset m0_string = ArrayNew()>
<cfset ArrayAppend(m0_string,"invoicenum,comment") />
<cfloop query="qryData">
<cfset ArrayAppend( m0_string , qryData.invoicenum&","&qryData.comment ) />
</cfloop>
<cfset m0_string = ArrayToList(m0_string,"<br>") & "<br>" />
<cfset m0_time = getTickCount()-m0_start />
<cfset application.m0_total += m0_time />
<cfset application.m0_average = application.m0_total/application.counter />
<cfset m1_start = getTickCount() />
<cfset m1_string = createObject("java","java.lang.StringBuffer")>
<cfset m1_string.append("invoicenum,comment" & "<br>" )>
<cfloop query="qryData">
<cfset m1_string.append(qryData.invoicenum & "," & qryData.comment & "<br>") />
</cfloop>
<cfset m1_string = m1_string.toString() />
<cfset m1_time = getTickCount()-m1_start />
<cfset application.m1_total += m1_time />
<cfset application.m1_average = application.m1_total/application.counter />
<cfset m2_start = getTickCount() />
<cfset m2_string = createObject("java","java.lang.StringBuffer")/>
<cfset m2_string.append("invoicenum,comment<br>") />
<cfloop query="qryData">
<cfset m2_string.append("#qryData.invoicenum#,#qryData.comment#<br>")/>
</cfloop>
<cfset m2_string = m2_string.toString() />
<cfset m2_time = getTickCount()-m2_start />
<cfset application.m2_total += m2_time />
<cfset application.m2_average = application.m2_total/application.counter />
<cfset m3_start = getTickCount() />
<cfsavecontent variable="m3_string"><cfoutput>invoicenum,comment<br><!---
---><cfloop query="qryData"><!---
--->#qryData.invoicenum#,#qryData.comment#<br><!---
---></cfloop></cfoutput></cfsavecontent>
<cfset m3_time = getTickCount()-m3_start />
<cfset application.m3_total += m3_time />
<cfset application.m3_average = application.m3_total/application.counter />
</cfsilent>
<cfoutput>
<p>Records: #qryData.recordcount#</p>
<p>Number of executions: #application.counter#</p>
<hr/>
<table>
<thead>
<tr>
<th>Method
<th>This Time
<th>Average
</thead>
<tbody>
<tr>
<td>m0 - ArrayAppend
<td> #m0_time#
<td> #application.m0_average#
<tr>
<td>m1 - StringBuffer
<td> #m1_time#
<td> #application.m1_average#
<tr>
<td>m2 - StringBuffer Alt
<td> #m2_time#
<td> #application.m2_average#
<tr>
<td>m3 - SaveContent
<td> #m3_time#
<td> #application.m3_average#
</tbody>
</table>
</cfoutput>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment