Vladimir Panteleev via Digitalmars-d píše v Po 17. 11. 2014 v 23:14 +0000: > I proposed to build Phobos and Druntime with stack frames enabled: > > https://issues.dlang.org/show_bug.cgi?id=13726 > > Stack frames add three CPU instructions to each function (two in > the prolog, and one in the epilog). This creates a linked list > which debuggers, profilers, etc. can easily walk to find which > function called which. They would allow debugging certain classes > of bugs much more easily (e.g. the recurring > InvalidMemoryOperationError - there's a thread about it in > D.learn just today), and profiling your code with polling > (non-instrumenting) profilers. > > As I understood, in theory, debug information (DWARF and PDB, > probably not CV) should also contain information allowing an > accurate stack walk, but it doesn't look like we're currently > emitting debug information to that level of accuracy. Not all > debuggers/profilers understand this debug information, either > (whereas walking the linked list emitted by the stack frames is > trivial). > > We could also start bundling debug builds of Phobos. However, > these will not help in cases where the performance impact of > using a full-blown debug build is not acceptable (e.g. if it'll > skew the profiling results too much, or if you just want readable > stack frames for your D web service in production). > > How much will this cost in performance? > > I've run two benchmarks, both show a figure around 0.1%. Many > performance-sensitive parts of Phobos (std.algorithm) are > templated and thus are not affected by the Makefile switches. The > GC is built with -inline, which, although it causes the call > stack to not contain inlined functions, doesn't cause it to > abruptly break off like without stack frames. > > Is D the first to build its release stdlib with stack frames? > > Nope. Microsoft's C release runtime is built stack frames enabled. > > Personally, I think the 0.1% is practically negligible > considering the advantages. My proposal was rejected, so I'd like > to hear more opinions about this. What do you think? > > If you want to run some benchmarks yourself, here are the patches: > > https://github.com/CyberShadow/phobos/compare/enable-stack-frames?expand=1 > https://github.com/CyberShadow/druntime/compare/enable-stack-frames?expand=1 > > Or, using Digger: > > digger build > v2.065.0+CyberShadow/phobos/enable-stack-frames+CyberShadow/druntime/enable-stack-frames > > Previous discussion from 2012: > http://forum.dlang.org/post/zebqmrhcigfuockcp...@forum.dlang.org
Short answer: NO. Long answer: If I neeed this, I will build version of phobos and druntime myself with this enabled. Or we could distribute both versions and select one by some switch. But I am against having stack frames enabled by default.