efficiency question

Hal Daume III [email protected]
Fri, 8 Feb 2002 16:24:04 -0800 (PST)


This doesn't seem to make a difference, eithr (I just tried it).

 - Hal

--
Hal Daume III

 "Computer science is no more about computers    | [email protected]
  than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume

On Fri, 8 Feb 2002, Konst Sushenko wrote:

> Did you try strict +/-? In (,). I am just curious.
> 
> > -----Original Message-----
> > From: Hal Daume III [mailto:[email protected]] 
> > Sent: Friday, February 08, 2002 3:53 PM
> > To: Konst Sushenko
> > Cc: Jorge Adriano; [email protected]
> > Subject: RE: efficiency question
> > 
> > 
> > I've tried using a strict fold:
> > 
> > foldl' f a []     = a
> > foldl' f a (x:xs) = (foldl' f $! f a x) xs
> > 
> > but that has no effect (or minimal effect).
> > 
> > --
> > Hal Daume III
> > 
> >  "Computer science is no more about computers    | [email protected]
> >   than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume
> > 
> > On Fri, 8 Feb 2002, Konst Sushenko wrote:
> > 
> > > > 
> > > > On Friday 08 February 2002 22:14, you wrote:
> > > > > define
> > > > >
> > > > > test1 l =
> > > > >     let s1 = foldr (+) 1 l
> > > > >         s2 = foldr (-) 1 l
> > > > >     in  (s1, s2)
> > > > >
> > > > > test2 l =
> > > > >     let s = foldr (\x (a,b) -> (x+a,x-b)) (1,1) l
> > > > >     in  s
> > > > >
> > > > > why is test1 so much faster than test2 for long lists l (eg
> > > > > [1..1000000])?  replacing foldr with foldl makes it faster 
> > > > (of course),
> > > > > but test2 is still much slower.
> > > > >
> > > > > i *expected* test2 to be much faster because you're only 
> > > > traversing the
> > > > > list once.  presumably the two elements "a" and "b" in 
> > > > test2 could be put
> > > > > in registers and i'd imagine test2 should be faster (it 
> > > > certainly would be
> > > > > if written in c).
> > > > 
> > > > I'd say that's because in the second case you also got to 
> > > > apply the (,), 
> > > > besides the (+)/(-) constructor during the transversing...
> > > > Am I right?
> > > > 
> > > > J.A.
> > > 
> > > My guess is that it is due to the laziness of the 
> > addition/subtraction
> > > in (,)
> > > _______________________________________________
> > > Haskell mailing list
> > > [email protected]
> > > http://www.haskell.org/mailman/listinfo/haskell
> > > 
> > 
> > 
> _______________________________________________
> Haskell mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell
>