MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Replace

  • To: mathgroup at smc.vnet.net
  • Subject: [mg121117] Re: Replace
  • From: Armand Tamzarian <mike.honeychurch at gmail.com>
  • Date: Mon, 29 Aug 2011 03:47:51 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <j35am1$og8$1@smc.vnet.net> <j37p96$4lk$1@smc.vnet.net>

On Aug 28, 6:09 pm, Peter Pein <pet... at dordos.net> wrote:
> Am 27.08.2011 14:22, schrieb Armand Tamzarian:
> ...
>
> > Doh! you wanted "|" not "/"
>
> > It still looks like using Part will give the fastest solution (on my
> > system at least, 8.0.1 OS X 10.6.8)
>
> > tmp = RandomInteger[{1, 20}, {20000, 2}];
>
> > Timing[tmp /. {x_, y_} :> x | y;]
>
> > Timing[Alternatives @@@ tmp;]
>
> > Timing[Thread[tmp[[All, 1]] | tmp[[All, 2]]];]
>
> > Mike
>
> Transpose seems to be even a bit faster than Part:
>
> In[1]:= tmp = RandomInteger[{1, 20}, {2000000, 2}];
> {t, r} = Transpose[{
>            Timing[tmp /. {x_, y_} :> x | y],
>            Timing[Apply[Alternatives, tmp, {1}]],
>            Timing[Thread[tmp[[All,1]] | tmp[[All,2]]]],
>            Timing[Thread[Alternatives @@ Transpose[tmp]]]}
>         ];
> t
> SameQ @@ r
>
> Out[3]= {1.56,0.764,0.624,0.531}
> Out[4]= True

After I posted my solution I realized that the timing would most
likely differ if the list contained mixed types, i.e. not packed.

Apply becomes the fastest method in that case (incl. Peter's
solution):

tmp = RandomInteger[{1, 20}, {200000, 2}];
tmp[[1, 1]] = 1.0;
{t, r} = Transpose[{Timing[tmp /. {x_, y_} :> x | y],
    Timing[Apply[Alternatives, tmp, {1}]],
    Timing[Thread[tmp[[All, 1]] | tmp[[All, 2]]]],
    Timing[Thread[Alternatives @@ Transpose[tmp]]]}];
t
SameQ @@ r

Mike




  • Prev by Date: Defective Mesh lines in ContourPlot3D
  • Next by Date: CDF file works at home, not when posted on WordPress
  • Previous by thread: Re: Replace
  • Next by thread: need a quicker method for SquaresR func