3 ms·
I did direct memory management in C# before those techniques were available. (It was a .Net Framework 4.x application.)
by gwbas1c 3y ago
I did direct memory management in C# before those techniques were available. (It was a .Net Framework 4.x application.)
- pjmlp 3y agoYeah, and many of these techniques require assistance from the new .NET Core runtime, e.g. Span is not reckognised as a intrisic by the .NET Framework Jit. I also applied similar techniques with C++/CLI on .NET Framework, for a RPC framework, network packet processing optimization, and they surely helped.
- gwbas1c 3y ago> In my experience, the one time I did a deep dive into those optimizations, they had no advantage over "idiomatic" C# when I hooked up a profiler. What I'm really getting at is the attitude that some people who come from manual memory management backgrounds come in with when they start with C#. They're so used to manually controlling everything that sometimes they slip into pointers, unsafe, ect, out of habit. IE, they're really useful in performance critical areas, and even then, you need a profiler to prove that they're worth it. In my case, I was writing a filesystem that had a driver and a user-mode piece. The user-mode piece was in C#, so I initially wrote parts of it with pointers, ect. I used the profiler to "prove" that the extra effort was worth it early into the project... And it wasn't. I was surprised, to put it mildly.
- pjmlp 3y agoAh, in that regard I fully agree with you. Oberon did it for me, then given my interests, computer archeology in alternative computing models, most of which failed more due to human reasons than technical ones. Although maybe having started with Timex 2068 BASIC/Z80, Turbo Basic, Turbo Pascal, having done Clipper as well, also tainted me in what to expect in regards to productivity.