@@ -5,11 +5,14 @@ local diag = require 'provider.diagnostic'
55local config = require ' config'
66local ws = require ' workspace'
77local guide = require ' parser.guide'
8+ local vm = require ' vm'
9+ local util = require ' utility'
810
911local path = ROOT / ' script'
1012
1113local uris = {}
1214
15+ files .reset ()
1316fsu .scanDirectory (path , function (path )
1417 if path :extension ():string () ~= ' .lua' then
1518 return
4750
4851local passed = os.clock () - clock
4952print (' 基准全量诊断用时:' , passed )
53+
54+ vm .clearNodeCache ()
55+
56+ local compileDatas = {}
57+
58+ for uri in files .eachFile () do
59+ local state = files .getState (uri )
60+ local clock = os.clock ()
61+ guide .eachSource (state .ast , function (src )
62+ vm .compileNode (src )
63+ end )
64+ compileDatas [uri ] = {
65+ passed = os.clock () - clock ,
66+ uri = uri ,
67+ }
68+ end
69+
70+ local printTexts = {}
71+ for uri , data in util .sortPairs (compileDatas , function (a , b )
72+ return compileDatas [a ].passed > compileDatas [b ].passed
73+ end ) do
74+ printTexts [# printTexts + 1 ] = (' 全量编译耗时:%05.3f [%s]' ):format (data .passed , uri )
75+ if # printTexts >= 10 then
76+ break
77+ end
78+ end
79+
80+ util .revertTable (printTexts )
81+
82+ for _ , text in ipairs (printTexts ) do
83+ print (text )
84+ end
85+
86+ local passed = os.clock () - clock
87+ print (' 基准全量编译用时:' , passed )
0 commit comments