3

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

4

3 回答 3

11

采用

<cfset var startTicks = GetTickCount() />
<!--- code to benchmark --->
<cfset var ticksTaken = GetTickCount() - startTicks />

为了更好的控制。请注意,刻度是 ms,除非有差异(绝对值没有意义),否则它是无关紧要的。

于 2013-04-03T09:01:35.190 回答
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>

我有一个项目依赖于客户订阅的大量外部数据。我将各个进程的所有处理时间保存到会话结构中,这样我就可以查看是我还是导致速度变慢的第 3 方 Web 服务之一。如果其中一项 Web 服务出现故障,我会提醒客户,以便他们决定是否要选择其他服务。

于 2013-04-03T10:46:34.257 回答
2

如果可以的话,这样做会很棘手,并试图从圆孔中取出一个方钉。但是,您可以轻松地使用getTickCount()...好吧...手术前后的滴答计数,两者之间的差异是您的持续时间。然后你可以用你想要的做。

于 2013-04-03T09:01:39.947 回答