IssueRaiser

D is a awesome language to work with, it's got many useful language features that make the activity of code writing a pleasure.

D is a awesome language to work with, it's got many useful language features that make the activity of code writing a pleasure. - I hope this criticism is taking constructively. However not a beat a dead horse, but if you want to process more than a trickle of data in it you run into problems with the GC really quickly. I really feel the language would be better off without the GC. These are not the same issues address by the JSON compiler post or w/e that surfaces a couple months ago. From what I can tell, theres a global lock around everything in the GC, including allocations. In a multi-core world, this just simply doesn't work and it one of the major pain point of the language. I write data-intensive processing on high core count machines (32), and have had to resort to 0-allocation strategies, or in map-reduce contexts actually sharding at the process level, writing the results to disk, and then running a reducer process over the results. You can write performant D code, but you give up large amounts of code safety. It's essentially just whatever you'd write in C++ without the ownership semantics it gives you. You can't have a core part of your language being an essentially unavoidable massive point of contention. I've literally seen 20x or more speedups in multithreaded cases just by making sure I reuse every buffer rather than create new ones. I feel this is really holding back an otherwise great language to work in. This is discussed in the reddit thread in more detail.

Posted by sprw121 on Apr 27, 2015, 7:45 AM

Tags

Related issues

Raise real-world problems, find people facing the same issue, and discuss solutions.7,000 issues0 comments

hackernews (Software)

D is a awesome language to work with, it's got many useful language features that make the activity of code writing a pleasure.

sprw121Apr 27, 2015, 7:45 AM

D is a awesome language to work with, it's got many useful language features that make the activity of code writing a pleasure. - I hope this criticism is taking constructively. However not a beat a dead horse, but if you want to process more than a trickle of data in it you run into problems with the GC really quickly. I really feel the language would be better off without the GC. These are not the same issues address by the JSON compiler post or w/e that surfaces a couple months ago. From what I can tell, theres a global lock around everything in the GC, including allocations. In a multi-core world, this just simply doesn't work and it one of the major pain point of the language. I write data-intensive processing on high core count machines (32), and have had to resort to 0-allocation strategies, or in map-reduce contexts actually sharding at the process level, writing the results to disk, and then running a reducer process over the results. You can write performant D code, but you give up large amounts of code safety. It's essentially just whatever you'd write in C++ without the ownership semantics it gives you. You can't have a core part of your language being an essentially unavoidable massive point of contention. I've literally seen 20x or more speedups in multithreaded cases just by making sure I reuse every buffer rather than create new ones. I feel this is really holding back an otherwise great language to work in. This is discussed in the reddit thread in more detail.

Comments (0)

No comments yet. Start the discussion.

Comment on this issue