如何使用MT模板语言处理大量代码?

时间:2013-04-13 00:15:42

标签: timing performance movabletype benchmarking

通常在开发Movable Type模板时,我想出了多种方法来生成相同的结果,并且好奇哪个更有效。或者,我只是想知道事情需要多长时间,例如生成搜索结果。

是否有一种简单的方法可以使用模板标签记录处理时间或其他计时策略而无需外部工具?

2 个答案:

答案 0 :(得分:3)

或者你可以使用调试模式8,如下所述:http://www.movabletype.org/documentation/developer/plugins/debug-mode.html

还有一个选项(在与调试模式相同的“常规设置”面板中)激活具有阈值的性能日志。

答案 1 :(得分:1)

这是我提出的方法并且已经使用了一段时间。它使用标准的Movable Type模板语言报告时间到最接近的秒数。

要计算一大块模板代码,请创建一个名为“timing”的系统或博客级模板模块:

<mt:If name="part" eq="start">
  <$mt:Date format="%H" setvar="hours"$>
  <$mt:Date format="%M" setvar="minutes"$>
  <$mt:Date format="%S" setvar="seconds"$>
  <$mt:Var name="hours" op="*" value="3600" setvar="hourseconds"$>
  <$mt:Var name="minutes" op="*" value="60" setvar="minuteseconds"$>
  <$mt:Var name="totalseconds" value="$hourseconds"$>
  <$mt:Var name="totalseconds" op="+" value="$minuteseconds" setvar="totalseconds"$>
  <$mt:Var name="totalseconds" op="+" value="$seconds" setvar="totalseconds"$>
  <$mt:Var name="totalseconds" setvar="startseconds"$>
<mt:Else name="part" eq="stop">
  <$mt:Date format="%H" setvar="hours"$>
  <$mt:Date format="%M" setvar="minutes"$>
  <$mt:Date format="%S" setvar="seconds"$>
  <$mt:Var name="hours" op="*" value="3600" setvar="hourseconds"$>
  <$mt:Var name="minutes" op="*" value="60" setvar="minuteseconds"$>
  <$mt:Var name="totalseconds" value="$hourseconds"$>
  <$mt:Var name="totalseconds" op="+" value="$minuteseconds" setvar="totalseconds"$>
  <$mt:Var name="totalseconds" op="+" value="$seconds" setvar="totalseconds"$>
  <$mt:Var name="totalseconds" setvar="finishseconds"$>
  <$mt:Var name="finishseconds" op="-" value="$startseconds" setvar="elapsedseconds">
  <!-- This search completed in <mt:If name="elapsedseconds" eq="0">less than 1 second<mt:Else name="elapsedseconds" eq="1">1 second<mt:Else><$mt:Var name="elapsedseconds"$> seconds</mt:If>. -->
</mt:If>

然后,在一个模板中,你想要计算时间,将这两行放在感兴趣的块的开头和结尾:

<$mt:Include module="timing" part="start"$>
  <mt:Ignore>Code I want to time</mt:Ignore>
<$mt:Include module="timing" part="stop"$>

如果要在输出中表示开始计时,您当然可以在“开始”部分添加一行输出。