Profile Tutorial
The functions in the Instrumentation` context provide support for profiling WL code.
| ProfileInstrument[inputDir,outputDir] | instrument WL code for profiling |
| ProfileEvaluate[expr] | evaluate expr to be profiled |
| ProfileProcess[profilingData] | process profiling data |
| ProfileReport[reportData] | generate a report |
Needs["Instrumentation`"]Quiet[DeleteDirectory[FileNameJoin[{$TemporaryDirectory, "Collatz-example"}], DeleteContents -> True], {DeleteDirectory::nodir}];
tmp = CreateDirectory[FileNameJoin[{$TemporaryDirectory, "Collatz-example"}]];paclet = PacletFind["Instrumentation"][[1]];file = File[paclet["AssetLocation", "Collatz"]];CreateDirectory[FileNameJoin[{tmp, "Collatz-orig", "Collatz"}], CreateIntermediateDirectories -> True];
CopyFile[file, FileNameJoin[{tmp, "Collatz-orig", "Collatz", "Collatz.m"}]]ProfileInstrument[FileNameJoin[{tmp, "Collatz-orig", "Collatz"}], FileNameJoin[{FileNameJoin[{tmp, "Collatz-profile", "Collatz"}]}]]PrependTo[$Path, FileNameJoin[{tmp, "Collatz-profile", "Collatz"}]];FindFile["Collatz`"]Needs["Collatz`"]{res, profileData} = ProfileEvaluate[Collatz[27]];resprofileDatareportData = ProfileProcess[profileData];ProfileReport[reportData]