Re: Slow Show/Graphics in v6.0
- To: mathgroup at smc.vnet.net
- Subject: [mg80941] Re: Slow Show/Graphics in v6.0
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Thu, 6 Sep 2007 05:21:18 -0400 (EDT)
- Organization: Uni Leipzig
- References: <fbljvd$qf5$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
Hi,
for the first statement try
Timing[
With[{mr = 350, mt = 350},
xar = Table[((ir - 1.)/(mr - 1.))*
Cos[Pi*((it - 1.)/(mt - 1.))], {it, 1, mt}, {ir, 1, mr}];
yar = Table[((ir - 1.)/(mr - 1.))*
Sin[Pi*((it - 1.)/(mt - 1.))], {it, 1, mt}, {ir, 1, mr}];
]]
and it will be faster.
For the second part, Timing[] is absolute wrong, because the time is
spend by the rendering of the Frontend and Timing[] measure only the
time spend by the kernel. Anyway
Timing[
With[{mr = 350, mt = 350},
data = Table[{
((ir - 1.)/(mr - 1.))*Cos[Pi*((it - 1.)/(mt - 1.))],
((ir - 1.)/(mr - 1.))*Sin[Pi*((it - 1.)/(mt - 1.))]}, {it, 1,
mt}, {ir, 1, mr}];
]]
Timing[
i = 0;
idx = Map[++i &, data, {2}];
gc = GraphicsComplex[Flatten[data, 1],
Line[Flatten[
Drop[Drop[#, -1] & /@
Transpose[{idx, RotateLeft [idx],
RotateLeft /@ RotateLeft [idx], RotateLeft /@ idx}, {3, 1,
2}], -1], 1]]];
Graphics[{Hue[0.7], AbsoluteThickness[0.1], gc},
PlotRange -> {{-1, 1}, {0, 1}}, AspectRatio -> 1/2, Axes -> True,
DisplayFunction -> $DisplayFunction, ImageSize -> 800]]
will be 3 times faster in the kernel.
But the true effect comes from the rendering in the Frontend.
Regards
Jens
Alex Shvydky wrote:
> Hello,
>
> Just wanted to share my puzzlement (utter disappointment/
> frastration) with a ridiculously slow speed of Show/Graphics
> routines in the v6.0 of Mathematica as compared to 5.2,
> which to me at this point makes v6.0 plain unusable.
>
> Working with hydrodynamic simulations I need to
> visualize the computational grid. So I wrote
> simple Mathematica routines to draw a simulation grid.
> In 5.2 they worked fabulously for the past couple of
> years.
>
> Here's an example.
> First, set up two 2dimensional x- and y-coordinate
> arrays.
>
> Timing[
> mr = 350;
> mt = 350;
> xar = Table[((ir - 1.)/(mr - 1.))*Cos[Pi*((it - 1.)/(mt - 1.))],
> {it, 1, mt}, {ir, 1, mr}];
> yar = Table[((ir - 1.)/(mr - 1.))*Sin[Pi*((it - 1.)/(mt - 1.))],
> {it, 1, mt}, {ir, 1, mr}];
> ]
>
> In v6.0 it took
> Out[3]= {2.312, Null}
> In v5.2 it took
> {0.281 Second, Null}
>
> Which is an order of magnitude difference, but hold on.
> Now let's plot the mesh by simply constructing table
> of edges of all the cells (I am aware that the algorithm
> below is very unoptimized and can be made faster etc. etc.
> It was not my intention to discuss here what should be the
> fastest algorithm to plot a 2-d mesh,
> nor was it my intention to debate the issue why one
> would need to plot such a large mesh in the first place...,
> but rather to compare the execution time for an IDENTICAL
> code on v6.0 and v5.2. and get some confirmation/explanation
> of such a suspiciously slow execution speed!).:
>
> Timing[
> Show[
> Graphics[{Hue[0.7], AbsoluteThickness[0.1],
> Table[{Line[{{xar[[it,ir]], yar[[it,ir]]},
> {xar[[it,ir + 1]],yar[[it,ir + 1]]},
> {xar[[it + 1,ir + 1]], yar[[it + 1,ir + 1]]},
> {xar[[it + 1,ir]], yar[[it + 1,ir]]}}]},
> {ir, 1, mr - 1}, {it, 1, mt - 1}]
> }],
> PlotRange -> {{-1, 1}, {0, 1}}, AspectRatio -> 1/2, Axes -> True,
> DisplayFunction -> $DisplayFunction, ImageSize -> 800]]
>
> While the timing as, it is returned by the Timing[] function,
> is smaller in the v6.0:
> {1.703, <Here goes the actual graphics>}
> vs.
> {2.094 Second, -Graphics-}
> in v5.2
>
>
> The actual cell evaluation time in v.6.0 is 124.11 seconds
> vs. 2.22 seconds in v 5.2. ???!!!!!!!
>
> Could anybody please confirm this. Also it would be helpful
> if someone from Wolfram Research would explain if
> that is intended (unavoidable) by design or maybe
> a simple setting (which I am unaware of) or a future patch
> will be able to fix it.
>
> Also, it is horribly slow to resize the above graphics
> in v5.2 you just grab the corned and drag. In v6.0 you
> must do it 10-100 times slower (is it possible
> that I just have a very poor graphics card?).
>
>
> Thanks,
> Alex Shvydky
>