[OT] Unity's HPC#

Nick Sabalausky (Abscissa) SeeWebsiteToContactMe at semitwist.com
Thu Feb 28 17:08:02 UTC 2019


On 2/28/19 7:05 AM, Dukc wrote:
> 
> This is exactly where D has the largest advantage over C#. I find that 
> C# is generally good to code with, as long as you don't care about 
> performance beyond avoiding big O crimes. But when you try to do stuff 
> like using structs when you don't need polymorhism or trying to minimize 
> allocation when working with an array, it gets inpractical. With D, of 
> course you still need to put a bit more thought in, but it doesn't feel 
> like the language is fighting your optimization efforts.

Yea, at one point, I used to be just as big a fan of C# as D, but 
eventually C#'s difficulty of low-level control and lack of 
expressiveness (compared to D) pushed me away. Although I do still 
consider it one of the few languages I don't actually hate.

Nonetheless, Unity seems to have very much addressed the "low-level 
control" problem with plain-C#. As as for the expressiveness, well, like 
any major game engine developer, they're coming from C++, so as far as a 
D-like level of expressiveness, they wouldn't have had that before, so 
they're not really loosing much in that area.

What I think is important for us to look at is: How does D's offering 
stack up to HPC#, and what could we do to improve?

To be honest, I'm not entirely happy with how D compares:

+ Expressiveness: The only aspects where I think D has a clear advantage.

+ Memory Layout: We're no worse, but HPC# seems to have caught up to us.

- "Performance is correctness": I could be wrong, and I hope I am, but 
I'm not sure D does much better than C++ in this area. Certainly not as 
well as HPC# appears to do.

- Cross-architecture: D has improved here from the past, but it's still 
nowhere near as mature on as wide a range of platforms as Unity is.

- Machine code viewer: We have disassembly and such, but judging by 
their screenshot, no tool that's quite that nice.

+ Memory Safety: D's probably about on par here.

- Concurrency Safety: We're way beyond many languages, but we have 
nothing that goes nearly as far as the job scheduling system they describe.

Being basically a better C++, this is exactly the sort of software that 
D should excel at, so it's rather disappointing how D seems to stack up 
to HPC#. We *should* be absolutely demolishing it.


More information about the Digitalmars-d mailing list