POV-Ray : Newsgroups : povray.off-topic : Numeric performance Server Time
6 Sep 2024 09:18:01 EDT (-0400)
  Numeric performance (Message 11 to 20 of 26)  
<<< Previous 10 Messages Goto Latest 10 Messages Next 6 Messages >>>
From: Warp
Subject: Re: Numeric performance
Date: 15 Feb 2009 16:35:24
Message: <49988a9c@news.povray.org>
Orchid XP v8 <voi### [at] devnull> wrote:
> OK, well I just wrote a small C program to do the same thing... and it 
> segfaulted at me.

  I give up. For some reason trying to teach you something seems
completely pointless.

-- 
                                                          - Warp


Post a reply to this message

From: Darren New
Subject: Re: Numeric performance
Date: 15 Feb 2009 17:57:22
Message: <49989dd2$1@news.povray.org>
Orchid XP v8 wrote:
> Based in this information, I conceed defeat. I have no idea what's gone 
> wrong here.

I was going to suggest earlier "maybe he's evaluating the stuff lazily and 
doesn't realize it", but then I deleted it half-written thinking "surely I'm 
not going to guess better than Andrew what his Haskell code is doing." :-)

-- 
   Darren New, San Diego CA, USA (PST)
   "Ouch ouch ouch!"
   "What's wrong? Noodles too hot?"
   "No, I have Chopstick Tunnel Syndrome."


Post a reply to this message

From: Darren New
Subject: Re: Numeric performance
Date: 15 Feb 2009 17:59:17
Message: <49989e45$1@news.povray.org>
Warp wrote:
>   I give up. For some reason trying to teach you something seems
> completely pointless.

Now now. He *did* say he got it working. :-)  And you must admit, printf() 
isn't the most intuitive way of printing something.

-- 
   Darren New, San Diego CA, USA (PST)
   "Ouch ouch ouch!"
   "What's wrong? Noodles too hot?"
   "No, I have Chopstick Tunnel Syndrome."


Post a reply to this message

From: Slime
Subject: Re: Numeric performance
Date: 15 Feb 2009 18:26:18
Message: <4998a49a@news.povray.org>
> Er, no. Just tried it with the release version. The numbers are a fraction 
> of a second slower still. Either way, two equivilent formulations of the 
> program have wildly different runtimes.

What's the difference between them?

 - Slime
 [ http://www.slimeland.com/ ]


Post a reply to this message

From: Invisible
Subject: Re: Numeric performance
Date: 16 Feb 2009 04:54:57
Message: <499937f1@news.povray.org>
>>   I give up. For some reason trying to teach you something seems
>> completely pointless.
> 
> Now now. He *did* say he got it working. :-)  And you must admit, 
> printf() isn't the most intuitive way of printing something.

No, it seems Warp is right.

I have conclusively demonstrated that Haskell is many orders of 
magnitude slower than C even for a trivial program.

After all these years of using Haskell, I thought I understood how it 
worked. I read all the papers about all the sophisticated optimisations 
the compiler performs. And I felt sure I knew what I was doing. But, 
clearly, I don't.

I have wasted 4 years of my life on Haskell. It is so beautiful and 
eligant, I wanted it to be the answer, and I blindly believed that it 
would be. Clearly it isn't.

The irony, the sheer irony of it, is that the whole reason I was timing 
this stuff in the first place was that I was just about to reach into 
the source code of the compiler to try to tweak its performance. It is 
obvious to me now that I shouldn't be let anywhere near an actual 
compiler. Better to leave that to the real experts.

It seems I've been deluding myself. All these years, I thought I was 
some kind of master programmer. What, just because I've been writing 
programs for 20 years, that makes me an expert? Just because I wrote 
some trivial raytracer and it kinda worked, that means I'm good at 
programming? Who the hell am I kidding?

I am now the laughing stock of this forum. Nobody is ever doing to take 
anything I say about Haskell seriously ever again. Even better, when I 
asked about this in the Haskell forum, I got yelled at for being a 
troll. (Again.)

