如何在变量中存储cftimer显示的时间?

时间:2013-04-03 08:39:39

标签: coldfusion coldfusion-9 coldfusion-10 cfml

我想存储代码在coldfusion变量中执行所花费的时间。 有一个名为cftimer的标记,显示代码执行所花费的时间。 有没有办法将cftimer标签显示的时间存储在变量中?

3 个答案:

答案 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()来获取......嗯...操作前后的滴答计数,两者之间的差异就是你的持续时间。然后你可以用你想要的东西。