LuaJIT 2.1 的 git 仓库中已经提供了一个集成的低开销的统计的 Profiler 。详细介绍请看这里。
下面是一些使用的例子:
$ luajit -jp spectralnorm.lua 4000
53% A
24% Av
23% Atv
$ luajit -jp=s spectralnorm.lua 4000
53% A
<- 50% Av
<- 50% Atv
24% Atv
<- 100% AtAv
23% Av
<- 100% AtAv
$ luajit -jp=l2 spectralnorm.lua 4000
33% spectralnorm.lua:21 < spectralnorm.lua:28
33% spectralnorm.lua:13 < spectralnorm.lua:27
13% spectralnorm.lua:7 < spectralnorm.lua:13
12% spectralnorm.lua:7 < spectralnorm.lua:21
5% spectralnorm.lua:6 < spectralnorm.lua:21
4% spectralnorm.lua:6 < spectralnorm.lua:13
$ luajit -jp=a spectralnorm.lua 4000
====== spectralnorm.lua ======
<at> <at> 3 <at> <at>
| -- contributed by Mike Pall
|
| local function A(i, j)
10% | local ij = i+j-1
25% | return 1.0 / (ij * (ij-1) * 0.5 + i)
| end
|
| local function Av(x, y, N)
| for i=1,N do
| local a = 0
32% | for j=1,N do a = a + x[j] * A(i, j) end
| y[i] = a
| end
| end
<at> <at> 18 <at> <at>
| local function Atv(x, y, N)
| for i=1,N do
| local a = 0
32% | for j=1,N do a = a + x[j] * A(j, i) end
| y[i] = a
| end
| end
暂无更多评论