POV-Ray : Newsgroups : povray.off-topic : Numeric performance Server Time
6 Sep 2024 11:19:17 EDT (-0400)
  Numeric performance (Message 7 to 16 of 26)  
<<< Previous 6 Messages Goto Latest 10 Messages Next 10 Messages >>>
From: Orchid XP v8
Subject: Re: Numeric performance
Date: 15 Feb 2009 15:15:25
Message: <499877dd$1@news.povray.org>
>> If I add up a few thousand 32-bit signed integers, it takes 20 seconds.
> 
>   What are you using? A 8086? In fact, I think even a 8086 could sum
> a lot more than a few thousands of integers in 20 seconds.

You understand that when I said "a few thousand", I just meant "a lot", 
right? I wasn't being rigorous about the number.

Actually the number I'm using is 10^8, which is... er, let me see... 100 
million?

>   Out of curiosity, I tried a small test program in my computer which
> creates an array of integers, then goes through it and calculates the
> sum of all the integers. I had to use an array of 100 million integers
> before I got even some measurable delay, and that was 0.7 seconds.
> 
>   I bet most of the time was caused by cache misses because of the
> humongous array (taking 400 megabytes of memory) rather than the summing
> process.

Uhuh. And are you by any chance running this on an AMD Mobile AlthonXP 
1400+?

>> If I use double-precision, and then convert each number to an integer, 
>> and then add it to the total, it takes 6 minutes.
> 
>> I'm wondering whether the hardware is actually that slow, or whether 
>> this is a performance bug in Haskell's number libraries.
> 
>   I think there's something else fundamentally wrong with the system you
> are using than summing integers or converting between floats and ints.

I hacked into the numeric library and called the low-level C primop 
directly, and runtime dropped to 68 seconds, rather than 6 minutes. I 
believe this clearly demonstrates that there is something Very Wrong 
with the default numeric implementation...

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


Post a reply to this message

From: Warp
Subject: Re: Numeric performance
Date: 15 Feb 2009 15:46:23
Message: <49987f1e@news.povray.org>
Orchid XP v8 <voi### [at] devnull> wrote:
> >> If I add up a few thousand 32-bit signed integers, it takes 20 seconds.
> > 
> >   What are you using? A 8086? In fact, I think even a 8086 could sum
> > a lot more than a few thousands of integers in 20 seconds.

> You understand that when I said "a few thousand", I just meant "a lot", 
> right? I wasn't being rigorous about the number.

> Actually the number I'm using is 10^8, which is... er, let me see... 100 
> million?

  20 seconds to add up 100 million integers is still quite a lot.

  I find it ironic that you constantly comment on the "unfounded" prejudices
relating to the speed of Haskell in the other group, yet time after time you
demonstrate in practice how Haskell is orders of magnitude slower than a
simple C++ program. This isn't the first time that I remember.

> >   Out of curiosity, I tried a small test program in my computer which
> > creates an array of integers, then goes through it and calculates the
> > sum of all the integers. I had to use an array of 100 million integers
> > before I got even some measurable delay, and that was 0.7 seconds.
> > 
> >   I bet most of the time was caused by cache misses because of the
> > humongous array (taking 400 megabytes of memory) rather than the summing
> > process.

> 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.)

-- 
                                                          - Warp


Post a reply to this message

From: Orchid XP v8
Subject: Re: Numeric performance
Date: 15 Feb 2009 16:12:12
Message: <4998852c$1@news.povray.org>
Warp wrote:

>   I find it ironic that you constantly comment on the "unfounded" prejudices
> relating to the speed of Haskell in the other group, yet time after time you
> demonstrate in practice how Haskell is orders of magnitude slower than a
> simple C++ program. This isn't the first time that I remember.

Well, you look at Haskell and how it's used, and it "looks" like it 
should be insanely slow. (E.g., recursion is used everywhere.) It's easy 
to think it has no performance at all.

And yet, when you look at things like the Great Language Shootout, 
Haskell beats several supposedly "superior" languages. Last time I 
checked, it's near the very top of the main scoreboard.

>   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.)

OK, well I just wrote a small C program to do the same thing... and it 
segfaulted at me.

So then I looked up the printf() manpage to find out what the correct 
magic code is, and tried again... 0.8 seconds to do the integer sum.

Based in this information, I conceed defeat. I have no idea what's gone 
wrong here.



PS. I just changed the Haskell program. It now takes 0.5 seconds - which 
is even faster than C. But I still have no idea why the first version 
wasn't this fast, so that's not much comfort.

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


Post a reply to this message

From: Orchid XP v8
Subject: Re: Numeric performance
Date: 15 Feb 2009 16:22:28
Message: <49988794$1@news.povray.org>
Orchid XP v8 wrote:

> PS. I just changed the Haskell program. It now takes 0.5 seconds - which 
> is even faster than C. But I still have no idea why the first version 
> wasn't this fast, so that's not much comfort.

So maybe it's because I'm using this version of the compiler that I 
built myself, and it's broken in some way?

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.

Interestingly, on my much more powerful desktop PC [with yet another 
version of the compiler], the "slow" version only takes 2 seconds. But 
the "fast" version is too quick to time, so something is still wrong.

Ah, the bitter taste of utter defeat.

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


Post a reply to this message

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

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

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