Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

So we have to restart from scratch?

What you say contradicts with the measurements, even the ones you made yourself (https://news.ycombinator.com/item?id=41101743).

I don't know what your motivation is to give Mono a bad reputation. I assume you're paid by Microsoft or one of its affiliates, are you?



I'm simply trying to caution against openly bad advice.

People here are likely to run C# and F#, not Oberon+ that compiles to (terrible) CIL.


> Oberon+ that compiles to (terrible) CIL

Why so arrogant? The CIL is good enough. It's a promise of the ECMA-335 to cope even with unoptimized CIL, and Mono indeed includes many optimization steps. Your arguments - especially concerning SIMD and other features supported by CoreCLR - are absolutely not relevant in this context. CIL is always the same (regardless whether the CIL was generated by your big C# or my small Oberon compiler), and if I feed unoptimized CIL to CoreCLR, it still has the opportunity to make use of the SIMD features of the given CPU if need be. As already discussed it's even more interesting to base the performance comparison on unoptimized CIL, because by the end of the day we all want to know how good the optimizers of Mono or CoreCLR are.

And you didn't answer my question, so I assume you're working for Microsoft or some of their affiliates, and your claims are obviously biased by this.


> The CIL is good enough.

Comparison against Oberon+ string primitives allocates a new char array every time. Other operations allocated it to just null-terminate it (string constants are null-terminated already for example, or can be done so explicitly by compiler instead, in any case this is an incorrect design). Somehow, it failed the basic task of modeling C behaviors on the one and only high-level bytecode target that comes to modeling C the closest. This was the very first thing I saw when I opened the compilation artifacts with ILSpy.

In any case, my goal was to post a disclaimer and it is fulfilled.


> string primitives allocates a new char array every time.

So what? What do you think do the dotnet string or marshalling classes internally? And how should that affect the performance comparison if we feed the same CIL to both - Mono and CoreCLR?

But we can leave it at this; people can read the arguments at the given link, we don't have to repeat everything again.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: