June 07, 2013
On Thursday, June 06, 2013 15:55:02 Andrei Alexandrescu wrote:
> On 6/6/13 2:31 PM, Walter Bright wrote:
> > Ok, Manu, you win, I'm pretty much convinced.
> 
> In my heart of hearts I somehow hope this will blow over and we'll get to some actually interesting stuff...

Well, we could just officially decide that we're making member functions non- virtual by default and move on. It at least sounds like Walter is now sure that that's what we should do.

- Jonathan M Davis
June 07, 2013
On Thursday, June 06, 2013 18:19:28 Walter Bright wrote:
> In my experience with major software companies, using anything other than -O is quite rare. Use of a profiler? nevah hoppin. Yes, a maverick here and there will use them, but use is not pervasive and routine.

We've profiled our code where I work from time to time to sort out specific performance issues, but it's still quite rare, and it's really only a couple of people who do it. It's definitely not pervasive.

- Jonathan M Davis
June 07, 2013
On Thursday, June 06, 2013 19:22:56 Walter Bright wrote:
> On 6/6/2013 7:01 PM, Jakob Ovrum wrote:
> > On Friday, 7 June 2013 at 01:12:07 UTC, Walter Bright wrote:
> >> and I'm the only one I know of that uses it.
> > 
> > I've used it in LuaD since a couple of years ago to check what code isn't covered by tests. It's much more useful now that it has VisualD integration and the -cov=nn form, though.
> 
> There's 2! :-)

I've definitely used it before (particularly when originally writing std.datetime), but it's not something that I remember to use often enough. I'm thorough enough with my unit tests that I tend to assume that I have fully coverage (which I probably do in most cases), but it would be much safer to actually check. Having at least the percentage spit out as part of the build step would certainly be useful though, since then I could see when it changes.. I wonder if I should set it up so that my unit test builds do that.

- Jonathan M Davis
June 07, 2013
On 6/6/13 6:12 PM, Walter Bright wrote:

> and I'm the only one I know of that uses it.

You really need to get out of the habit of associating "I can't remember people telling me they use something" and "no one uses it".

   1) your memory isn't perfect.

   2) just because you're not aware it's happening doesn't mean it isn't.

   3) likely lots of other reasons, but come on, 1 and 2 are more than sufficient to kill the phrase.

Yeah, I know you couched it with "I know of" this time, but the pattern is pretty silly regardless.  This community is awfully myopic when it comes to use of personal history and mapping it onto everyone else's behavior.
June 07, 2013
On 6/6/13 8:13 PM, Jonathan M Davis wrote:
> On Thursday, June 06, 2013 20:01:09 Andrei Alexandrescu wrote:
>> On 6/6/13 6:12 PM, Jonathan M Davis wrote:
>>> On Thursday, June 06, 2013 14:57:00 Walter Bright wrote:
>>>> On 6/6/2013 2:23 PM, Andrei Alexandrescu wrote:
>>>>> (The tool I'm envisioning
>>>>> would add final annotations or prompt the user to add them.)
>>>>
>>>> Sorry, that's never going to fly.
>>>
>>> It could tell the programmer which functions it _thinks_ don't need to be
>>> virtual, but it can't be 100% correct.
>>
>> It would be 100% correct if given the entire application. You may want
>> to take a look at the CHA paper.
>
> It may be (I'd have to look at the paper), but it's my understanding that
> dynamically loading libraries while the program would kill that when those
> libraries can change.

I'm carefully mentioning "entire applications" every time I got a chance. It's not working.

Andrei

June 07, 2013
On 6/6/13 8:16 PM, David Nadlinger wrote:
> On Friday, 7 June 2013 at 00:04:18 UTC, Andrei Alexandrescu wrote:
>> On 6/6/13 8:01 PM, Andrej Mitrovic wrote:
>>> On 6/6/13, Andrei Alexandrescu<SeeWebsiteForEmail@erdani.org> wrote:
>>>> In my heart of hearts I somehow hope this will blow over and we'll get
>>>> to some actually interesting stuff...
>>>
>>> Which stuff? :)
>>
>> E.g. finalizing shared and threading.
>
> +1.
>
> By the way, was that a deliberate pun? If so, I bow to the master. ;)

