Pages: 1 [2] 3   Go Down
Author Topic: Compile Speed - testing & feedback needed!  (Read 9074 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
God Member
*****
Karma: 26
Posts: 626
Always making something...
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I have done everything I possibly can to get this improvement into the official Arduino, even to the point of making a video demonstration to solicit more beta testing, since the Arduino Team believed this feature might be too risky without more testing.

My basic feeling is it's nearly impossible to contribute anything to Arduino, other than specific bug fixes.  Even "patches welcome" doesn't mean contributed code will actually be used.  For example:

http://code.google.com/p/arduino/issues/detail?id=550

Here's another example, where a feature was requested (by the Arduino Team), and I went to the trouble to produce a patch, and screenshots.  They didn't like the syntax I chose, but indicated the feature itself was good.  So after some back-and-forth to clarify what syntax would be desired, I pretty much redesigned the entire thing and submitted a second patch.  It has sat unused for 1 YEAR.

http://code.google.com/p/arduino/issues/detail?id=257

I'm particularly bitter about the very substantial work I put into that redesign.  The original approach tried to limit the scope of changes within Arduino.  Since they haven't used it, I'm left with a larger patch set which I maintain separately for Teensyduino.  Never again will I rework a patch like that.

Quote
I'm hoping that Arduino will eventually go to a make-based compilation, even if the default behavior is to recompile everything.

Bill, you know a make-based build has been brought up over and over on the developer mail list.  The idea has been consistently rejected.

Given how hard it is to get any patch accepted (other than specific fixes to accepted bugs), even in cases like these where the idea was approved, even when "patches welcome" is said, obviously there's zero chance Arduino will ever use make, even if someone is foolish enough to try contributing that code.


The Teensyduino installer is my kludge to avoid completely forking Arduino.  In hindsight, forking would be easier.  My installer is NOT version independent.  With each new Arduino version, it needs to be updated.  It only works well because I put a huge amount of work into ongoing maintenance.  I'm a little crazy like that....

I keep hoping Arduino will be more open.  In hindsight, I regret putting so much work into sharing this compile speedup.  I've easily spent 10X more time trying to get Arduino to actually use it than I did writing it in the first place!
« Last Edit: November 14, 2011, 10:08:12 am by Paul Stoffregen » Logged

SF Bay Area (USA)
Offline Offline
Tesla Member
***
Karma: 137
Posts: 6805
Strongly opinionated, but not official!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

There's "wiring" ...
I've been wondering whether they've been collecting frustrated IDE developers...
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 33
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

This is making me happy that I have 3 teensy's rather a arduino, besides this modification there is so many other things that specifically make a teensy great... I'm really surprised to see so many people buying a arduino and trying to use it as a g-code interpreter for a cnc. Teensy' 2+ offers so much more program space and communication speed...

I'd like to thank paul for supporting open source. I've seen several attempts of him trying to contribute to different projects.
if arduino doesnt resolve this issue, i'd still like to say your hard work has been appreciated by at least 2 of your customers. if only the whole community could enjoy your fixes without such a long delay from the arduino team.

Logged

0
Offline Offline
God Member
*****
Karma: 26
Posts: 626
Always making something...
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Maybe now that Arduino 1.0 is finally released, hopefully they'll have more time to look at "post-1.0" contributions like this speedup?
Logged

Forum Administrator
Cambridge, MA
Offline Offline
Faraday Member
*****
Karma: 12
Posts: 3538
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

That's my hope.

Sorry, Paul, I know it's frustrating to submit patches that languish.  I just haven't had time to properly handle everything.  That was one of the reasons I wanted to get the 1.0 release out - so that I could go back and start integrating more of the patches and changes that have been accumulated.  I'll do my best to get them sorted soon.
Logged

0
Offline Offline
God Member
*****
Karma: 26
Posts: 626
Always making something...
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Certainly there are much more urgent things than compile speedup.  Issue 527, for example.

It definitely is frustrating to see patches go unused.  I would contribute a LOT more if my existing patches were used, and Arduino in general had an openness towards contributions that was reflected in the actual usage of patches people submit.  I'm imagine quite a few other people, some of whom I know have utterly given up on contributing to Arduino.

On unused patches, I'd like to remind you about the one I submitted on issue 550.  You wrote "patches welcome" in October.  I submitted the patch 2 days later, and an improved patch after another 3 days (based on some user feedback from the first).  It has now sat for a full month.  Will it ever get used?

Especially when you say "patches welcome", but then you don't use them, that is really disheartening to contributors.

Another perfect example is "menu cleanup" (issue 257), which has sat unused for over 1 year!  I never expected my original patch to be used.  But then in November (1 year ago) you specifically asked me to completely rework the boards.txt syntax.  I did, and submitted a completely new patch within a week.  It was a substantial amount of work.  Why would you ask me to do all that work, but then never use it?

Still, I have at least a few more patches heading your way soon.  They're all little things recently discussed on the developer mail list.  I'm reluctant to submit any more "big" patches.
« Last Edit: December 02, 2011, 10:35:32 am by Paul Stoffregen » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

On the original topic (with no intent to discount the patches discussion):

I've been using teensy .99 for the "compile only what's needed" feature and it's been working wonderfully, with no issues, to reduce my debug turn-around times.  Thank you for the effort you put into it.
Logged

0
Offline Offline
God Member
*****
Karma: 26
Posts: 626
Always making something...
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Glad to hear it's working and helping you.  :-)
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Yeah your Teensy++ 2.0 kicks a$$! Its the greatest in between. Thanks for the great support also on it...
I just sort of found my self in a hard spot trying to develop my own custom micro with the at90usb1286 to fit my application. I know nothing on bootloaders.
Logged

0
Offline Offline
God Member
*****
Karma: 26
Posts: 626
Always making something...
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Glad to hear Teensy is working out so well.   smiley

This speedup was accepted into Arduino and will be in version 1.0.1.  If you're using Teensy, you already have it.  For normal Arduino, it can be tested now in the release candidates:

Mac OS X: http://files.arduino.cc/downloads/arduino-1.0.1-rc1-macosx.zip
Windows: http://files.arduino.cc/downloads/arduino-1.0.1-rc1-windows.zip
Linux (32-bit): http://files.arduino.cc/downloads/arduino-1.0.1-rc1-linux.tgz
Linux (64-bit): http://files.arduino.cc/downloads/arduino-1.0.1-rc1-linux64.tgz
Source: http://files.arduino.cc/downloads/arduino-1.0.1-rc1-src.tar.gz

If anyone reading this wants an easy way to help Arduino development, installing and using the release candidates NOW and reporting any issues soon would really be good.


Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Will do
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

< Actually your Teensy is controlling the LED strip in my Avatar pic <
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

This speedup was accepted into Arduino and will be in version 1.0.1.  If you're using Teensy, you already have it.  For normal Arduino, it can be tested now in the release candidates:

Mac OS X: http://files.arduino.cc/downloads/arduino-1.0.1-rc1-macosx.zip
Windows: http://files.arduino.cc/downloads/arduino-1.0.1-rc1-windows.zip
Linux (32-bit): http://files.arduino.cc/downloads/arduino-1.0.1-rc1-linux.tgz
Linux (64-bit): http://files.arduino.cc/downloads/arduino-1.0.1-rc1-linux64.tgz
Source: http://files.arduino.cc/downloads/arduino-1.0.1-rc1-src.tar.gz


I've updated to 1.0.1 to evaluate this feature.  I am not having luck finding the right setting to activate the incremental compile feature.  Tried adding  XXX.build.dependency=true to relevant boards in boards.txt but no luck.  Is activation of this feature documented anywhere?
Logged

0
Offline Offline
God Member
*****
Karma: 26
Posts: 626
Always making something...
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

It's always enabled.

I used .build.dependency=true in Teensyduino's pre-1.0 patch, so it wouldn't change Arduino's behavior without explicitly being enabled.  Arduino 1.0.1 does not have that option, so it's always enabled.  There is no option to disable it.  But if you select another board from Tools > Boards, even temporarily, the next Verify or Upload will recompile everything.  So if you want to compare the speed, just change the board and then set it back, to do a test where all files are recompiled.

If File > Preferences you can activate verbose messages while compiling.  Those messages should indicate if the compiler is being run, or the already-compiled file is being reused.
« Last Edit: June 03, 2012, 01:38:11 pm by Paul Stoffregen » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

If File > Preferences you can activate verbose messages while compiling.  Those messages should indicate if the compiler is being run, or the already-compiled file is being reused.

Thanks Paul.  I did a test build of the BareMinimum sketch build for an Uno board.  The two builds look identical to me.  I'm sure I'm doing something wrong, need to keep searching to figure out what.  Attached are the 1st and 2nd build files with verbose on.  Thanks for the reply.

George

* bare_minimum_1st_run.log (14.96 KB - downloaded 19 times.)
* bare_minimum_2nd_run.log (14.96 KB - downloaded 19 times.)
« Last Edit: June 03, 2012, 02:35:03 pm by MGeo » Logged

Pages: 1 [2] 3   Go Up
Jump to: