       Re: Re: functional code

• To: mathgroup at smc.vnet.net
• Subject: [mg4850] Re: [mg4814] Re: functional code
• From: Allan Hayes <hay at haystack.demon.co.uk>
• Date: Thu, 26 Sep 1996 22:42:13 -0400
• Sender: owner-wri-mathgroup at wolfram.com

```At the risk of producing more C-like code (!), here is a further
speed up together with a speed comparison with my code used in Bob
Hall's list --attached. The omission of the n, which accounts for
2/3 of the sped-up, was posted a few hours ago.

The message seems to be:
be aware of all of Mma's programming styles and make use of
special features of the problem.

(*my original code called "hayes" in Robert Hall's list -- attached*)
try1[row_List] :=
Block[{f=1,l = Length[row]},
Table[If[row[[f]]>row[[l]], row[[f++]], row[[l--]]],{n,l}]
]

(*latest code*)
try2[row_List] :=
Block[{f=1,l = Length[row]},
row[[Table[If[row[[f]]>row[[l]], f++, l--], {l}]]]
]

(*timings*)

testrow = Table[Random[],{5000}];

(ans1 = try1[testrow]);//Timing
{4.98333 Second, Null}
(ans2 = try2[testrow]);//Timing
{3.55 Second, Null}

(*check*)
ans1==ans2
True

Allan Hayes
hay at haystack.demon.co.uk

**************
Bob Hall's posting of timings

Here's the times for the various solutions to Richard Gaylord's problem:

In:=
original[row]
Out=
{0.7 Second, Null}

In:=
gaylord[row]
Out=
{2.51667 Second, Null}

In:=
hall[row]
Out=
{3.63333 Second, Null}

In:=
abbott1[row]
Out=
{1.03333 Second, Null}

In:=
abbott2[row]
Out=
{1.13333 Second, Null}

In:=
hayes[row]
Out=
{0.116667 Second, Null}

The most obvious algorithm, using iteration rather than recursion
(original, hayes, and the 2 abbotts,) was the fastest. The most
C-like code was the fastest (hayes.) My code was the least intuitive,
probably the hardest to debug, and the slowest. Oh well....
"I can't hope to be First[], so let me be Last[]."
-Auden, The Age of Anxiety

--
Bob Hall            | "Know thyself? Absurd direction!
rhall2 at gl.umbc.edu  |  Bubbles bear no introspection."  -Khushhal
Khan Khatak

==== [MESSAGE SEPARATOR] ====

```

• Prev by Date: Re: Peter Coffee article
• Next by Date: Using Mma with Visual Basic & Visual C++
• Previous by thread: Re: functional code
• Next by thread: functional code