Wasn't, but I can't admit that now!

Andrei

June 07, 2013
On Friday, June 07, 2013 01:04:40 Andrei Alexandrescu wrote:
> On 6/6/13 8:13 PM, Jonathan M Davis wrote:
> > On Thursday, June 06, 2013 20:01:09 Andrei Alexandrescu wrote:
> >> On 6/6/13 6:12 PM, Jonathan M Davis wrote:
> >>> On Thursday, June 06, 2013 14:57:00 Walter Bright wrote:
> >>>> On 6/6/2013 2:23 PM, Andrei Alexandrescu wrote:
> >>>>> (The tool I'm envisioning
> >>>>> would add final annotations or prompt the user to add them.)
> >>>> 
> >>>> Sorry, that's never going to fly.
> >>> 
> >>> It could tell the programmer which functions it _thinks_ don't need to
> >>> be
> >>> virtual, but it can't be 100% correct.
> >> 
> >> It would be 100% correct if given the entire application. You may want to take a look at the CHA paper.
> > 
> > It may be (I'd have to look at the paper), but it's my understanding that dynamically loading libraries while the program would kill that when those libraries can change.
> 
> I'm carefully mentioning "entire applications" every time I got a chance. It's not working.

I know, but the problem is that part of the application (the external library or plugin) could change over time rendering some of the devirtualizations invalid. You'd have to have some sort of guarantee that that's not going to happen to avoid problems.

- Jonathan M Davis
June 07, 2013
On 6/6/13 9:19 PM, Walter Bright wrote:
> On 6/6/2013 5:00 PM, Andrei Alexandrescu wrote:
>> On 6/6/13 5:57 PM, Walter Bright wrote:
>>> On 6/6/2013 2:23 PM, Andrei Alexandrescu wrote:
>>>> (The tool I'm envisioning
>>>> would add final annotations or prompt the user to add them.)
>>>
>>> Sorry, that's never going to fly.
>>
>> Like a dove.
>
> Few companies care about performance like Facebook does. What
> performance analysis tools does FB use routinely and pervasively?

We built our own, an entire complex system, and an entire team is working on it. I've used it for four experiments today, and am about to launch one more.

> In my experience with major software companies, using anything other
> than -O is quite rare. Use of a profiler? nevah hoppin. Yes, a maverick
> here and there will use them, but use is not pervasive and routine.
>
> Will our canonical D newbie coming from C++ or Java use such a tool?
> Nope. They'll run the compiler, if we're lucky they'll throw -O -release
> -inline -noboundscheck, then they'll give the thumbs up or down on
> performance. This thread is a classic example.

I disapprove of this attitude, it's not constructive and kills creativity. When I wrote rdmd (not that that's an example of a creative idea!), I was its sole user for some six months, and whenever I'd mention it you were just as skeptical of its utility. Very slowly word got by and now it's a quite popular tool. You were just as skeptical about dustmite, and that has also become popular.

If we have a tool that just class hierarchy analysis on a project by just saying

cha --in-place *.d

then people will notice. I don't buy all that "humans aren't rational" stuff.


Andrei
June 07, 2013
On 6/7/13 12:34 AM, Brad Roberts wrote:
> On 6/6/13 6:12 PM, Walter Bright wrote:
>
>> and I'm the only one I know of that uses it.
>
> You really need to get out of the habit of associating "I can't remember
> people telling me they use something" and "no one uses it".

I concur. That, and "When I was at Boeing" :o).

Andrei
June 07, 2013
On 07/06/13 11:12, Walter Bright wrote:
> On 6/6/2013 4:56 PM, Flamaros wrote:
>> I think it depend of his simplicity and integration in the common D
>> process
>> development. Maybe because D build fast we can add some extra steps
>> during build
>> of the release?
>> And developers of companies that develop the biggest application will
>> be aware
>> of this tool and certainly have script or advanced tools to build
>> their software
>> release, adding a line during the building process seems acceptable.
>
> Consider a trivial and effective DMD tool for debugging and improving
> efficiency:
>
>     -cov
>
> and I'm the only one I know of that uses it.

I use it to make sure that my unittests are complete.

Peter
PS It would be nice if it printed the overview (i.e. % complete line) to stdout as well as sticking it in the coverage file report.