So, not only do I fail at programming, I fail at human interaction. It 
seems everywhere I do, people yell at me for being immature and 
outspoken. Maybe I should just take myself away somewhere and figure out 
WTF is *wrong* with me. I fail at life.

I'm sorry.


Post a reply to this message

From: Chambers
Subject: Re: Numeric performance
Date: 16 Feb 2009 05:33:54
Message: <49994112@news.povray.org>
On 2/16/2009 1:54 AM, Invisible wrote:
>>>  I give up. For some reason trying to teach you something seems
>>> completely pointless.
>>
>> Now now. He *did* say he got it working. :-) And you must admit,
>> printf() isn't the most intuitive way of printing something.
>
> No, it seems Warp is right.

Nah, he's just fed up.  That happens with people, but we love him[1] anyway!

> I have conclusively demonstrated that Haskell is many orders of
> magnitude slower than C even for a trivial program.

No, you haven't.  What you *have* demonstrated is that your particular 
program runs slower than an alternative implementation in a completely 
different environment.

I can't say what the slowdown is, or why it's occurring, unless I saw 
your actual Haskell code.  Most likely there's a very good reason for 
the performance hit.

> I have wasted 4 years of my life on Haskell. It is so beautiful and
> eligant, I wanted it to be the answer, and I blindly believed that it
> would be. Clearly it isn't.

"When you're a hammer, the whole world looks like a nail."

The fact is that Haskell, like every other language out there, is a tool 
- a tool that helps you get things done.  It doesn't do the same things 
C does, or do things the same way, because it *isn't* C.  It's good at 
(and for) different things[2].

Sometimes, you need C.  Sometimes you need Haskell.  Spending your time 
learning it and using it doesn't mean you've wasted your time.

Stephen R Donaldson is fond of quoting, "When you become a master of one 
thing, you become a master of all things."  This isn't to say that by 
learning Haskell you're a master programmer in any language; but the act 
of mastering something so complex teaches you how to master anything you 
set yourself to.

Never count the mastery of a skill as a waste, even if it's a skill you 
never end up using.

> The irony, the sheer irony of it, is that the whole reason I was timing
> this stuff in the first place was that I was just about to reach into
> the source code of the compiler to try to tweak its performance. It is

Actually, that's a great idea.  There's no better way to learn than by 
doing.

> obvious to me now that I shouldn't be let anywhere near an actual
> compiler. Better to leave that to the real experts.

Do you know what an "expert" really is?  An "ex" is a has-been, and a 
"spert" is a drip under pressure!

Anyway, how do you think the "experts" got to be that way?  By doing 
exactly what you're doing right now!

> It seems I've been deluding myself. All these years, I thought I was
> some kind of master programmer.

Well, you might have been deluding yourself in that, yes.  But there's 
nothing wrong with aspirations :)

> I am now the laughing stock of this forum.

No, you're not.  You're our friend and, yes, sometimes we laugh at you - 
but we laugh at pretty much everyone.  As Scott Adams says, "Everyone is 
an idiot at something."  That means that everyone gets to be laughed at 
:)  Take it in stride, and join in the laughter yourself - you might 
find it cathartic.

> seems everywhere I do, people yell at me for being immature and

They yell at you for being immature?  Doesn't that make them... immature?

> I fail at life.

Not yet, you haven't.  Everyone has minor stumbling blocks, but they 
really are minor.

Besides, if you're talking about failing at something you love, then 
you're in good company.  Do you know why Henry Ford's first automobile 
company was dissolved?  It was because the car they made was lower 
quality and higher price than he liked.  In other words, it was a 
question of optimization ;)

Anyway, it's late here, & I should get some sleep.

[1]See the thread titled "you & me right now, warp"

[2]If Haskell can be embedded, I'm thinking it would make a great patch 
for POV-Ray.  Something like this:

#declare h_func = haskell { "..." }

#declare val = h_func(1,2,3)

Anywhere POV takes functions, it could use a Haskell function.

-- 
...Chambers
www.pacificwebguy.com


Post a reply to this message

