DOM Bindings Meeting - Monday @ 12:30 PM PDT

2013-08-26 Thread Kyle Huey
Our (ostensibly) weekly DOM bindings meetings continue on Monday August
26th at 12:30 PM PDT.

Meeting details:

* Monday, August 26, 2013, 12:30 PM PDT (3:30 PM EDT/9:30 PM CEST)
* Conference room 7-N, San Francisco office, 7th floor.
* Dial-in Info:
 - Vidyo room: Boris Zbarsky
 - In office or soft phone: extension 92
 - US/INTL: 650-903-0800 or 650-215-1282 then extension 92
 - Toll-free: 800-707-2533 then password 369
 - Conference number 9235
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: On builds getting slower

2013-08-26 Thread Brian Smith
I talked to gps today and told him I would let him know my numbers on my
machine. I will share them with everybody:

My Win32 debug clobber build (mach build after mach clobber) was 39:54.84
today, up from ~33:00 a few months ago. Not sure if it is my system.
Immediate rebuild (no-op) was 10:13.05. A second no-op rebuild was
10:32.36. It looks like every shared library and every executable got
relinked.

This is on Windows7 64-bit, with 32GB of memory, an Intel 520 SSD, and an
Intel i7-3920XM @ 2.90Ghz/3.10Ghs. (Lenovo W530, plugged in, on Maximum
Performance power setting). I was doing other things (browsing, coding) in
the foreground while these builds ran in the background.

Cheers,
Brian



On Fri, Aug 2, 2013 at 2:13 PM, Gregory Szorc g...@mozilla.com wrote:

 (Cross posting. Please reply to dev.builds.)

 I've noticed an increase in the number of complaints about the build
 system recently. I'm not surprised. Building mozilla-central has gotten
 noticeably slower. More on that below. But first, a request.

 Many of the complaints I've heard have been from overhearing hallway
 conversations, noticing non-directed complaints on IRC, having 3rd parties
 report anecdotes, etc. *Please, please, please voice your complaints
 directly at me and the build peers.* Indirectly complaining isn't a very
 effective way to get attention or to spur action. I recommend posting to
 dev.builds so complaints and responses are public and easily archived. If
 you want a more personal conversation, just get in contact with me and I'll
 be happy to explain things.

 Anyway, on to the concerns.

 Builds are getting slower. 
 http://brasstacks.mozilla.com/**gofaster/#/http://brasstacks.mozilla.com/gofaster/#/has
  high-level trends for our automation infrastructure. I've also noticed
 my personal machines taking ~2x longer than they did 2 years ago.
 Unfortunately, I can't give you a precise breakdown over where the
 increases have been because we don't do a very good job of recording these
 things. This is one reason why we have better monitoring on our Q3 goals
 list.

 Now, on to the reasons why builds are getting slower.

 # We're adding new code at a significant rate.

 Here is a breakdown of source file types in the tree by Gecko version.
 These are file types that are directly compiled or go through code
 generation to create a compiled file.

 Gecko 7: 3359 C++, 1952 C, 544 CC, 1258 XPIDL, 110 MM, 195 IPDL
 Gecko 14: 3980 C++, 2345 C, 575 CC, 1268 XPIDL, 272 MM, 197 IPDL, 30 WebIDL
 Gecko 21: 4606 C++, 2831 C, 1392 CC, 1295 XPIDL, 292 MM, 228 IPDL, 231
 WebIDL
 Gecko 25: 5211 C++, 3029 C, 1427 CC, 1268 XPIDL, 262 MM, 234 IPDL, 441
 WebIDL

 That nets totals of:

 7: 7418
 14: 8667
 21: 10875
 25: 11872

 As you can see, we're steadily adding new source code files to the tree.
 mozilla-central today has 60% more source files than Gecko 7! If you assume
 number of source files is a rough approximation for compile time, it's
 obvious why builds are getting slower: we're building more.

 As large new browser features like WebRTC and the ECMAScript
 Internationalization API continue to dump hundreds of new source files in
 the tree, build times will increase. There's nothing we can do about this
 short of freezing browser features. That's not going to happen.

 # Header dependency hell

 We have hundreds of header files that are included in hundreds or even
 thousands of other C++ files. Any time one of these widely-used headers
 changes, the object files get invalidated by the build system dependencies
 and we have to re-invoke the compiler. This also likely invalidates ccache,
 so it's just like a clobber build.

 No matter what we do to the build backend to make clobber builds faster,
 header dependency hell will continue to undermine this progress for
 dependency builds.

 I don't believe the build config group is in a position to tackle header
 dependency hell at this time. We are receptive to good ideas and will work
 with people to land patches. Perhaps an ad-hoc group of Platform developers
 can band together to address this?

 # Increased reliance on C++ language features

 I *suspect* that our increased reliance on C++ language features such as
 templates and new C++11 features is contributing to slower build times.
 It's been long known that templates and other advanced language features
 can blow up the compiler if used in certain ways. I also suspect that
 modern C++11 features haven't been optimized to the extent years-old C++
 features have been. Combine this with the fact compilers are working harder
 than ever to optimize code and it wouldn't surprise me if a CPU cycle
 invested in the compiler isn't giving the returns it used to.

 I would absolutely love for a compiler wizard to sit down and profile
 Gecko C++ in Clang, GCC, and MSVC. If there are things we can do to our
 source or to the compilers themselves to make things faster, that could be
 a huge win.

 Like dependency hell, I don't believe the 

