On Linux, you can record the profile with perf
and inspect it with pprof
.
Pre-requisites:
- Linux
perf
, commonly found in thelinux-tools-generic
package. - go, for installing
pprof
. - bazel, for installing
perf_to_profile
.
First, install pprof
with:
go get -u github.com/google/pprof
Then, build and install perf_to_profile
:
git clone https://github.com/google/perf_data_converter
cd perf_data_converter
bazel build -c opt src:perf_to_profile
sudo cp bazel-bin/src/perf_to_profile /usr/local/bin/
Finally, in your libsass repository, clone and build sassc
:
git clone https://github.com/sass/sassc.git
make sassc
sudo perf record sassc/bin/sassc input.scss > /dev/null && sudo chown $USER:$USER perf.data
This will create a perf.data
file that you can vizualize with pprof
.
A web server with various visualization options:
pprof -http=localhost:3232 sassc/bin/sassc perf.data
Simple text output:
pprof -text sassc/bin/sassc perf.data
Example output:
flat flat% sum% cum cum%
24651348 6.97% 6.97% 24651348 6.97% [[kernel.kallsyms]]
20746241 5.87% 12.84% 20746241 5.87% Sass::SharedPtr::decRefCount
18401663 5.20% 18.04% 20420896 5.78% __libc_malloc
15205959 4.30% 22.34% 15205959 4.30% [libc-2.27.so]
12974307 3.67% 26.01% 14070189 3.98% _int_malloc
10958857 3.10% 29.11% 10958857 3.10% Sass::SharedPtr::incRefCount
9837672 2.78% 31.89% 18433250 5.21% cfree