你如何检查Phoenix/Elixir/Erlang应用程序的正常运行时间?

Mat*_*att 8 erlang elixir phoenix-framework

你如何检查Phoenix/Elixir/Erlang应用程序的正常运行时间?如果执行:observer.start()并查看"系统"选项卡,则可以在"统计"区域中查看正常运行时间.但我希望能够以编程方式提取该信息并将其包含在报告中.我已经找到了从哪里获取大部分数据,但我没有看到它从哪里获取正常运行时间.

A. *_*rid 12

你可以使用statistics(runtime):

返回有关运行时的信息,以毫秒为单位.

这是Erlang运行时系统中所有线程的运行时间总和,因此可以大于挂钟时间.

或者statistics(wall_clock):

返回有关挂钟的信息.wall_clock可以与运行时相同的方式使用,除了测量实时而不是运行时或CPU时间.

在这两种情况下,您需要在程序开头调用它们以重置其计时器.当你想打印传递的时间时,只需:

{_, Time1} = statistics(runtime).
Run Code Online (Sandbox Code Playgroud)

要么

 {_, Time2} = statistics(wall_clock).
Run Code Online (Sandbox Code Playgroud)

因此,然后你将有时间Time1Time2.有关更多信息,请查看erlang:statistics/1

注意:如果您想要自Erlang VM启动以来经过的总时间,您可以从元组中获取第一个元素:{Total_Time, Time_Since_Last_Call} = statistics(wall_clock).

  • 首先,`runtime`参数对于这个问题没有用,因为它在调度程序的数量上累积,并且如手册页所述,它可能大于挂钟时间.对于这个问题,请使用`wall_clock`.其次,你不必在程序开始时调用它.无论何时调用它,返回的元组的第一个数字是总运行时间.第二个数字是你上次调用`statistics/1`以来的时间.对于这个问题,只需使用第一个数字. (6认同)