From: Stephen
Subject: Re: Numeric performance
Date: 16 Feb 2009 06:48:58
Message: <0lkip4hskcrrlsgbr41m4i06fpsgvpp597@4ax.com>
On Mon, 16 Feb 2009 09:54:56 +0000, Invisible <voi### [at] devnull> wrote:

>I have conclusively demonstrated that Haskell is many orders of 
>magnitude slower than C even for a trivial program.

But what about non trivial problems?

I'm sure that Haskell was not developed for adding lots of numbers. (Not
counting the fact that is what all computers do ;) ) What does it do well, why
not try checking it against C++ with something it is designed for?

As for wasting you time, if you enjoyed yourself the time was not wasted.
Remember the old saying. Don't get depressed, get even.
-- 

Regards
     Stephen


Post a reply to this message

From: Mike Raiford
Subject: Re: Numeric performance
Date: 16 Feb 2009 09:53:51
Message: <49997dff$1@news.povray.org>
Warp wrote:

>> Uhuh. And are you by any chance running this on an AMD Mobile AlthonXP 
>> 1400+?
> 
>   I have hard time believing my computer is 30 times faster than that.
> Twice or three times as fast I could still maybe swallow, but not 30 times.
> (Athlons are rather notorious for being much faster than the Pentium4 line
> with the same clockrates.)
> 

P4 Core2 Duo here,

1 billion iterations, C#

1000000000 Int Sum Time: 00:00:02.2499280
1000000000 Double Sum Time: 00:00:03.3905165
1000000000,1000000000 Double Convert Time: 00:00:03.7655045

^^ Interestingly the float to int conversion uses an MMX instruction. 
Apparently it is very costly to do it without MMX, the CLR JIT uses the 
MMX instruction regardless, so I have no comparison for the non-MMX 
instruction. But, the difference is negligible between floating point 
operations and integer.

-- 
~Mike


Post a reply to this message

From: Warp
Subject: Re: Numeric performance
Date: 16 Feb 2009 11:22:59
Message: <499992e3@news.povray.org>
Invisible <voi### [at] devnull> wrote:
> >>   I give up. For some reason trying to teach you something seems
> >> completely pointless.
> > 
> > Now now. He *did* say he got it working. :-)  And you must admit, 
> > printf() isn't the most intuitive way of printing something.

> No, it seems Warp is right.

> I have conclusively demonstrated that Haskell is many orders of 
> magnitude slower than C even for a trivial program.

  I was not talking about Haskell vs. the world in my comment quoted
above. I was talking about you trying to do it in *C* and having your
program crash, after all the trouble I have gone in the past to try to
teach you safe programming practices in C++, as a better alternative to C.

  I got exasperated because I thought that maybe, just maybe you had
learned something about the C/C++ family of languages, and perhaps learned
to make working programs in C++ with less effort (than in C, that is).
But no. When you want to try something with something else than Haskell,
you go once again back to C and have your program crash on you. It feels
like all my teaching efforts went completely to waste.

-- 
                                                          - Warp


Post a reply to this message

From: Orchid XP v8
Subject: Re: Numeric performance
Date: 16 Feb 2009 16:22:43
Message: <4999d923$1@news.povray.org>
Slime wrote:
>> Er, no. Just tried it with the release version. The numbers are a fraction 
>> of a second slower still. Either way, two equivilent formulations of the 
>> program have wildly different runtimes.
> 
> What's the difference between them?

One relies on automatic list fusion, the other is hand-fused. It turns 
out GHC doesn't automatically fuse left folds. Since the entire program 
is a left fold, I guess that'll be the problem then...

If my assumption that all list operations do get fused had been correct, 
the two programs *would* be almost completely equivilent. (One with more 
overloading than the other, possibly contributing to a few percent 
overhead.)

This is what happens when you *assume* you know what you're talking 
about; you get caught out.

-- 
http://blog.orphi.me.uk/
http://www.zazzle.com/MathematicalOrchid*


Post a reply to this message

<<< Previous 10 Messages Goto Latest 10 Messages Next 6 Messages >>>

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.