# Why is ListPlot so slow here?

While examining How can I monitor the progress of a Plot? I was surprised to discover that in some cases ListPlot in version 10.0 and 10.1 is orders of magnitude slower than it is in version 7. This is not rendering time but generation of the Graphics itself. Here is an example.

dat = Table[{x, y}, {x, 200}, {y, RandomReal[9, 500]}];

lp = ListPlot[dat, ImageSize -> 600]


Rendering this plot takes only ~0.08 second according to EvaluationCompletionAction -> "ShowTiming" as seen by evaluating lp separately. However generating lp (in 10.1) is quite slow:

ListPlot[dat] // RepeatedTiming // First

2.02


This takes only 0.018 second in version 7. Why is 10.1 two orders of magnitude slower?

David Skulsky reports these AbsoluteTiming results:

MacBook Air: v8 2.1 sec, v9 0.43 sec, v10 3.6 sec.

Apparently the problem is not limited to v10 though it is most severe there. Should this not be a simple operation and much faster than this as indeed it was in version 7?

## First attempt at analysis

Since no useful explanation had yet been provided I thought I would see if I could learn anything with a Trace. What I learned is that the sheer size of Trace is comically, exasperatingly large:

bigTrace = Trace[ListPlot[dat]];

ByteCount[bigTrace]

5728324392


A five and a half gigabyte trace? Really? I'll keep trying to learn more but that's just depressing. Can this be considered a bug? Someone please tell me this has been fixed after version 10.1.

• Intel is partnering with WR – Dr. belisarius May 29 '15 at 17:03
• @belisarius I fear I am missing out on your clever humor; is Intel also getting slower? (Sorry to have to ask for an explanation and spoil the joke.) – Mr.Wizard May 29 '15 at 17:04
• @Mr.Wizard: I don't have v7 any longer, but here are my numbers on my pokey MacBook Air: v8 2.1 sec, v9 0.43 sec, v10 3.6 sec. I used lp=ListPlot[dat];//AbsoluteTiming since it appears RepeatedTiming wasn't available until v10 (?). Anyway, it looks like you're correct--this may not be v10-specific. – Cassini May 29 '15 at 17:19
• For reference creating essentially the exact same plot with Graphics/Point takes 0.0005 seconds (both versions..). – george2079 May 29 '15 at 17:23
• In version 10.1, I get a reduction in the timing by a factor of 2 simply by adding Joined->True to ListPlot. In version 8, the same change reduces the timing almost ten-fold! Apparently, it's harder to make points than to draw lines. Who would have thought... Same thing happens when I use ListLinePlot instead of ListPlot. – Jens May 30 '15 at 3:44

I'm not sure how accurate this is, but it's a start for analysis at least.

I wrote a timed trace function:

