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