我想存储代码在coldfusion变量中执行所花费的时间。 有一个名为cftimer的标记,显示代码执行所花费的时间。 有没有办法将cftimer标签显示的时间存储在变量中?
答案 0 :(得分:10)
使用
<cfset var startTicks = GetTickCount() />
<!--- code to benchmark --->
<cfset var ticksTaken = GetTickCount() - startTicks />
以便更好地控制。注意,滴答是ms,除非是diffing(绝对值没有意义),否则无关。
答案 1 :(得分:5)
正如Adam和MaxH所说,你会想用getTickCount()
计算一个剧本。
getTickCount()不只是用于故障排除,你可以用它做很多很酷的事情。如果您愿意,也可以在onRequest
函数内执行此操作,以便为所有脚本计时,并在需要时对长脚本做出反应。
<cffunction name = "onRequest">
<cfargument name = "targetPage" ...>
<cfset startTime = getTickCount()>
<cfinclude template = "#arguments.targetPage#">
<cfset processTime = getTickCount()-startTime>
<cfif structKeyExists(url,"showTime")>
<cfoutput>The page took #processTime# milliseconds to process</cfoutput>
</cfif>
<!--- you could also do other stuff like record processing times to a db or send alerts if processTime > somevalue --->
</cffunction>
我有一个项目依赖于客户订阅的大量外部数据。我将各个进程的所有处理时间保存到会话结构中,这样我就可以看到它是我还是导致速度变慢的第三方Web服务之一。如果其中一个Web服务陷入困境,我会提醒客户,以便他们决定是否要选择其他服务。
答案 2 :(得分:2)
如果可以的话,这样做会很棘手,并试图从圆孔中取出方形钉。但是你可以很容易地使用getTickCount()
来获取......嗯...操作前后的滴答计数,两者之间的差异就是你的持续时间。然后你可以用你想要的东西。