TimedTrace[code_] :=
With[{data =
Reap[
Quiet@TraceScan[
Sow[AbsoluteTime[] -> #] &, code, ___,
Sow[AbsoluteTime[]] &]
][[2, 1]]},
Block[{stack = {}, step = 1, results = <||>},
Table[
If[Length@cur != 2,
results[First@Last@stack] =
Abs[(cur - First@Last@Last@stack)] -> Last@Last@Last@stack;
stack = Delete[stack, -1],
AppendTo[stack, {step, cur}]
]; step++,
{cur, data}
];
KeySort@results
]
];
TimedTrace~SetAttributes~HoldFirst


which was nowhere near fast enough to analyze the call proper, so I made a tiny version of the data:

dat2 = Table[{x, y}, {x, 2}, {y, RandomReal[9, 5]}];


which takes about .025 seconds to run.

Ran a trace:

trData = TimedTrace[ListPlot[dat2, ImageSize -> 600]];


Took a few seconds to run (owing to all the Sow calls I think). Thing is huge:

In[315]:= trData // Length

Out[315]= 90435


Tried to find calls that took a while:

0.111324->(SystemProtoPlotDumptheme$19304=ChartingResolvePlotTheme[SystemProtoPlotDumpplottheme$19304,ListPlot])
0.111292->ChartingResolvePlotTheme[SystemProtoPlotDumpplottheme$19304,ListPlot] 0.111257->ChartingResolvePlotTheme[Automatic,ListPlot] 0.111248->ChartingResolvePlotTheme[Automatic,SymbolName[ListPlot]] 0.111199->ChartingResolvePlotTheme[Automatic,ListPlot] 0.111189->ChartingResolvePlotTheme[SymbolName[Automatic],ListPlot] 0.111141->ChartingResolvePlotTheme[Automatic,ListPlot] 0.111130->ThemesmakeThemeMethodOption[ThemesSortRulesAndExtract[Join[SystemPlotThemeDumpresolvePlotTheme[Automatic,ListPlot],ThemesDefaultStyles[ListPlot]]],ListPlot] 0.101492->(SystemProtoPlotDumpplotstyle$19304=ChartingcustomStyle[SystemProtoPlotDumpplotstyle$19304,SystemProtoPlotDumpdefaultstyle$19304,SystemProtoPlotDumplength$19304,BaseStyle->SystemProtoPlotDumpbasestyle$19304])
0.101461->ChartingcustomStyle[SystemProtoPlotDumpplotstyle$19304,SystemProtoPlotDumpdefaultstyle$19304,SystemProtoPlotDumplength$19304,BaseStyle->SystemProtoPlotDumpbasestyle$19304]
0.101327->ChartingcustomStyle[Automatic,{Directive[,AbsoluteThickness[1.6],3.690587378691127*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378694657*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378699184*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378703964*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378708102*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378711855*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378715402*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378718887*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378722316*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378725677*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378729106*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378732568*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378737444*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378742241*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378746251*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]]},2,BaseStyle->{}]
0.101309->Module[{ChartingCommonDumpbasestyle$},{ChartingCommonDumpbasestyle$}=OptionValue[{BaseStyle->{}},{BaseStyle}];ChartinggetPlotStyles[ChartingCommonDumpbaseStyleSolver[ChartingCommonDumpbasestyle$,{Directive[,AbsoluteThickness[1.6],3.690587378691127*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378694657*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378699184*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378703964*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378708102*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378711855*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378715402*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378718887*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378722316*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378725677*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378729106*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378732568*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378737444*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378742241*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378746251*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]]}]][2,Automatic]] 0.101276->({ChartingCommonDumpbasestyle$19370}=OptionValue[{BaseStyle->{}},{BaseStyle}];ChartinggetPlotStyles[ChartingCommonDumpbaseStyleSolver[ChartingCommonDumpbasestyle$19370,{Directive[,AbsoluteThickness[1.6],3.690587378691127*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378694657*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378699184*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378703964*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378708102*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378711855*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378715402*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378718887*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378722316*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378725677*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378729106*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378732568*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378737444*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378742241*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378746251*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]]}]][2,Automatic]) 0.101163->ChartinggetPlotStyles[ChartingCommonDumpbaseStyleSolver[ChartingCommonDumpbasestyle$19370,{Directive[,AbsoluteThickness[1.6],3.690587378691127*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378694657*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378699184*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378703964*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378708102*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378711855*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378715402*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378718887*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378722316*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378725677*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378729106*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378732568*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378737444*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378742241*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587378746251*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]]}]][2,Automatic]
0.123557->(SystemProtoPlotDumptheme$19380=ChartingResolvePlotTheme[SystemProtoPlotDumpplottheme$19380,ListPlot])
0.123497->ChartingResolvePlotTheme[SystemProtoPlotDumpplottheme$19380,ListPlot] 0.123456->ChartingResolvePlotTheme[Automatic,ListPlot] 0.123441->ChartingResolvePlotTheme[Automatic,SymbolName[ListPlot]] 0.123386->ChartingResolvePlotTheme[Automatic,ListPlot] 0.123372->ChartingResolvePlotTheme[SymbolName[Automatic],ListPlot] 0.123318->ChartingResolvePlotTheme[Automatic,ListPlot] 0.123302->ThemesmakeThemeMethodOption[ThemesSortRulesAndExtract[Join[SystemPlotThemeDumpresolvePlotTheme[Automatic,ListPlot],ThemesDefaultStyles[ListPlot]]],ListPlot] 0.103445->(SystemProtoPlotDumpplotstyle$19380=ChartingcustomStyle[SystemProtoPlotDumpplotstyle$19380,SystemProtoPlotDumpdefaultstyle$19380,SystemProtoPlotDumplength$19380,BaseStyle->SystemProtoPlotDumpbasestyle$19380])
0.103403->ChartingcustomStyle[SystemProtoPlotDumpplotstyle$19380,SystemProtoPlotDumpdefaultstyle$19380,SystemProtoPlotDumplength$19380,BaseStyle->SystemProtoPlotDumpbasestyle$19380]
0.103242->ChartingcustomStyle[Automatic,{Directive[,AbsoluteThickness[1.6],3.690587379138477*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379141967*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379145435*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379149015*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379152376*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379155806*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379160336*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379165260*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379169506*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379173127*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379176497*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379180044*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379183421*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379186882*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379190351*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]]},2,BaseStyle->{}]
0.103222->Module[{ChartingCommonDumpbasestyle$},{ChartingCommonDumpbasestyle$}=OptionValue[{BaseStyle->{}},{BaseStyle}];ChartinggetPlotStyles[ChartingCommonDumpbaseStyleSolver[ChartingCommonDumpbasestyle$,{Directive[,AbsoluteThickness[1.6],3.690587379138477*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379141967*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379145435*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379149015*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379152376*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379155806*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379160336*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379165260*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379169506*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379173127*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379176497*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379180044*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379183421*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379186882*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379190351*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]]}]][2,Automatic]] 0.103180->({ChartingCommonDumpbasestyle$19448}=OptionValue[{BaseStyle->{}},{BaseStyle}];ChartinggetPlotStyles[ChartingCommonDumpbaseStyleSolver[ChartingCommonDumpbasestyle$19448,{Directive[,AbsoluteThickness[1.6],3.690587379138477*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379141967*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379145435*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379149015*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379152376*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379155806*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379160336*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379165260*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379169506*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379173127*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379176497*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379180044*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379183421*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379186882*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379190351*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]]}]][2,Automatic]) 0.103049->ChartinggetPlotStyles[ChartingCommonDumpbaseStyleSolver[ChartingCommonDumpbasestyle$19448,{Directive[,AbsoluteThickness[1.6],3.690587379138477*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379141967*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379145435*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379149015*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379152376*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379155806*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379160336*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379165260*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379169506*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379173127*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379176497*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379180044*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379183421*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379186882*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]],Directive[,AbsoluteThickness[1.6],3.690587379190351*10^9->(Sow[#1,ChartingCommonDumphead[#1]]&)/@Reverse[ChartingCommonDumpnew]]}]][2,Automatic]


Obviously all those timings are off as there's no way these took that long. They're probably capturing other stuff, given the shoddy way I wrote the tracer, so let's recalculate the timings for them:

0.111324->0.004826
0.111292->0.00417
0.111257->0.003695
0.111248->0.003625
0.111199->0.00341
0.111189->0.003539
0.111141->0.003517
0.111130->0.003444
0.101492->0.000976
0.101461->0.000876
0.101327->0.000755
0.101309->0.00073
0.101276->0.00075
0.101163->0.000722
0.123557->0.003747
0.123497->0.00333
0.123456->0.003595
0.123441->0.003322
0.123386->0.003348
0.123372->0.003558
0.123318->0.0033
0.123302->0.003568
0.103445->0.001011
0.103403->0.000882
0.103242->0.000744
0.103222->0.00074
0.103180->0.000725
0.103049->0.00072


LHS is what the original timing was, RHS is the First@AbsoluteTiming[expr]. Note that all of these take way too long to be called as often as they are, particularly given how tiny the data was.

I think some of these calls are duplicates as the Total of the RHS is .067 but they're still a big time-suck.

Also note that they're mostly for resolving styling questions.

• Thanks for your answer. I will need time to examine this. No doubt plot themes are a factor here, but I think not the only factor. How do your timings change if you use PlotTheme -> None? – Mr.Wizard Dec 13 '16 at 10:37