Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2000
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2000

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

Search the Archive

Re: Cases, Throw, and Catch

  • To: mathgroup at smc.vnet.net
  • Subject: [mg24203] Re: [mg24182] Cases, Throw, and Catch
  • From: Andrzej Kozlowski <andrzej at tuins.ac.jp>
  • Date: Fri, 30 Jun 2000 01:57:30 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

This is indeed fast. However compare it with:

xtab = Table[x, {10^6}];
In[2]:=
Catch @ Dog[xtab, Throw[{x}], Infinity, 1] // Timing

Out[2]=
{0. Second, {x}}

As you can see the not very well known function Dog is pretty fast too:)
Seriously, the point is that Cases plays no role in your Catch and Throw
example. All that happens is that when the arguments of Cases (or Dog) are
evaluated x is Thrown and caught.

Another demonstration:


In[3]:=
Cases[xtab, y, Infinity, 1] // Timing
Out[3]=
{1.38333 Second, {}}
In[4]:=
Catch @ Cases[xtab, Throw[{y}], Infinity, 1] // Timing
Out[4]=
{0. Second, {y}} 


-- 
Andrzej Kozlowski
Toyama International University, JAPAN

For Mathematica related links and resources try:
<http://www.sstreams.com/Mathematica/>


on 6/29/00 11:51 AM, Mark Fisher at me.fisher at atl.frb.org wrote:

> I just noticed that it is much faster to Throw and Catch from Cases than
> to have Cases return the first match on its own. Does anyone know why
> this is so and what, if anything, is to be learned?
> 
> Here is the example:
> 
> In[1]:=
> xtab = Table[x, {10^6}];
> 
> In[2]:=
> Cases[xtab, x, Infinity, 1] // Timing
> 
> Out[2]=
> {0.172 Second, {x}}
> 
> In[3]:=
> Catch @ Cases[xtab, Throw[{x}], Infinity, 1] // Timing
> 
> Out[3]=
> {0. Second, {x}}
> 
> In[4]:=
> ytab = Append[xtab, y];
> 
> In[5]:=
> Cases[ytab, y, Infinity, 1] // Timing
> 
> Out[5]=
> {0.437 Second, {y}}
> 
> In[6]:=
> Catch @ Cases[ytab, Throw[{y}], Infinity, 1] // Timing
> 
> Out[6]=
> {0. Second, {y}}
> 
> --Mark.
> 
> Mark Fisher
> Economic Advisor
> Research Department
> Federal Reserve Bank of Atlanta
> Atlanta, GA 30303
> 404-521-8757 (voice)
> 404-521-8810 (fax)
> mark.fisher at atl.frb.org
> 
> personal web page: www.markfisher.net
> 




  • Prev by Date: Re: Finding the inverse of a function?
  • Previous by thread: RE: Cases, Throw, and Catch
  • Next by thread: Meijer G Function