![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On Mon, 16 Feb 2009 09:54:56 +0000, Invisible <voi### [at] dev null> 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
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
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
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Invisible <voi### [at] dev null> 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
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
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
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 15-2-2009 21:15, Orchid XP v8 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?
note to self: never lend money to that guy.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Invisible wrote:
> 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.)
Last night, I wrote a carefully worded reply to the Haskell mailing
list. As of now, the moderators still haven't released the message yet.
So to everybody on the list, it looks like I posted a bunch of
misinformation, got called on it, and just didn't bother to reply. Yay
for me. :-(
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Chambers wrote:
> 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.
"GHC currently does not fuse left folds."
Since my entire program was a simple left fold, that'll be the problem.
(This also explains why the hand-fused version runs much faster -
although I'm still not sure how it manages to be *faster* than C...)
>> 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.
Sure. Like anybody is going to accept a compiler modification from a
"troll". Like any of the compiler developers are going to be eager to
help one out. Indeed, the person who yelled at me was the very guy I
wanted to ask for help from; he's the one who reported the issue I was
looking at fixing.
>> 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!
Well, we're talking about people such as the legendary Simon Peyton
Jones, one of the original PhDs who *invented* Haskell. People who know
what "denotional semantics" actually means, and what "the lambda cube"
is. They didn't get to where they are by blindly poking around somebody
else's source code. They did it by spending decades in research and
development on programming language design, compiler architecturing,
applied mathematics, and things I'd never understand in my wildest dreams.
>> 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 :)
There's nothing wrong with *wanting* to become a master. There's
everything wrong with believing you *are* a master in the complete
absence of any evidence for this.
>> 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.
Well, let me put it this way: Next time I say "Haskell is fast", nobody
is going to believe me for even a split second. So basically what I've
been saying all these years is nonesense.
>> 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?
Well, I say "yell" at me... Of course they put it more professionally
than that. But the gist of it is that they think I'm a troll and they
don't want me around.
> [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.
I'm not sure that would be such a hot idea.
#declare angleR = angleD / 180 * pi;
#declare angleR = haskell{"fromIntegral angleD / 180 * pi"};
#declare center = <1, 2, 3>;
#declare center = haskell{Vector3 1 2 3};
#declare T1 = texture {pigment {red 1} finish {ambient 0}}
#declare T1 = haskell{default_texture {pigment = PSolid {colour =
ColourRGB 1 0 0}, finish = Finish {ambient = ColourRGB 0 0 0}}};
Not so great, eh?
What you *could* do - and what I attempted to do a while back - is
design a domain-specific language for scene description/construction. It
would be completely incompatible with POV-Ray's current SDL, but it
might be quite nice.
OTOH, if you were going to do that, everybody would want an
object-oritented language rather than a functional one.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 2/17/2009 1:25 AM, Invisible wrote:
> Invisible wrote:
>> 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.)
>
> Last night, I wrote a carefully worded reply to the Haskell mailing
> list. As of now, the moderators still haven't released the message yet.
> So to everybody on the list, it looks like I posted a bunch of
> misinformation, got called on it, and just didn't bother to reply. Yay
> for me. :-(
Ah, the joys of moderated groups :(
--
...Chambers
www.pacificwebguy.com
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
>>> 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.)
>>
>> Last night, I wrote a carefully worded reply to the Haskell mailing
>> list. As of now, the moderators still haven't released the message yet.
>> So to everybody on the list, it looks like I posted a bunch of
>> misinformation, got called on it, and just didn't bother to reply. Yay
>> for me. :-(
>
> Ah, the joys of moderated groups :(
That's the fun thing. It's *not* a moderated group. (So... why are my
posts being moderated??)
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
>> Ah, the joys of moderated groups :(
>
> That's the fun thing. It's *not* a moderated group. (So... why are my
> posts being moderated??)
Well look at that... I sent an email to the list administrator, and
*within minutes* several emails a sent a few days ago have suddenly
appeared on the mailing list! How "interesting"... :-P
--
http://blog.orphi.me.uk/
http://www.zazzle.com/MathematicalOrchid*
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |