Feature suggestion: in-place append to array
Mike S
mikes at notarealaddresslololololol.com
Wed Mar 31 17:30:42 PDT 2010
bearophile wrote:
> Mike S:
>> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html
>
> It's a nice read. I don't see them switching to D soon. If you whisper them that D is based on a GC they will run away screaming :-)
>
> Bye,
> bearophile
Hah...well, there's a reason I'm still just looking into D rather than
diving in headfirst! :p Actually though, I do believe the needs of game
programmers should be taken seriously while considering D's evolution:
Right now, D hasn't completely found its niche, but it seems to position
itself as a sane successor to C++ for systems-level programming. As it
stands, I believe there are only two major kinds of programmers who
still use C++, and those are game programmers and masochists. ;) Odds
are, D won't be replacing C anytime soon for operating system kernels
and such. It's too low-level for scripting tasks, and most website
designers and non-real-time applications programmers use higher-level
languages already (C#, Python, PHP...shudder...etc.), and they're
unlikely to go back. I think D will eventually be used for writing
other heavy-duty non-OS frameworks and software systems, but if it's
really going to become the successor to C++, it's going to have to
absorb most of C++'s user base...and that includes game programmers.
You're right that the garbage collector is a major issue - probably the
biggest one inherent to the language design - but I haven't determined
it's a dealbreaker, at least not yet. After all, D also allows manual
memory management, and freeing memory early apparently helps speed
things up anyway
(http://stackoverflow.com/questions/472133/turning-off-the-d-garbage-collector).
That part helps ensure control over how much memory is used/available,
and the only other issue with the garbage collector is reconciling its
running time with the soft real-time constraint that games have to
satisfy. I can think of a few tactics which should help here:
1.) In addition to permitting better reasoning about memory
allocations, freeing most memory manually should reduce the load on the
garbage collector and reduce its runtime, right?
2.) On the simulation side of the game engine, I believe a constant
timestep promotes a more robust design, and that means some frames
(relatively idle ones) will have plenty of CPU time left over. If you
can explicitly call the garbage collector to make it run during those
times instead of at nondeterministic times (can you?), you can maintain
a smooth framerate without any GC-induced spikes.
3.) Can user code execute simultaneously with the GC in other threads
(on other cores), or does the GC halt the entire program for safety
reasons? Assuming simultaneous threaded execution is permitted, it
would also dramatically reduce the GC's impact on multi-core systems.
Assuming these strategies work, the garbage collector by itself
shouldn't be a showstopper. In the case of dynamic arrays, resizing
capacity deterministically is one of those small things that would be
really helpful to anal game programmers, and it probably wouldn't hurt
anyone else, either. Plus, it's easier to implement than "smart
nondeterministic" resizing anyway. :)
More information about the Digitalmars-d
mailing list