POV-Ray : Newsgroups : povray.off-topic : Numeric performance : Re: Numeric performance Server Time
6 Sep 2024 11:18:08 EDT (-0400)
  Re: Numeric performance  
From: Invisible
Date: 17 Feb 2009 04:38:57
Message: <499a85b1$1@news.povray.org>
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

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