Marty suggested I try configuring with --enable-more-deterministic,
but that didn't help. I still get huge variations.

Cachegrind causes a big slow-down, e.g. 50x or more. Could that be
affecting something? It hasn't caused problems in the past, though.

One interest data point: my Cachegrind script does two runs for each
Sunspider test, so I can compare two different shells. If I tell it to
run the same shell both times, the before/after results are always the
same for that invocation of the script. But subsequent invocations
will differ. E.g. I'll get 200M/200M, then 118M/118M, then 228M/228M,
etc. I'm not sure what to make of that.

Another data point: timed, native runs of Sunspider only show ~1%
variation, as you'd expect.

Nick


On Sun, Feb 9, 2014 at 3:56 PM, Nicholas Nethercote
<[email protected]> wrote:
> 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
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

Reply via email to