Hi,

For a long time I've had Cachegrind set up to run SunSpider in the
shell. It's really useful being able to see instruction counts at the
level of source code lines when optimizing.

I just tried it today for the first time in a while, and I'm getting
hugely variable results. For example, I ran 3d-cube several times, and
got the following total instruction counts:

119,082,296
88,322,419
47,020,727
57,980,873

I've never seen variation like this before. Normally the counts are
identical or almost identical between runs.

Most of the variation is in generated code, which Cachegrind lumps
into a single bucket -- I've seen it as low as 58M and as high as
119M. The following functions near the top of the profiles also varied
quite a bit.
- DoSetElemFallback()
- _ZL23DefinePropertyOrElementILN2j
s13ExecutionModeE0EEbNS0_19ExecutionModeTraitsIXT_EE20ExclusiveContextTypeEN2JS6
HandleIP8JSObjectEENS6_I4jsidEEPFbP9JSContextS9_SB_NS5_13MutableHandleINS5_5Valu
eEEEEPFbSD_S9_SB_bSG_EjjiNS6_ISF_EEbb (not sure why that wasn't demangled)
- Shape::search()
- TypeMonitorResult()
- DefineNativeProperty()
- ensureDenseElementsNoPackedCheck()

In contrast, functions in the front-end such as getTokenInternal() and
Fold() and NameResolver::resolve() gave identical results for each
run.

Has anyone else seen anything resembling this? I get it with both GCC
and clang builds.

Nick
_______________________________________________
dev-tech-js-engine-internals mailing list
dev-tech-js-engine-internals@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

Reply via email to