Re: Build times of different projects

2013-08-26 Thread Mike Shal
On 08/25/2013 12:05 PM, Ehsan Akhgari wrote:
 Note that the code itself (and not just its size) being compiled can also
 change the compilation time, as the compiler needs to perform things such
 as template instantiation, Koenig name look-ups, etc.  Those factors will
 not change by reducing the #include dependencies.


This tool only seems to measure the size of the .cpp file, not the size
of the pre-processed source seen by the compiler. It would be
interesting to see if the numbers are more consistent with that taken
into account, or if it still varies wildly because of the features used
by the code.

-Mike
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Build times of different projects

2013-08-26 Thread Ehsan Akhgari

On 2013-08-26 6:16 PM, Mike Shal wrote:

On 08/25/2013 12:05 PM, Ehsan Akhgari wrote:

Note that the code itself (and not just its size) being compiled can also
change the compilation time, as the compiler needs to perform things such
as template instantiation, Koenig name look-ups, etc.  Those factors will
not change by reducing the #include dependencies.



This tool only seems to measure the size of the .cpp file, not the size
of the pre-processed source seen by the compiler. It would be
interesting to see if the numbers are more consistent with that taken
into account, or if it still varies wildly because of the features used
by the code.


Oh, I didn't realize that!  That makes their measurement pretty much 
useless.  ;-)


Cheers,
Ehsan

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Build times of different projects

2013-08-26 Thread Mike Hommey
On Mon, Aug 26, 2013 at 06:23:09PM -0400, Ehsan Akhgari wrote:
 On 2013-08-26 6:16 PM, Mike Shal wrote:
 On 08/25/2013 12:05 PM, Ehsan Akhgari wrote:
 Note that the code itself (and not just its size) being compiled can also
 change the compilation time, as the compiler needs to perform things such
 as template instantiation, Koenig name look-ups, etc.  Those factors will
 not change by reducing the #include dependencies.
 
 
 This tool only seems to measure the size of the .cpp file, not the size
 of the pre-processed source seen by the compiler. It would be
 interesting to see if the numbers are more consistent with that taken
 into account, or if it still varies wildly because of the features used
 by the code.
 
 Oh, I didn't realize that!  That makes their measurement pretty much
 useless.  ;-)

Not necessarily. You can take that as being exactly the point being
made, and it has some value. If your preprocessed source is 40 times
bigger than the plain source, there might be something wrong.

Mike
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Build times of different projects

2013-08-26 Thread Boris Zbarsky

On 8/26/13 6:31 PM, Mike Hommey wrote:

Not necessarily. You can take that as being exactly the point being
made, and it has some value. If your preprocessed source is 40 times
bigger than the plain source, there might be something wrong.


Mmm...

We pretty commonly have files whose .i is 40x bigger than the .cpp.  :(

Luckily, cutting down on unnecessary includes helps a lot with this sort 
of thing.


-Boris

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform