meteor / meteor

Meteor, the JavaScript App Platform
https://meteor.com
Other
44.09k stars 5.16k forks source link

Meteor build time/refresh time after file save is VERY slow #4284

Closed cdcv closed 7 years ago

cdcv commented 9 years ago

_4 Upvotes_ I have reasonably large app that I'm working on. When I make any change to the code and press 'save', the time to build the app and refresh the browser is very long, and also highly variable. It is typically 30-60s. A colleague is working on the same app, and is using a similar machine (both are 1-2 year old high-end MacBook Pro), and in his environment the build time is typically <5s. When I make changes to a small demo project, the refresh time is <2-3s. I have tried a bunch of things, including reinstalling meteor, but to no avail. This is bringing development to its knees. What can I do?

Thank you for your help?

shadowzick commented 8 years ago

+1

devgrok commented 8 years ago

I'd recommend everyone who's having slow builds try setting the following environment variables METEOR_DEBUG_BUILD=1 METEOR_PROFILE=1

It will tell give you the timings which should show the areas that are slow (verbose only shows messages on checking package versions not all the other steps so it gives the wrong impression of where the slow down occurs).

coffenbacher commented 8 years ago

@devgrok I'm getting ~15s reloads on the tutorial and arrived here. Here are the results with those settings for me: https://gist.github.com/coffenbacher/c15873390b9b604c792c

Edit: Using your patch speeds up reloads to about ~5s.

coffenbacher commented 8 years ago

I just rebuilt my environment on a VM on my local machine (instead of hosted VM) - still very slow. Way slower than I'm used to with something like React Hot Loader (based on Webpack).

Edit: and tried again on a $130 / month Azure VM with 7gb of RAM and two 3.3ghz Xeon E5-2673 v3 CPUs, SSD, Ubuntu 64-bit. The fastest reload I can get on the starter app (three files) is 10 seconds using the public Meteor.

Edit2: Giving up on Meteor again, this is too painful.

quape commented 8 years ago

It's probably because Meteor is doing some fractal rendering or SETI calculations in 14 of your 15 seconds.

TankOs commented 8 years ago

I'm experiencing the same issue on Arch Linux, 64 bit, AMD Phenom II X4 CPU, 4 GB RAM, HDD. Selecting the packages alone takes almost 4 seconds. Having to wait 6-10 seconds for every little change (HTML, JS) is indeed very very annoying.

Here's the profiling output: http://dpaste.com/0904JNE

Packages:

angular                         1.3.0
angularui:angular-ui-bootstrap  0.13.0
angularui:angular-ui-router     0.2.15
cfs:filesystem                  0.1.2
cfs:s3                          0.1.3
cfs:standard-packages           0.5.9
es5-shim                        4.1.14
flemay:less-autoprefixer        1.2.0
fortawesome:fontawesome         4.5.0
fourseven:scss                  3.4.1
insecure                        1.0.4
jquery                          1.11.4
meteor-base                     1.0.1
mobile-experience               1.0.1
mongo                           1.1.3
session                         1.1.1
standard-minifiers              1.0.2
stevezhu:lodash                 3.10.1
tracker                         1.0.9
twbs:bootstrap                  3.3.6

Anything else I can help with?

ronhornbaker commented 8 years ago

Same issue here, evaluating latest vanilla Meteor and your Local Market example app on a 2012 MacBook Air with SSD (fairly fast machine in all other aspects). Seeing about a 10s delay between saving a change in home.html and the server refreshing the browser. Very painful at 10, can't imagine waiting longer with a larger project.

Have also been evaluating React Native recently, where file changes result in nearly instant refreshes on a tethered iPhone and simulator (at same time). Apples to oranges, I know, but still – I want to bet the future on Meteor for mobile dev but slow build cycles may be enough to force me to pass.

devgrok commented 8 years ago

I found that when I had a completely clean checkout of the meteor source and using the smallest helloWorld project, the loadFromCatalog was quick. As soon as I downloaded any packages (whether the project was using it or not) the speed slowed down considerably. Didn't try it with the release version of meteor but I imagine it would be the same result (quick with empty local package cache, slow with packages cached).

Another tip - I had a modified version of a library downloaded (via bower) into my public folder. This library (materialize) had a lot of source and compiled files and meteor was copying across (during a copy phase) the entire directory. Even with a SSD it was taking several seconds. Turning this library into a package sped it up and also allowed me to select the files I actually wanted it to copy across.

I also ditched the package 'standard-minifiers' for the time being. Not sure if it should have been activating in development but if it is then removing it can at least cut another step out.

NazarK commented 8 years ago

having tendency to return back to RoR because of this, only good usage for meteor I see is building simple mobile apps with meteor.

becomingbabyman commented 8 years ago

Has the MDG team weighed in on this? Are they still working on issues?

rclai commented 8 years ago

They are working on this here.

ORESoftware commented 8 years ago

does anyone know how I can unfollow this thread? On Dec 14, 2015 2:46 PM, "Ron Hornbaker" notifications@github.com wrote:

Same issue here, evaluating latest vanilla Meteor and your Local Market example app on a 2012 MacBook Air with SSD (fairly fast machine in all other aspects). Seeing about a 10s delay between saving a change in home.html and the server refreshing the browser. Very painful at 10, can't imagine waiting longer with a larger project.

Have also been evaluating React Native recently, where file changes result in nearly instant refreshes on a tethered iPhone and simulator (at same time). Apples to oranges, I know, but still – I want to bet the future on Meteor for mobile dev but slow build cycles may be enough to force me to pass.

— Reply to this email directly or view it on GitHub https://github.com/meteor/meteor/issues/4284#issuecomment-164583777.

coffenbacher commented 8 years ago

Click Unsubscribe on the upper right hand side of Github web UI https://help.github.com/articles/unsubscribing-from-conversations/

aofrozen commented 8 years ago

I found a solution to make meteor build faster by removing LESS, SASS, and reducing around 200 files to 7 files with Gulp and using RAM drive (optional). Gulp completed under 100ms to bundle all javascript & html files to 7 files and compile SASS & LESS to CSS.

Without gulp, meteorjs build completed around 15 seconds.

With gulp, meteorjs build completed around 4.2 seconds (select Package Versions: 3.1 seconds and total 1.1 seconds)

quangv commented 8 years ago

@aofrozen nice.

Care to share your Gulpfile? :smile:

aofrozen commented 8 years ago

If you have slow internet then it will slow your development due to meteor solver (select package versions) will try to connect packages site. Solution is stay internet offline while working on project that will be fast.

Gulpfile here:

var gulp = require('gulp');

var gutil = require('gulp-util'), //jshint = require('gulp-jshint'), //browserify = require('gulp-browserify'), concat = require('gulp-concat'), //minifyCss = require('gulp-minify-css'), copy = require('gulp-copy'), //plumber = require('gulp-plumber'), //uglify = require('gulp-uglify'), //sourcemaps = require('gulp-sourcemaps'), //rename = require('gulp-rename'), //source = require('vinyl-source-stream'), watchify = require('watchify'), //buffer = require('vinyl-buffer'), fastbrowserify = require('browserify'), assign = require('lodash.assign'), //karma = require('gulp-karma'), sass = require('gulp-sass');

/* METEOR OPTIMIZATION */

gulp.task('meteor', function(){ gulp.start('sass:watch', 'jsclient:watch', 'htmlclient:watch', 'libclient:watch', 'libclient:watch', 'lib:watch', 'jsserver:watch', 'collections:watch'); });

//ALL SASS FILES gulp.task('sass:watch', function () { gulp.start('sass'); gulp.watch(['sass/_.sass', 'client/_/.sass'], ['sass']); });

gulp.task('sass', function () { gulp.src(['sass/_.sass', 'client/_/.sass']) .pipe(sass().on('error', sass.logError)) .pipe(concat('bundle.css')) .pipe(gulp.dest('desktop/client/css')); });

//CLIENT JS gulp.task('jsclient:watch', function(){ gulp.start('jsclient'); gulp.watch('client/*/.js', ['jsclient']); });

gulp.task('jsclient', function(){ console.log('client js is changed'); gulp.src(['client/*/.js']) .pipe(concat('bundle.js')) .pipe(gulp.dest('desktop/client/')); });

//CLIENT HTML gulp.task('htmlclient:watch', function(){ gulp.start('htmlclient'); gulp.watch('client/*/.html', ['htmlclient']); });

gulp.task('htmlclient', function(){ console.log('html client is changed'); gulp.src(['client/*/.html']) .pipe(concat('bundle.html')) .pipe(gulp.dest('desktop/client/')); });

//CLIENT LIB gulp.task('libclient:watch', function(){ gulp.start('libclient'); gulp.watch('libclient/*.js', ['libclient']); });

gulp.task('libclient', function(){ console.log('client lib client js is changed'); gulp.src(['libclient/*.js']) .pipe(concat('lib-bundle.js')) .pipe(gulp.dest('desktop/lib/client')); });

//COLLECTION gulp.task('collections:watch', function(){ gulp.start('collections'); gulp.watch(['lib/collections/*.js'], ['lib']); });

gulp.task('collections', function(){ console.log('collection js is changed'); gulp.src(['lib/collections/*.js']) .pipe(concat('collections.js')) .pipe(gulp.dest('desktop/lib/collections')); });

//LIBRARY FOR BOTH SERVER AND CLIENT gulp.task('lib:watch', function(){ gulp.start('lib'); gulp.watch(['lib/*.js'], ['lib']); });

gulp.task('lib', function(){ console.log('lib js is changed'); gulp.src(['lib/*.js']) .pipe(concat('lib.js')) .pipe(gulp.dest('desktop/lib')); });

//SERVER gulp.task('jsserver:watch', function(){ gulp.start('jsserver'); gulp.watch('server/*.js', ['jsserver']); });

gulp.task('jsserver', function(){ console.log('server js is changed'); gulp.src(['server/*.js']) .pipe(concat('bundle.js')) .pipe(gulp.dest('desktop/server')); });

aofrozen commented 8 years ago

@coffenbacher

I think your meteor project was slow because of your poor internet/connection.

aofrozen commented 8 years ago

I fixed meteorjs' solver performance by adding cache. I am not sure how to contribute meteorjs.

Meteor solver average was 3-4 seconds. Now it is 800ms to 1 second.

Select Package Versions: 936.1 new CS.Input: 2.5 Input#loadFromCatalog (sqlite): 820.2 other Select Package Versions: 113.5
Input#loadFromCatalog (sqlite): 820.2
other Select Package Versions: 113.5
new CS.Input: 2.5
Total: 936.1
files.readFile: 125.1
files.exists: 2.5
Rebuild App: 1226.1
compiler.compile(the app): 139.8
Isopack#getUnibuildAtArch: 3.4
files.readdir: 4.6
files.stat: 18.0
files.realpath: 4.4
files.readFile: 28.0
sha1: 50.7
other compiler.compile(the app): 30.8
Isopack#getUnibuildAtArch: 4.9
bundler.bundle..makeClientTarget: 885.2
Target#make: 885.1
Isopack#getUnibuildAtArch: 37.9
Target#_runCompilerPlugins: 220.8
files.stat: 2.8
Isopack#ensurePluginsInitialized: 1.0
sha1: 19.6
Isopack#getUnibuildAtArch: 21.9
processing files with ecmascript (for target web.browser): 22.2
other processing files with ecmascript (for target web.browser): 21.8
processing files with templating (for target web.browser): 12.2
sha1: 1.2
other processing files with templating (for target web.browser): 10.9
processing files with meteor (for target web.browser): 2.5
processing files with ecmascript (for target web.cordova): 19.8
other processing files with ecmascript (for target web.cordova): 19.2
processing files with templating (for target web.cordova): 10.9
sha1: 1.3
other processing files with templating (for target web.cordova): 9.5
processing files with meteor (for target web.cordova): 1.2
other Target#_runCompilerPlugins: 104.3
Target#_emitResources: 514.1
PackageSourceBatch#getResources: 500.4
PackageSourceBatch#_linkJS: 493.0
sha1: 4.8
files.readFile: 160.2
Isopack#getUnibuildAtArch: 22.2
other PackageSourceBatch#_linkJS: 305.7
other PackageSourceBatch#getResources: 7.4
other Target#_emitResources: 13.7
sha1: 46.8
other Target#make: 64.8
bundler..writeTargetToPath: 187.9
ClientTarget#write: 186.9
Builder#write: 31.9
Builder#_ensureDirectory: 2.3
sha1: 19.9
other Builder#write: 9.7
bundler..writeFile: 16.3
Builder#write: 12.7
Builder#_ensureDirectory: 3.3
other Builder#write: 9.4
other bundler..writeFile: 3.7
files.writeFile: 2.7
other ClientTarget#write: 135.3
other Rebuild App: 7.8
files.readFile: 313.3
other PackageSourceBatch#_linkJS: 305.7
sha1: 145.6
other ClientTarget#write: 135.3
other Target#_runCompilerPlugins: 104.3
Isopack#getUnibuildAtArch: 90.3
other Target#make: 64.8
other compiler.compile(the app): 30.8
other processing files with ecmascript (for target web.browser): 21.8
files.stat: 21.1
other processing files with ecmascript (for target web.cordova): 19.2
other Builder#write: 19.0
other Target#_emitResources: 13.7
other processing files with templating (for target web.browser): 10.9
other processing files with templating (for target web.cordova): 9.5
other Rebuild App: 7.8
other PackageSourceBatch#getResources: 7.4
Builder#_ensureDirectory: 5.6
files.readdir: 4.6
files.realpath: 4.4
other bundler..writeFile: 3.7
files.writeFile: 2.7
files.exists: 2.7
processing files with meteor (for target web.browser): 2.5
processing files with meteor (for target web.cordova): 1.2
Isopack#ensurePluginsInitialized: 1.1
Total: 1349.0
quape commented 8 years ago

How can I switch to dev mode?

ljack commented 8 years ago

Meteor build time is starting to bother me really much, let's work a solution to reduce it significantly.

METEOR_PROFILE=1 meteor startup http://pastebin.com/C70FebST Total: 18473.6 METEOR_PROFILE=1 meteor single edit in single html http://pastebin.com/qxCv6cYp Total: 7212.3

Also startup with METEOR_DEBUG_BUILD=1 http://pastebin.com/y3pn0F4K startup and reload http://pastebin.com/jCYZEnBr

The startup time I can live with but the refresh time is really getting on me ;)

MichaelJCole commented 8 years ago

I have a SSD with 500mb/s read, and Meteor spends 10 seconds querying sqlite for a 30 seconds build.

Downgrading/upgrading Meteor actually made it worse. I can't imagine anyone with a HDD using meteor for a non-tutorial-scale project.

Frustrated. Your gulp file should make me laugh, but it's not working. This seems to be a pretty long-standing issue. Looking forward to any kind of fix.

ljack commented 8 years ago

Actually I did debug this a bit and there seems to be couple of reasons why it's so slow. 1st meteor actually runs/scans multiple versions of meteor-tool package directories. If you could do strace meteor help 2> meteor-strace.out and put that in pastebin so we could verify if this also happens on your system.

For me a quick fix for reducing reload time (this release doesn't help with startup) was to use 1.2.2-faster-rebuilds.0. But it helps with sqlite query times and reloading.

And remove any additional (besides 1.1.11-faster-rebuild.0 ) symlinks in ~/.meteor/packages/meteor-tool/ to reduce the time just a little bit more. Unfortunately meteor always downloads some "stable" (currently seems to be 1.1.10 ) version of meteor-tools and re-installs it back ;( So don't bother actually removing the symlinks in ~/.meteor/packages/meteor-tool unless you do it everytime (in a script e.g.) when starting meteor.. (but it still helps to reduce the startup time ;)

Startup with symlinks removed: http://pastebin.com/4hJc83CU | Total: 19516.4 Startup with symlinks present: http://pastebin.com/VCK33e0q | Total: 144699.6

~/.meteor/packages/meteor-tool> ls
1.1.10@   1.1.11-modules.5@  1.1.12-modules.5@  1.1.9@

meteor update --release 1.2.2-faster-rebuilds.0

ls -l ~/.meteor/packages/meteor-tool/
# delete other versions of meteor-tool except 1.1.11-faster-rebuild.0
cd ~/.meteor/packages/meteor-tool/
~/.meteor/packages/meteor-tool/> rm 1.1.10
~/.meteor/packages/meteor-tool/> rm 1.1.11-modules.5
~/.meteor/packages/meteor-tool/> rm 1.1.12-modules.5
~/.meteor/packages/meteor-tool/> rm 1.1.9

# fix meteor symlink in ̃~/.meteor/  see 1) below
~/.meteor> ls -l
total 12
lrwxrwxrwx   1 ubuntu ubuntu   53 Jan 29 18:17 meteor -> packages/meteor-tool/1.1.10/mt-os.linux.x86_64/meteor
drwxr-xr-x   4 ubuntu ubuntu 4096 Dec  9 21:26 package-metadata/
drwxr-xr-x 290 ubuntu ubuntu 4096 Feb  1 01:45 packages/
drwxr-xr-x   2 ubuntu ubuntu 4096 Jan 19 18:41 releases/
~/.meteor> 
ln -sf packages/meteor-tool/1.1.11-faster-rebuild.0/mt-os.linux.x86_64/meteor meteor
 ~/.meteor> ls -l
total 16
lrwxrwxrwx   1 ubuntu ubuntu   70 Feb  2 05:27 meteor -> packages/meteor-tool/1.1.11-faster-rebuild.0/mt-os.linux.x86_64/meteor*

1) if the meteor symlink is broken in ~/.meteor/ you'll see this

'/home/ubuntu/.meteor' exists, but '/home/ubuntu/.meteor/meteor' is not executable.

Also .meteor/local/bundler-cache/linker-directory in your meteor app directory could have several hundred megabytes of files in it and sometimes it helps to clean it. You can safely remove the whole directory.

ljack1:~/workspace/PITPA/.meteor/local/bundler-cache/linker (meteor-1.2.1) $ pwd
/home/ubuntu/workspace/PITPA/.meteor/local/bundler-cache/linker
ljack1:~/workspace/PITPA/.meteor/local/bundler-cache/linker (meteor-1.2.1) $ du -sh
29M     .

But basically meteor is very slow to rebuild. But it just might be doing too much.

MichaelJCole commented 8 years ago

I looked into it a bit from the sqlite standpoint. #6137

aofrozen commented 8 years ago

I am not sure what kind of problems you have. It can be a slow connection, meteor version, how many packages and files, and other factors.

On Mon, Feb 1, 2016 at 5:34 PM, Michael Cole notifications@github.com wrote:

I have a SSD, and Meteor spends 10 seconds querying sqlite for a 30 seconds build http://pastebin.com/wwDtYpxk.

Downgrading/upgrading Meteor actually made it worse.

Frustrated. Your gulp file should make me laugh, but it's not working. This seems to be a pretty long-standing issue. Looking forward to any kind of fix.

— Reply to this email directly or view it on GitHub https://github.com/meteor/meteor/issues/4284#issuecomment-178297622.

bryaan commented 8 years ago

meteor update --release METEOR@1.3-modules-beta.8

From 6-10s to 1-2s.

:thumbsup:

lnmunhoz commented 8 years ago

@MichaelJCole I just tested the METEOR@1.3-modules-beta.8 release and the rebuild now is so much better!

ljack commented 8 years ago

Meteor 1.3-modules-beta.8 rocks!! Can't avoid giving my +1 ;)

MichaelJCole commented 8 years ago

@lnmunhoz Awesome! <3 it!

chbiel commented 8 years ago

the problem still exists for me. when i use npm and meteor packages side by side and local packages i have a "check for ..."-time of 5-10 seconds plus build time for the platforms

steve-ross commented 8 years ago

I think i spend half my day waiting for meteor to refresh, we don't have the luxury of just jumping to a new dev build. I actually enjoyed working on another app the other day that was using livereload & grunt refresh happened so fast I didn't even see it.

allpratik commented 8 years ago

This is problem with me as well... takes forever to refresh.

steve-ross commented 8 years ago

Running meteor update --release 1.2.2-faster-rebuilds.0 on my project did help but, annoying to have to stash meteor versions every time i want to commit code to our repo.

Any changes to server side javascript is still slow though.

bryaan commented 8 years ago

Same experience with modding js code. Hopefully this is a priority for the devs. Depending on your coding style these few seconds can really add up.

Sure you have the option to not refresh often and just bang out the code, but that brings us to the second major problem. Where are the error messages? Meteor fails quietly. Not good.

I noticed the dev version can cause quite a few problems with probject libs. I'm in the business of getting things done, and these problems did not have trivial solutions, so I had no choice but to revert.

I'll buy a beer for the dev who solves this :)

On Wednesday, March 2, 2016, Steve Ross notifications@github.com wrote:

Running meteor update --release 1.2.2-faster-rebuilds.0 on my project did help but, annoying to have to stash meteor versions every time i want to create a build.

Any changes to server side javascript is still slow though.

— Reply to this email directly or view it on GitHub https://github.com/meteor/meteor/issues/4284#issuecomment-191329342.

steve-ross commented 8 years ago

yeah agreed, I'll chip in a whole case of beer =)

probably spend at least 1/2 hour a day waiting for re-loads @30secs +

aunz commented 8 years ago

My 2 cents. I recently updated from 1.2.1 to 1.3 and notice that rebuild time has become slower and that it takes longer for the client browser to refresh. On Windows 10 x64, 8GB ram, i5 2.8 GHz

The profile output below is from a bare minimum app, it takes >4 seconds to rebuild. It appears that files.lstat takes up most of the time. In comparison, in 1.2.1, it took less than a second on my computer.

refreshing (x5)| (#13) Profiling: ProjectContext prepareProjectForBuild
|
| ProjectContext prepareProjectForBuild...........................150 ms (1)
| ├─ _initializeCatalog............................................31 ms (1)
| │  ├─ files.readFile                                             10 ms (27)
| │  ├─ files.exists                                                3 ms (15)
| │  ├─ runJavaScript package.js                                    1 ms (15)
| │  └─ other _initializeCatalog                                   15 ms
| ├─ _resolveConstraints...........................................72 ms (1)
| │  ├─ Select Package Versions....................................68 ms (1)
| │  │  ├─ new CS.Input                                             3 ms (1)
| │  │  └─ other Select Package Versions                           65 ms
| │  └─ other _resolveConstraints                                   4 ms
| ├─ _downloadMissingPackages......................................44 ms (1)
| │  ├─ Isopack.readMetadataFromDirectory..........................26 ms (60)
| │  │  ├─ files.exists                                             8 ms (60)
| │  │  ├─ files.readFile                                          14 ms (60)
| │  │  └─ other Isopack.readMetadataFromDirectory                  4 ms
| │  └─ other _downloadMissingPackages                             18 ms
| └─ _buildLocalPackages............................................3 ms (1)
|    ├─ IsopackCache Load local isopack.............................2 ms (60)
|    │  └─ Isopack#getStrongOrderedUsedAndImpliedPackages           1 ms (60)
|    └─ other _buildLocalPackages                                   1 ms
|
| Top leaves:
|
| (#13) Total: 150 ms (ProjectContext prepareProjectForBuild)
|
| (#14) Profiling: Rebuild App
|
| files.readFile                                                    3 ms (2)
| files.exists                                                      1 ms (3)
| files.writeFileAtomically........................................23 ms (1)
| └─ files.writeFile                                               22 ms (1)
| Rebuild App...................................................4,107 ms (1)
| ├─ compiler.compile(the app)..................................3,260 ms (1)
| │  └─ compileUnibuild (the app)...............................3,260 ms (2)
| │     ├─ files.readdir                                          282 ms (1340)
| │     ├─ files.stat                                               5 ms (70)
| │     ├─ files.realpath                                           5 ms (8)
| │     ├─ files.readFile                                           2 ms (9)
| │     ├─ files.lstat                                          2,306 ms (13062)
| │     ├─ files.exists                                            49 ms (354)
| │     └─ other compileUnibuild (the app)                        611 ms
| ├─ compiler.lint(the app)                                         2 ms (1)
| ├─ bundler.bundle..makeClientTarget.............................738 ms (1)
| │  └─ Target#make...............................................738 ms (1)
| │     ├─ Isopack#getUnibuildAtArch                                6 ms (341)
| │     ├─ Target#_runCompilerPlugins.............................196 ms (1)
| │     │  ├─ files.realpath                                       49 ms (37)
| │     │  ├─ sha1                                                  4 ms (138)
| │     │  ├─ Isopack#getUnibuildAtArch                             6 ms (335)
| │     │  ├─ plugin ecmascript...................................103 ms (1)
| │     │  │  ├─ Babel.compile                                     70 ms (36)
| │     │  │  ├─ sha1                                               1 ms (36)
| │     │  │  └─ other plugin ecmascript                           31 ms
| │     │  └─ other Target#_runCompilerPlugins                     33 ms
| │     ├─ Target#_emitResources..................................512 ms (1)
| │     │  ├─ PackageSourceBatch.computeJsOutputFilesMap..........493 ms (1)
| │     │  │  ├─ ImportScanner#_getInstallPath                     72 ms (338)
| │     │  │  ├─ ImportScanner#_findImportedModuleIdentifiers       5 ms (313)
| │     │  │  ├─ ImportScanner#_tryToResolveImportedPath..........216 ms (864)
| │     │  │  │  ├─ files.stat                                    114 ms (1126)
| │     │  │  │  ├─ ImportScanner#_resolvePkgJsonMain..............10 ms (12)
| │     │  │  │  │  ├─ ImportScanner#_readFile......................4 ms (10)
| │     │  │  │  │  │  └─ files.readFile                            4 ms (10)
| │     │  │  │  │  ├─ ImportScanner#_getInstallPath                1 ms (9)
| │     │  │  │  │  └─ other ImportScanner#_resolvePkgJsonMain      3 ms
| │     │  │  │  └─ other ImportScanner#_tryToResolveImportedPath  92 ms
| │     │  │  ├─ ImportScanner#_readFile..........................132 ms (286)
| │     │  │  │  ├─ files.readFile                                119 ms (286)
| │     │  │  │  ├─ sha1                                            5 ms (286)
| │     │  │  │  └─ other ImportScanner#_readFile                   8 ms
| │     │  │  └─ other PackageSourceBatch.computeJsOutputFilesMap  69 ms
| │     │  ├─ PackageSourceBatch#getResources......................17 ms (38)
| │     │  │  └─ PackageSourceBatch#_linkJS........................16 ms (38)
| │     │  │     ├─ linker.fullLink.................................6 ms (1)
| │     │  │     │  └─ linker Module#getPrelinkedFiles..............6 ms (1)
| │     │  │     │     ├─ linker File#getPrelinkedOutput            2 ms (5)
| │     │  │     │     └─ getPrelinkedFiles toStringWithSourceMap   4 ms (1)
| │     │  │     └─ other PackageSourceBatch#_linkJS                9 ms
| │     │  └─ other Target#_emitResources                           2 ms
| │     ├─ Target#minifyJs                                          4 ms (1)
| │     ├─ sha1                                                    16 ms (40)
| │     └─ other Target#make                                        5 ms
| ├─ bundler writeTargetToPath....................................105 ms (1)
| │  ├─ ClientTarget#write.........................................82 ms (1)
| │  │  ├─ files.mkdir                                              1 ms (3)
| │  │  ├─ bundler writeFile.......................................63 ms (40)
| │  │  │  └─ Builder#write........................................62 ms (40)
| │  │  │     ├─ Builder#_ensureDirectory                           1 ms (40)
| │  │  │     ├─ files.writeFile                                   30 ms (40)
| │  │  │     ├─ files.rename                                      26 ms (40)
| │  │  │     └─ other Builder#write                                5 ms
| │  │  ├─ Builder#write...........................................11 ms (7)
| │  │  │  ├─ files.writeFile                                       6 ms (7)
| │  │  │  └─ files.rename                                          5 ms (7)
| │  │  └─ other ClientTarget#write                                 5 ms
| │  └─ Builder#complete...........................................21 ms (1)
| │     └─ files.renameDirAlmostAtomically.........................21 ms (1)
| │        ├─ files.rename                                          1 ms (2)
| │        └─ files.rm_recursive                                   20 ms (1)
| └─ other Rebuild App                                              2 ms
|
| Top leaves:
| files.lstat..............................................2,306 ms (13062)
| other compileUnibuild (the app)............................611 ms (2)
| files.readdir..............................................282 ms (1340)
| files.readFile.............................................128 ms (308)
| files.stat.................................................121 ms (1207)
|
| (#14) Total: 4,134 ms (Rebuild App)
|
=> Client modified -- refreshing (x6)
snajjar commented 8 years ago

+1, Meteor build is slower on 1.3 (causing some deployment scripts to fail)

richard-edwards commented 8 years ago

My build times are terrible as well. I'm on Windows 10 x64, i7 with 32GB RAM and project is on a SSD.

Big culprit is files.lstat with 16,211 ms on Windows 10 machine

Total Rebuild by removing an empty line on a jsx file:

Windows - 28,098 ms Mac Mini - 2,745 ms

Here is the top ones for the Windows machine:

Top leaves:                                                               
files.lstat.............................................15,883 ms (133434)
other compileUnibuild (the app)..........................5,062 ms (2)     
files.writeFile..........................................2,382 ms (236)   
files.readdir............................................1,926 ms (11357) 
files.stat.................................................436 ms (5038)  
files.readFile.............................................286 ms (1088)  
other ImportScanner#_tryToResolveImportedPath..............271 ms (2317)  
other PackageSourceBatch.computeJsOutputFilesMap...........221 ms (1)     
files.rm_recursive.........................................193 ms (2)     
CssTools.parseCss..........................................193 ms (9)     
files.rename...............................................173 ms (238)   
Babel.compile..............................................172 ms (151)   
ImportScanner#_getInstallPath..............................160 ms (977)   
CssTools.stringifyCss......................................152 ms (1)     
s7dhansh commented 8 years ago

For me its Babel.compile (Meteor 1.2 used to give me 1s reload time, 1.3 gives 7s)

Top leaves:
| Babel.compile............................................2,759 ms (290)
| files.readFile...........................................1,818 ms (8855)
| other compileUnibuild (the app)............................585 ms (2)
| other ClientTarget#write...................................318 ms (1)
| sha1.......................................................273 ms (10530)
patrickml commented 8 years ago

Meteor 1.3 Full Build Time Report -- Most definitely slower

The 89 seconds at the bottom is concerning...

 START CAPTURE 0 undefined took NaN
| (#1) Profiling: ProjectContext prepareProjectForBuild
   START 1 preparing project
     START 2 reading project metadata
     DONE 2 reading project metadata took 9
     START CAPTURE 2 undefined took NaN
       START 3 scanning local packages
         START 4 looking for packages
         DONE 4 looking for packages took 12
         START 4 initializing packages
         DONE 4 initializing packages took 0
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/flex-2/packages/collections`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/flex-2/packages/collections`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/flex-2/packages/collections` took 1
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/flex-2/packages/collections` took 8
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/flex-2/packages/core`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/flex-2/packages/core`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/flex-2/packages/core` took 1
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/flex-2/packages/core` took 5
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/flex-2/packages/mail-parser`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/flex-2/packages/mail-parser`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/flex-2/packages/mail-parser` took 2
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/flex-2/packages/mail-parser` took 4
         START 4 initializing packages child
         DONE 4 initializing packages child took 1
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/accounting`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/accounting`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/accounting` took 4
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/accounting` took 7
         START 4 initializing packages child
         DONE 4 initializing packages child took 3
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/admob`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/admob`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/admob` took 1
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/admob` took 9
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/braintree`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/braintree`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/braintree` took 1
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/braintree` took 4
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/collection-methods`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/collection-methods`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/collection-methods` took 1
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/collection-methods` took 3
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/comments`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/comments`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/comments` took 1
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/comments` took 3
         START 4 initializing packages child
         DONE 4 initializing packages child took 1
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/core`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/core`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/core` took 2
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/core` took 5
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/errors-to-github-issue`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/errors-to-github-issue`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/errors-to-github-issue` took 4
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/errors-to-github-issue` took 22
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/flex-email`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/flex-email`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/flex-email` took 5
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/flex-email` took 11
         START 4 initializing packages child
         DONE 4 initializing packages child took 1
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/flex-lib`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/flex-lib`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/flex-lib` took 1
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/flex-lib` took 5
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/flex-theme`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/flex-theme`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/flex-theme` took 1
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/flex-theme` took 6
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/floatlabels`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/floatlabels`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/floatlabels` took 5
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/floatlabels` took 9
         START 4 initializing packages child
         DONE 4 initializing packages child took 1
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/http-status`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/http-status`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/http-status` took 2
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/http-status` took 8
         START 4 initializing packages child
         DONE 4 initializing packages child took 1
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/meteor-braintree`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/meteor-braintree`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/meteor-braintree` took 1
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/meteor-braintree` took 3
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/meteor-mongo-algolia-sync`
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/meteor-mongo-algolia-sync` took 2
         START 4 initializing packages child
         DONE 4 initializing packages child took 1
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/meteor-publish-composite`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/meteor-publish-composite`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/meteor-publish-composite` took 1
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/meteor-publish-composite` took 3
         START 4 initializing packages child
         DONE 4 initializing packages child took 1
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/meteor-stripe-sync`
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/meteor-stripe-sync` took 2
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/meteor-transitioner`
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/meteor-transitioner` took 3
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/osmosis`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/osmosis`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/osmosis` took 2
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/osmosis` took 6
         START 4 initializing packages child
         DONE 4 initializing packages child took 3
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/react-layouts`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/react-layouts`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/react-layouts` took 2
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/react-layouts` took 7
         START 4 initializing packages child
         DONE 4 initializing packages child took 2
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/react-mediumeditor`
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/react-mediumeditor` took 8
         START 4 initializing packages child
         DONE 4 initializing packages child took 2
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/react-modal`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/react-modal`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/react-modal` took 2
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/react-modal` took 5
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/react-quill`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/react-quill`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/react-quill` took 2
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/react-quill` took 4
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/sideburns`
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/sideburns` took 2
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/singularity`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/singularity`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/singularity` took 1
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/singularity` took 4
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/swal`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/swal`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/swal` took 2
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/swal` took 4
         START 4 initializing packages child
         DONE 4 initializing packages child took 1
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/taxjar`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/taxjar`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/taxjar` took 2
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/taxjar` took 3
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/validate-form`
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/validate-form` took 2
         START 4 initializing packages child
         DONE 4 initializing packages child took 0
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/validate-password`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/validate-password`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/validate-password` took 1
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/validate-password` took 5
         START 4 initializing packages child
         DONE 4 initializing packages child took 1
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/validate-phone`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/validate-phone`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/validate-phone` took 4
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/validate-phone` took 10
         START 4 initializing packages child
         DONE 4 initializing packages child took 1
         START 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/wormhole`
           START 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/wormhole`
           DONE 5 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/wormhole` took 1
         DONE 4 reading package from `/Users/patricklewis/Documents/sites/meteor/packages/wormhole` took 4
       DONE 3 scanning local packages took 242
     END CAPTURE 2 undefined took 244
     START CAPTURE 2 undefined took NaN
       START 3 selecting package versions
         START CAPTURE 4 loading isopacket `constraint-solver` took NaN
         END CAPTURE 4 loading isopacket `constraint-solver` took 66
       DONE 3 selecting package versions took 4520
     END CAPTURE 2 undefined took 4520
     START CAPTURE 2 undefined took NaN
       START 3 downloading missing packages
         START 4 checking for accounts-base@1.2.5
         DONE 4 checking for accounts-base@1.2.5 took 11
         START 4 checking for accounts-password@1.1.7
         DONE 4 checking for accounts-password@1.1.7 took 3
         START 4 checking for acemtp:algolia@3.9.1
         DONE 4 checking for acemtp:algolia@3.9.1 took 2
         START 4 checking for alanning:roles@1.2.15
         DONE 4 checking for alanning:roles@1.2.15 took 3
         START 4 checking for allow-deny@1.0.3
         DONE 4 checking for allow-deny@1.0.3 took 2
         START 4 checking for autoupdate@1.2.7
         DONE 4 checking for autoupdate@1.2.7 took 2
         START 4 checking for babel-compiler@6.6.1
         DONE 4 checking for babel-compiler@6.6.1 took 1
         START 4 checking for babel-runtime@0.1.7
         DONE 4 checking for babel-runtime@0.1.7 took 2
         START 4 checking for base64@1.0.7
         DONE 4 checking for base64@1.0.7 took 3
         START 4 checking for binary-heap@1.0.7
         DONE 4 checking for binary-heap@1.0.7 took 3
         START 4 checking for blaze@2.1.6
         DONE 4 checking for blaze@2.1.6 took 2
         START 4 checking for blaze-tools@1.0.7
         DONE 4 checking for blaze-tools@1.0.7 took 1
         START 4 checking for boilerplate-generator@1.0.7
         DONE 4 checking for boilerplate-generator@1.0.7 took 1
         START 4 checking for caching-compiler@1.0.3
         DONE 4 checking for caching-compiler@1.0.3 took 2
         START 4 checking for caching-html-compiler@1.0.5
         DONE 4 checking for caching-html-compiler@1.0.5 took 2
         START 4 checking for callback-hook@1.0.7
         DONE 4 checking for callback-hook@1.0.7 took 2
         START 4 checking for check@1.1.3
         DONE 4 checking for check@1.1.3 took 2
         START 4 checking for coffeescript@1.0.16
         DONE 4 checking for coffeescript@1.0.16 took 2
         START 4 checking for cosmos:browserify@0.10.0
         DONE 4 checking for cosmos:browserify@0.10.0 took 3
         START 4 checking for dburles:collection-helpers@1.0.4
         DONE 4 checking for dburles:collection-helpers@1.0.4 took 3
         START 4 checking for dburles:google-maps@1.1.5
         DONE 4 checking for dburles:google-maps@1.1.5 took 3
         START 4 checking for dburles:mongo-collection-instances@0.3.5
         DONE 4 checking for dburles:mongo-collection-instances@0.3.5 took 5
         START 4 checking for ddp@1.2.4
         DONE 4 checking for ddp@1.2.4 took 3
         START 4 checking for ddp-client@1.2.4
         DONE 4 checking for ddp-client@1.2.4 took 2
         START 4 checking for ddp-common@1.2.4
         DONE 4 checking for ddp-common@1.2.4 took 3
         START 4 checking for ddp-rate-limiter@1.0.3
         DONE 4 checking for ddp-rate-limiter@1.0.3 took 3
         START 4 checking for ddp-server@1.2.5
         DONE 4 checking for ddp-server@1.2.5 took 2
         START 4 checking for deps@1.0.11
         DONE 4 checking for deps@1.0.11 took 2
         START 4 checking for diff-sequence@1.0.4
         DONE 4 checking for diff-sequence@1.0.4 took 2
         START 4 checking for drewy:datetimepicker@1.0.3
         DONE 4 checking for drewy:datetimepicker@1.0.3 took 2
         START 4 checking for ecmascript@0.4.2
         DONE 4 checking for ecmascript@0.4.2 took 3
         START 4 checking for ecmascript-runtime@0.2.9
         DONE 4 checking for ecmascript-runtime@0.2.9 took 3
         START 4 checking for edgee:slingshot@0.7.1
         DONE 4 checking for edgee:slingshot@0.7.1 took 3
         START 4 checking for ejson@1.0.10
         DONE 4 checking for ejson@1.0.10 took 2
         START 4 checking for eluck:aws-sdk@2.1.33
         DONE 4 checking for eluck:aws-sdk@2.1.33 took 3
         START 4 checking for email@1.0.11
         DONE 4 checking for email@1.0.11 took 3
         START 4 checking for es5-shim@4.5.9
         DONE 4 checking for es5-shim@4.5.9 took 3
         START 4 checking for fastclick@1.0.10
         DONE 4 checking for fastclick@1.0.10 took 4
         START 4 checking for fourseven:scss@3.4.2
         DONE 4 checking for fourseven:scss@3.4.2 took 3
         START 4 checking for geojson-utils@1.0.7
         DONE 4 checking for geojson-utils@1.0.7 took 2
         START 4 checking for hot-code-push@1.0.3
         DONE 4 checking for hot-code-push@1.0.3 took 2
         START 4 checking for html-tools@1.0.8
         DONE 4 checking for html-tools@1.0.8 took 2
         START 4 checking for htmljs@1.0.8
         DONE 4 checking for htmljs@1.0.8 took 2
         START 4 checking for http@1.1.4
         DONE 4 checking for http@1.1.4 took 2
         START 4 checking for id-map@1.0.6
         DONE 4 checking for id-map@1.0.6 took 3
         START 4 checking for jeremy:geocomplete@1.6.5_12
         DONE 4 checking for jeremy:geocomplete@1.6.5_12 took 2
         START 4 checking for jquery@1.11.7
         DONE 4 checking for jquery@1.11.7 took 3
         START 4 checking for kadira:dochead@1.4.0
         DONE 4 checking for kadira:dochead@1.4.0 took 4
         START 4 checking for kadira:flow-router@2.11.0
         DONE 4 checking for kadira:flow-router@2.11.0 took 11
         START 4 checking for lai:collection-extensions@0.2.1_1
         DONE 4 checking for lai:collection-extensions@0.2.1_1 took 2
         START 4 checking for launch-screen@1.0.10
         DONE 4 checking for launch-screen@1.0.10 took 1
         START 4 checking for livedata@1.0.17
         DONE 4 checking for livedata@1.0.17 took 2
         START 4 checking for localstorage@1.0.8
         DONE 4 checking for localstorage@1.0.8 took 1
         START 4 checking for logging@1.0.11
         DONE 4 checking for logging@1.0.11 took 2
         START 4 checking for matb33:collection-hooks@0.8.1
         DONE 4 checking for matb33:collection-hooks@0.8.1 took 2
         START 4 checking for meteor@1.1.13
         DONE 4 checking for meteor@1.1.13 took 3
         START 4 checking for meteor-base@1.0.3
         DONE 4 checking for meteor-base@1.0.3 took 2
         START 4 checking for meteorhacks:aggregate@1.3.0
         DONE 4 checking for meteorhacks:aggregate@1.3.0 took 2
         START 4 checking for meteorhacks:collection-utils@1.2.0
         DONE 4 checking for meteorhacks:collection-utils@1.2.0 took 2
         START 4 checking for meteorhacks:kadira@2.28.5
         DONE 4 checking for meteorhacks:kadira@2.28.5 took 2
         START 4 checking for meteorhacks:meteorx@1.4.1
         DONE 4 checking for meteorhacks:meteorx@1.4.1 took 3
         START 4 checking for meteorhacks:subs-manager@1.6.4
         DONE 4 checking for meteorhacks:subs-manager@1.6.4 took 2
         START 4 checking for meteorhacks:unblock@1.1.0
         DONE 4 checking for meteorhacks:unblock@1.1.0 took 1
         START 4 checking for minifier-js@1.1.10
         DONE 4 checking for minifier-js@1.1.10 took 1
         START 4 checking for minifiers@1.1.7
         DONE 4 checking for minifiers@1.1.7 took 3
         START 4 checking for minimongo@1.0.13
         DONE 4 checking for minimongo@1.0.13 took 7
         START 4 checking for mobile-experience@1.0.3
         DONE 4 checking for mobile-experience@1.0.3 took 5
         START 4 checking for mobile-status-bar@1.0.11
         DONE 4 checking for mobile-status-bar@1.0.11 took 2
         START 4 checking for modules@0.5.2
         DONE 4 checking for modules@0.5.2 took 2
         START 4 checking for modules-runtime@0.6.2
         DONE 4 checking for modules-runtime@0.6.2 took 2
         START 4 checking for momentjs:moment@2.12.0
         DONE 4 checking for momentjs:moment@2.12.0 took 1
         START 4 checking for mongo@1.1.6
         DONE 4 checking for mongo@1.1.6 took 1
         START 4 checking for mongo-id@1.0.3
         DONE 4 checking for mongo-id@1.0.3 took 2
         START 4 checking for mongo-livedata@1.0.11
         DONE 4 checking for mongo-livedata@1.0.11 took 2
         START 4 checking for npm-bcrypt@0.7.8_2
         DONE 4 checking for npm-bcrypt@0.7.8_2 took 3
         START 4 checking for npm-mongo@1.4.42
         DONE 4 checking for npm-mongo@1.4.42 took 3
         START 4 checking for observe-sequence@1.0.10
         DONE 4 checking for observe-sequence@1.0.10 took 4
         START 4 checking for ordered-dict@1.0.6
         DONE 4 checking for ordered-dict@1.0.6 took 5
         START 4 checking for pcel:messenger@1.4.2
         DONE 4 checking for pcel:messenger@1.4.2 took 3
         START 4 checking for promise@0.6.6
         DONE 4 checking for promise@0.6.6 took 2
         START 4 checking for random@1.0.8
         DONE 4 checking for random@1.0.8 took 2
         START 4 checking for rate-limit@1.0.3
         DONE 4 checking for rate-limit@1.0.3 took 2
         START 4 checking for react@15.0.1
         DONE 4 checking for react@15.0.1 took 2
         START 4 checking for react-meteor-data@0.2.9
         DONE 4 checking for react-meteor-data@0.2.9 took 2
         START 4 checking for react-runtime@15.0.1
         DONE 4 checking for react-runtime@15.0.1 took 2
         START 4 checking for reactive-dict@1.1.6
         DONE 4 checking for reactive-dict@1.1.6 took 2
         START 4 checking for reactive-var@1.0.8
         DONE 4 checking for reactive-var@1.0.8 took 5
         START 4 checking for reload@1.1.7
         DONE 4 checking for reload@1.1.7 took 5
         START 4 checking for retry@1.0.6
         DONE 4 checking for retry@1.0.6 took 5
         START 4 checking for risul:accounting@1.0.1
         DONE 4 checking for risul:accounting@1.0.1 took 3
         START 4 checking for routepolicy@1.0.9
         DONE 4 checking for routepolicy@1.0.9 took 2
         START 4 checking for seba:minifiers-autoprefixer@0.0.2
         DONE 4 checking for seba:minifiers-autoprefixer@0.0.2 took 2
         START 4 checking for service-configuration@1.0.8
         DONE 4 checking for service-configuration@1.0.8 took 2
         START 4 checking for session@1.1.4
         DONE 4 checking for session@1.1.4 took 2
         START 4 checking for sha@1.0.6
         DONE 4 checking for sha@1.0.6 took 2
         START 4 checking for spacebars@1.0.10
         DONE 4 checking for spacebars@1.0.10 took 3
         START 4 checking for spacebars-compiler@1.0.10
         DONE 4 checking for spacebars-compiler@1.0.10 took 5
         START 4 checking for srp@1.0.7
         DONE 4 checking for srp@1.0.7 took 4
         START 4 checking for templating@1.1.8
         DONE 4 checking for templating@1.1.8 took 5
         START 4 checking for templating-tools@1.0.3
         DONE 4 checking for templating-tools@1.0.3 took 3
         START 4 checking for tmeasday:check-npm-versions@0.3.1
         DONE 4 checking for tmeasday:check-npm-versions@0.3.1 took 1
         START 4 checking for tmeasday:publish-counts@0.7.3
         DONE 4 checking for tmeasday:publish-counts@0.7.3 took 2
         START 4 checking for tracker@1.0.12
         DONE 4 checking for tracker@1.0.12 took 2
         START 4 checking for ui@1.0.10
         DONE 4 checking for ui@1.0.10 took 2
         START 4 checking for underscore@1.0.7
         DONE 4 checking for underscore@1.0.7 took 3
         START 4 checking for url@1.0.8
         DONE 4 checking for url@1.0.8 took 1
         START 4 checking for webapp@1.2.7
         DONE 4 checking for webapp@1.2.7 took 2
         START 4 checking for webapp-hashing@1.0.8
         DONE 4 checking for webapp-hashing@1.0.8 took 2
         START 4 checking for wylio:mandrill@1.0.1
         DONE 4 checking for wylio:mandrill@1.0.1 took 2
         START 4 checking for zimme:collection-behaviours@1.1.3
         DONE 4 checking for zimme:collection-behaviours@1.1.3 took 1
         START 4 checking for zimme:collection-timestampable@1.0.9
         DONE 4 checking for zimme:collection-timestampable@1.0.9 took 1
       DONE 3 downloading missing packages took 328
     END CAPTURE 2 undefined took 328
     START 2 building local packages
       START 3 loading package accounts-base@1.2.5
       DONE 3 loading package accounts-base@1.2.5 took 38
       START 3 loading package meteor@1.1.13
       DONE 3 loading package meteor@1.1.13 took 33
       START 3 loading package underscore@1.0.7
       DONE 3 loading package underscore@1.0.7 took 7
       START 3 loading package ecmascript@0.4.2
       DONE 3 loading package ecmascript@0.4.2 took 10
       START 3 loading package babel-compiler@6.6.1
       DONE 3 loading package babel-compiler@6.6.1 took 4
       START 3 loading package check@1.1.3
       DONE 3 loading package check@1.1.3 took 10
       START 3 loading package ejson@1.0.10
       DONE 3 loading package ejson@1.0.10 took 9
       START 3 loading package base64@1.0.7
       DONE 3 loading package base64@1.0.7 took 4
       START 3 loading package jquery@1.11.7
       DONE 3 loading package jquery@1.11.7 took 9
       START 3 loading package modules@0.5.2
       DONE 3 loading package modules@0.5.2 took 22
       START 3 loading package modules-runtime@0.6.2
       DONE 3 loading package modules-runtime@0.6.2 took 6
       START 3 loading package ecmascript-runtime@0.2.9
       DONE 3 loading package ecmascript-runtime@0.2.9 took 6
       START 3 loading package promise@0.6.6
       DONE 3 loading package promise@0.6.6 took 8
       START 3 loading package babel-runtime@0.1.7
       DONE 3 loading package babel-runtime@0.1.7 took 5
       START 3 loading package ddp-rate-limiter@1.0.3
       DONE 3 loading package ddp-rate-limiter@1.0.3 took 3
       START 3 loading package rate-limit@1.0.3
       DONE 3 loading package rate-limit@1.0.3 took 10
       START 3 loading package random@1.0.8
       DONE 3 loading package random@1.0.8 took 11
       START 3 loading package callback-hook@1.0.7
       DONE 3 loading package callback-hook@1.0.7 took 5
       START 3 loading package ddp@1.2.4
       DONE 3 loading package ddp@1.2.4 took 5
       START 3 loading package ddp-client@1.2.4
       DONE 3 loading package ddp-client@1.2.4 took 28
       START 3 loading package tracker@1.0.12
       DONE 3 loading package tracker@1.0.12 took 6
       START 3 loading package retry@1.0.6
       DONE 3 loading package retry@1.0.6 took 4
       START 3 loading package id-map@1.0.6
       DONE 3 loading package id-map@1.0.6 took 5
       START 3 loading package ddp-common@1.2.4
       DONE 3 loading package ddp-common@1.2.4 took 8
       START 3 loading package diff-sequence@1.0.4
       DONE 3 loading package diff-sequence@1.0.4 took 12
       START 3 loading package mongo-id@1.0.3
       DONE 3 loading package mongo-id@1.0.3 took 5
       START 3 loading package ddp-server@1.2.5
       DONE 3 loading package ddp-server@1.2.5 took 14
       START 3 loading package webapp@1.2.7
       DONE 3 loading package webapp@1.2.7 took 22
       START 3 loading package logging@1.0.11
       DONE 3 loading package logging@1.0.11 took 4
       START 3 loading package routepolicy@1.0.9
       DONE 3 loading package routepolicy@1.0.9 took 3
       START 3 loading package boilerplate-generator@1.0.7
       DONE 3 loading package boilerplate-generator@1.0.7 took 4
       START 3 loading package spacebars-compiler@1.0.10
       DONE 3 loading package spacebars-compiler@1.0.10 took 10
       START 3 loading package htmljs@1.0.8
       DONE 3 loading package htmljs@1.0.8 took 9
       START 3 loading package deps@1.0.11
       DONE 3 loading package deps@1.0.11 took 6
       START 3 loading package html-tools@1.0.8
       DONE 3 loading package html-tools@1.0.8 took 16
       START 3 loading package blaze-tools@1.0.7
       DONE 3 loading package blaze-tools@1.0.7 took 6
       START 3 loading package spacebars@1.0.10
       DONE 3 loading package spacebars@1.0.10 took 4
       START 3 loading package blaze@2.1.6
       DONE 3 loading package blaze@2.1.6 took 21
       START 3 loading package observe-sequence@1.0.10
       DONE 3 loading package observe-sequence@1.0.10 took 11
       START 3 loading package reactive-var@1.0.8
       DONE 3 loading package reactive-var@1.0.8 took 6
       START 3 loading package ui@1.0.10
       DONE 3 loading package ui@1.0.10 took 3
       START 3 loading package webapp-hashing@1.0.8
       DONE 3 loading package webapp-hashing@1.0.8 took 8
       START 3 loading package minimongo@1.0.13
       DONE 3 loading package minimongo@1.0.13 took 29
       START 3 loading package ordered-dict@1.0.6
       DONE 3 loading package ordered-dict@1.0.6 took 6
       START 3 loading package geojson-utils@1.0.7
       DONE 3 loading package geojson-utils@1.0.7 took 11
       START 3 loading package mongo@1.1.6
       DONE 3 loading package mongo@1.1.6 took 53
       START 3 loading package npm-mongo@1.4.42
       DONE 3 loading package npm-mongo@1.4.42 took 3
       START 3 loading package allow-deny@1.0.3
       DONE 3 loading package allow-deny@1.0.3 took 6
       START 3 loading package binary-heap@1.0.7
       DONE 3 loading package binary-heap@1.0.7 took 6
       START 3 loading package localstorage@1.0.8
       DONE 3 loading package localstorage@1.0.8 took 4
       START 3 loading package accounts-password@1.1.7
       DONE 3 loading package accounts-password@1.1.7 took 12
       START 3 loading package npm-bcrypt@0.7.8_2
       DONE 3 loading package npm-bcrypt@0.7.8_2 took 7
       START 3 loading package srp@1.0.7
       DONE 3 loading package srp@1.0.7 took 9
       START 3 loading package sha@1.0.6
       DONE 3 loading package sha@1.0.6 took 6
       START 3 loading package email@1.0.11
       DONE 3 loading package email@1.0.11 took 8
       START 3 loading package acemtp:algolia@3.9.1
       DONE 3 loading package acemtp:algolia@3.9.1 took 10
       START 3 loading package alanning:roles@1.2.15
       DONE 3 loading package alanning:roles@1.2.15 took 6
       START 3 loading package autoupdate@1.2.7
       DONE 3 loading package autoupdate@1.2.7 took 5
       START 3 loading package http@1.1.4
       DONE 3 loading package http@1.1.4 took 12
       START 3 loading package url@1.0.8
       DONE 3 loading package url@1.0.8 took 12
       START 3 loading package caching-compiler@1.0.3
       DONE 3 loading package caching-compiler@1.0.3 took 12
       START 3 loading package caching-html-compiler@1.0.5
       DONE 3 loading package caching-html-compiler@1.0.5 took 5
       START 3 loading package templating-tools@1.0.3
       DONE 3 loading package templating-tools@1.0.3 took 25
       START 3 loading package minifier-js@1.1.10
       DONE 3 loading package minifier-js@1.1.10 took 3
       START 3 loading package coffeescript@1.0.16
       DONE 3 loading package coffeescript@1.0.16 took 20
       START 3 loading package cosmos:browserify@0.10.0
       DONE 3 loading package cosmos:browserify@0.10.0 took 34
       START 3 loading package dburles:collection-helpers@1.0.4
       DONE 3 loading package dburles:collection-helpers@1.0.4 took 4
       START 3 loading package dburles:google-maps@1.1.5
       DONE 3 loading package dburles:google-maps@1.1.5 took 5
       START 3 loading package templating@1.1.8
       DONE 3 loading package templating@1.1.8 took 40
       START 3 loading package dburles:mongo-collection-instances@0.3.5
       DONE 3 loading package dburles:mongo-collection-instances@0.3.5 took 4
       START 3 loading package lai:collection-extensions@0.2.1_1
       DONE 3 loading package lai:collection-extensions@0.2.1_1 took 13
       START 3 loading package drewy:datetimepicker@1.0.3
       DONE 3 loading package drewy:datetimepicker@1.0.3 took 11
       START 3 loading package momentjs:moment@2.12.0
       DONE 3 loading package momentjs:moment@2.12.0 took 8
       START 3 loading package edgee:slingshot@0.7.1
       DONE 3 loading package edgee:slingshot@0.7.1 took 9
       START 3 loading package eluck:aws-sdk@2.1.33
       DONE 3 loading package eluck:aws-sdk@2.1.33 took 3
       START 3 loading package es5-shim@4.5.9
       DONE 3 loading package es5-shim@4.5.9 took 12
       START 3 loading package fastclick@1.0.10
       DONE 3 loading package fastclick@1.0.10 took 13
       START 3 preparing to build package flex:core
         START 4 building package flex:core
         DONE 4 building package flex:core took 19
       DONE 3 preparing to build package flex:core took 20
       START 3 preparing to build package flex:mail-parser
         START 4 building package flex:mail-parser
         DONE 4 building package flex:mail-parser took 16
       DONE 3 preparing to build package flex:mail-parser took 17
       START 3 loading package fourseven:scss@3.4.2
       DONE 3 loading package fourseven:scss@3.4.2 took 21
       START 3 preparing to build package gwendall:mongo-algolia-sync
         START 4 loading package matb33:collection-hooks@0.8.1
         DONE 4 loading package matb33:collection-hooks@0.8.1 took 17
         START 4 building package gwendall:mongo-algolia-sync
         DONE 4 building package gwendall:mongo-algolia-sync took 6
       DONE 3 preparing to build package gwendall:mongo-algolia-sync took 23
       START 3 loading package hot-code-push@1.0.3
       DONE 3 loading package hot-code-push@1.0.3 took 5
       START 3 loading package reload@1.1.7
       DONE 3 loading package reload@1.1.7 took 10
       START 3 loading package jeremy:geocomplete@1.6.5_12
       DONE 3 loading package jeremy:geocomplete@1.6.5_12 took 4
       START 3 loading package kadira:dochead@1.4.0
       DONE 3 loading package kadira:dochead@1.4.0 took 7
       START 3 loading package kadira:flow-router@2.11.0
       DONE 3 loading package kadira:flow-router@2.11.0 took 29
       START 3 loading package reactive-dict@1.1.6
       DONE 3 loading package reactive-dict@1.1.6 took 12
       START 3 loading package launch-screen@1.0.10
       DONE 3 loading package launch-screen@1.0.10 took 12
       START 3 loading package livedata@1.0.17
       DONE 3 loading package livedata@1.0.17 took 2
       START 3 loading package meteor-base@1.0.3
       DONE 3 loading package meteor-base@1.0.3 took 3
       START 3 loading package meteorhacks:aggregate@1.3.0
       DONE 3 loading package meteorhacks:aggregate@1.3.0 took 4
       START 3 loading package mongo-livedata@1.0.11
       DONE 3 loading package mongo-livedata@1.0.11 took 2
       START 3 loading package meteorhacks:collection-utils@1.2.0
       DONE 3 loading package meteorhacks:collection-utils@1.2.0 took 5
       START 3 loading package meteorhacks:kadira@2.28.5
       DONE 3 loading package meteorhacks:kadira@2.28.5 took 40
       START 3 loading package meteorhacks:meteorx@1.4.1
       DONE 3 loading package meteorhacks:meteorx@1.4.1 took 5
       START 3 loading package meteorhacks:subs-manager@1.6.4
       DONE 3 loading package meteorhacks:subs-manager@1.6.4 took 5
       START 3 loading package meteorhacks:unblock@1.1.0
       DONE 3 loading package meteorhacks:unblock@1.1.0 took 6
       START 3 loading package minifiers@1.1.7
       DONE 3 loading package minifiers@1.1.7 took 4
       START 3 loading package mobile-experience@1.0.3
       DONE 3 loading package mobile-experience@1.0.3 took 2
       START 3 loading package mobile-status-bar@1.0.11
       DONE 3 loading package mobile-status-bar@1.0.11 took 3
       START 3 preparing to build package patrickml:collection-methods
         START 4 building package patrickml:collection-methods
         DONE 4 building package patrickml:collection-methods took 17
       DONE 3 preparing to build package patrickml:collection-methods took 17
       START 3 preparing to build package patrickml:react-layouts
         START 4 loading package react@15.0.1
         DONE 4 loading package react@15.0.1 took 5
         START 4 loading package react-runtime@15.0.1
         DONE 4 loading package react-runtime@15.0.1 took 9
         START 4 loading package tmeasday:check-npm-versions@0.3.1
         DONE 4 loading package tmeasday:check-npm-versions@0.3.1 took 11
         START 4 loading package react-meteor-data@0.2.9
         DONE 4 loading package react-meteor-data@0.2.9 took 11
         START 4 building package patrickml:react-layouts
         DONE 4 building package patrickml:react-layouts took 14
       DONE 3 preparing to build package patrickml:react-layouts took 52
       START 3 preparing to build package patrickml:react-modal
         START 4 building package patrickml:react-modal
         DONE 4 building package patrickml:react-modal took 34
       DONE 3 preparing to build package patrickml:react-modal took 35
       START 3 preparing to build package patrickml:react-quill
         START 4 building package patrickml:react-quill
         DONE 4 building package patrickml:react-quill took 12
       DONE 3 preparing to build package patrickml:react-quill took 12
       START 3 preparing to build package patrickml:singularity
         START 4 building package patrickml:singularity
         DONE 4 building package patrickml:singularity took 47
       DONE 3 preparing to build package patrickml:singularity took 47
       START 3 preparing to build package patrickml:wormhole
         START 4 building package patrickml:wormhole
         DONE 4 building package patrickml:wormhole took 24
       DONE 3 preparing to build package patrickml:wormhole took 25
       START 3 loading package pcel:messenger@1.4.2
       DONE 3 loading package pcel:messenger@1.4.2 took 9
       START 3 loading package risul:accounting@1.0.1
       DONE 3 loading package risul:accounting@1.0.1 took 7
       START 3 loading package seba:minifiers-autoprefixer@0.0.2
       DONE 3 loading package seba:minifiers-autoprefixer@0.0.2 took 25
       START 3 loading package service-configuration@1.0.8
       DONE 3 loading package service-configuration@1.0.8 took 7
       START 3 loading package session@1.1.4
       DONE 3 loading package session@1.1.4 took 3
       START 3 preparing to build package skinnygeek1010:validate-form
         START 4 building package skinnygeek1010:validate-form
         DONE 4 building package skinnygeek1010:validate-form took 13
       DONE 3 preparing to build package skinnygeek1010:validate-form took 14
       START 3 loading package tmeasday:publish-counts@0.7.3
       DONE 3 loading package tmeasday:publish-counts@0.7.3 took 6
       START 3 loading package wylio:mandrill@1.0.1
       DONE 3 loading package wylio:mandrill@1.0.1 took 5
       START 3 loading package zimme:collection-behaviours@1.1.3
       DONE 3 loading package zimme:collection-behaviours@1.1.3 took 7
       START 3 loading package zimme:collection-timestampable@1.0.9
       DONE 3 loading package zimme:collection-timestampable@1.0.9 took 12
     DONE 2 building local packages took 1394
   DONE 1 preparing project took 6507
| 
| ProjectContext prepareProjectForBuild.........................6,507 ms (1)
| ├─ _readProjectMetadata...........................................9 ms (1)
| │  ├─ files.readFile                                              1 ms (6)
| │  └─ other _readProjectMetadata                                  8 ms
| ├─ _initializeCatalog...........................................244 ms (1)
| │  ├─ files.readFile                                             26 ms (94)
| │  ├─ sha1                                                        2 ms (93)
| │  ├─ files.exists                                               25 ms (60)
| │  ├─ runJavaScript package.js                                   16 ms (60)
| │  ├─ sqlite query                                               16 ms (31)
| │  └─ other _initializeCatalog                                  159 ms
| ├─ _resolveConstraints........................................4,528 ms (1)
| │  ├─ bundler.readJsImage........................................10 ms (1)
| │  │  ├─ files.readFile                                           8 ms (10)
| │  │  └─ other bundler.readJsImage                                2 ms
| │  ├─ JsImage#load...............................................65 ms (1)
| │  │  ├─ runJavaScript packages/underscore.js                     7 ms (1)
| │  │  ├─ runJavaScript packages/meteor.js                        10 ms (1)
| │  │  ├─ runJavaScript packages/check.js                          1 ms (1)
| │  │  ├─ runJavaScript packages/package-version-parser.js         3 ms (1)
| │  │  ├─ runJavaScript packages/logic-solver.js                  38 ms (1)
| │  │  ├─ runJavaScript packages/constraint-solver.js              3 ms (1)
| │  │  └─ other JsImage#load                                       2 ms
| │  ├─ Select Package Versions.................................4,440 ms (1)
| │  │  ├─ new CS.Input                                             9 ms (1)
| │  │  ├─ Input#loadOnlyPreviousSolution..........................90 ms (1)
| │  │  │  ├─ sqlite query                                         48 ms (111)
| │  │  │  └─ other Input#loadOnlyPreviousSolution                 42 ms
| │  │  ├─ Input#loadFromCatalog................................3,109 ms (1)
| │  │  │  ├─ sqlite query                                        328 ms (262)
| │  │  │  └─ other Input#loadFromCatalog                       2,782 ms
| │  │  ├─ new CS.Solver...........................................45 ms (1)
| │  │  │  └─ Solver#analyze.......................................45 ms (1)
| │  │  │     ├─ analyze allowed versions                          16 ms (1)
| │  │  │     ├─ analyze reachability                               5 ms (1)
| │  │  │     └─ analyze constraints                               22 ms (1)
| │  │  └─ Solver#getAnswer.....................................1,185 ms (1)
| │  │     ├─ new Logic.Solver (MiniSat start-up)                  13 ms (1)
| │  │     ├─ generate package variables                          183 ms (1)
| │  │     ├─ generate dependency requirements                     95 ms (1)
| │  │     ├─ generate constraints                                212 ms (1)
| │  │     ├─ pre-solve                                           243 ms (1)
| │  │     ├─ minimize conflicts                                  185 ms (1)
| │  │     ├─ minimize unanticipated_prereleases                   50 ms (1)
| │  │     ├─ calculate previous_root distance costs                6 ms (1)
| │  │     ├─ minimize previous_root_incompat                      18 ms (1)
| │  │     ├─ minimize previous_root_major                          1 ms (1)
| │  │     ├─ minimize previous_root_minor                         10 ms (1)
| │  │     ├─ minimize previous_root_patch                          4 ms (1)
| │  │     ├─ calculate previous_indirect distance costs            4 ms (1)
| │  │     ├─ minimize previous_indirect_incompat                  12 ms (1)
| │  │     ├─ minimize previous_indirect_minor                      2 ms (1)
| │  │     ├─ minimize previous_indirect_patch                      4 ms (1)
| │  │     ├─ minimize previous_indirect_rest                       1 ms (1)
| │  │     ├─ lock down important versions                          5 ms (1)
| │  │     ├─ minimize new_indirect_minor                           5 ms (1)
| │  │     ├─ minimize total_packages                             121 ms (1)
| │  │     └─ other Solver#getAnswer                                3 ms
| │  └─ other _resolveConstraints                                  12 ms
| ├─ _downloadMissingPackages.....................................329 ms (1)
| │  ├─ Isopack.readMetadataFromDirectory.........................229 ms (111)
| │  │  ├─ files.exists                                           136 ms (111)
| │  │  ├─ files.readFile                                          71 ms (111)
| │  │  └─ other Isopack.readMetadataFromDirectory                 21 ms
| │  └─ other _downloadMissingPackages                            100 ms
| ├─ _buildLocalPackages........................................1,395 ms (1)
| │  ├─ IsopackCache Load local isopack.........................1,175 ms (111)
| │  │  ├─ files.stat                                              12 ms (111)
| │  │  ├─ Isopack#initFromPath.................................1,074 ms (111)
| │  │  │  ├─ files.realpath                                       85 ms (111)
| │  │  │  ├─ Isopack.readMetadataFromDirectory....................44 ms (111)
| │  │  │  │  ├─ files.exists                                       9 ms (111)
| │  │  │  │  ├─ files.readFile                                    25 ms (111)
| │  │  │  │  └─ other Isopack.readMetadataFromDirectory            9 ms
| │  │  │  ├─ files.readFile                                      176 ms (353)
| │  │  │  ├─ files.open                                          140 ms (839)
| │  │  │  ├─ files.read                                          307 ms (839)
| │  │  │  ├─ files.close                                          54 ms (839)
| │  │  │  ├─ bundler.readJsImage.................................121 ms (7)
| │  │  │  │  ├─ files.readFile                                   106 ms (119)
| │  │  │  │  └─ other bundler.readJsImage                         15 ms
| │  │  │  └─ other Isopack#initFromPath                          147 ms
| │  │  ├─ Isopack#getStrongOrderedUsedAndImpliedPackages           8 ms (111)
| │  │  └─ other IsopackCache Load local isopack                   81 ms
| │  ├─ IsopackCache Build local isopack..........................203 ms (10)
| │  │  ├─ files.readFile                                           6 ms (10)
| │  │  ├─ watch.isUpToDate........................................81 ms (10)
| │  │  │  ├─ files.readFile                                       19 ms (67)
| │  │  │  ├─ sha1                                                  2 ms (67)
| │  │  │  ├─ files.readdir                                        25 ms (108)
| │  │  │  ├─ files.stat                                           14 ms (544)
| │  │  │  └─ other watch.isUpToDate                               20 ms
| │  │  ├─ files.stat                                               2 ms (10)
| │  │  ├─ Isopack#initFromPath....................................97 ms (10)
| │  │  │  ├─ files.realpath                                        6 ms (10)
| │  │  │  ├─ Isopack.readMetadataFromDirectory....................10 ms (10)
| │  │  │  │  ├─ files.exists                                       3 ms (10)
| │  │  │  │  ├─ files.readFile                                     5 ms (10)
| │  │  │  │  └─ other Isopack.readMetadataFromDirectory            1 ms
| │  │  │  ├─ files.readFile                                       11 ms (20)
| │  │  │  ├─ files.open                                           15 ms (95)
| │  │  │  ├─ files.read                                           35 ms (95)
| │  │  │  ├─ files.close                                           6 ms (95)
| │  │  │  └─ other Isopack#initFromPath                           14 ms
| │  │  ├─ Isopack#getMergedWatchSet                                1 ms (10)
| │  │  └─ other IsopackCache Build local isopack                  16 ms
| │  └─ other _buildLocalPackages                                  16 ms
| └─ other ProjectContext prepareProjectForBuild                    1 ms
| 
| Top leaves:
| other Input#loadFromCatalog..............................2,782 ms (1)
| files.readFile.............................................455 ms (911)
| sqlite query...............................................391 ms (404)
| files.read.................................................342 ms (934)
| pre-solve..................................................243 ms (1)
| generate constraints.......................................212 ms (1)
| minimize conflicts.........................................185 ms (1)
| generate package variables.................................183 ms (1)
| files.exists...............................................174 ms (300)
| other Isopack#initFromPath.................................161 ms (121)
| other _initializeCatalog...................................159 ms (1)
| files.open.................................................154 ms (934)
| minimize total_packages....................................121 ms (1)
| 
| (#1) Total: 6,507 ms (ProjectContext prepareProjectForBuild)
| 
 END CAPTURE 0 undefined took 6529
 START CAPTURE 0 building the application took NaN
   START 1 determining active plugins
     START 2 loading plugin `compile-ecmascript` from package `ecmascript`
 START CAPTURE 0 loading isopacket `ddp` took NaN
 END CAPTURE 0 loading isopacket `ddp` took 286
     DONE 2 loading plugin `compile-ecmascript` from package `ecmascript` took 390
     START 2 running registerCompiler callback in package ecmascript
     DONE 2 running registerCompiler callback in package ecmascript took 9
     START 2 loading plugin `compileScssBatch` from package `fourseven:scss`
     DONE 2 loading plugin `compileScssBatch` from package `fourseven:scss` took 443
     START 2 running registerCompiler callback in package fourseven:scss
     DONE 2 running registerCompiler callback in package fourseven:scss took 1
     START 2 loading plugin `minifyStd` from package `seba:minifiers-autoprefixer`
     DONE 2 loading plugin `minifyStd` from package `seba:minifiers-autoprefixer` took 829
     START 2 running registerMinifier callback in package seba:minifiers-autoprefixer
     DONE 2 running registerMinifier callback in package seba:minifiers-autoprefixer took 1
     START 2 running registerMinifier callback in package seba:minifiers-autoprefixer
     DONE 2 running registerMinifier callback in package seba:minifiers-autoprefixer took 1
     START 2 loading plugin `basicFileTypes` from package `meteor`
     DONE 2 loading plugin `basicFileTypes` from package `meteor` took 0
     START 2 running registerCompiler callback in package meteor
     DONE 2 running registerCompiler callback in package meteor took 1
   DONE 1 determining active plugins took 1676
   START 1 determining active plugins
   DONE 1 determining active plugins took 0
   START 1 building for web.browser
     START 2 linking the program
     DONE 2 linking the program took 20
     START 2 loading plugin `compileTemplatesBatch` from package `templating`
     DONE 2 loading plugin `compileTemplatesBatch` from package `templating` took 507
     START 2 running registerCompiler callback in package templating
     DONE 2 running registerCompiler callback in package templating took 1
     START 2 loading plugin `compileCoffeescript` from package `coffeescript`
     DONE 2 loading plugin `compileCoffeescript` from package `coffeescript` took 452
     START 2 running registerCompiler callback in package coffeescript
     DONE 2 running registerCompiler callback in package coffeescript took 1
     START 2 loading plugin `CosmosBrowserify` from package `cosmos:browserify`
     DONE 2 loading plugin `CosmosBrowserify` from package `cosmos:browserify` took 839
     START 2 running registerCompiler callback in package cosmos:browserify
     DONE 2 running registerCompiler callback in package cosmos:browserify took 1
     START 2 processing files with ecmascript (for target web.browser)
     DONE 2 processing files with ecmascript (for target web.browser) took 2632
     START 2 processing files with templating (for target web.browser)
     DONE 2 processing files with templating (for target web.browser) took 15
     START 2 processing files with meteor (for target web.browser)
     DONE 2 processing files with meteor (for target web.browser) took 1
     START 2 processing files with cosmos:browserify (for target web.browser)
     DONE 2 processing files with cosmos:browserify (for target web.browser) took 4
     START 2 processing files with fourseven:scss (for target web.browser)
     DONE 2 processing files with fourseven:scss (for target web.browser) took 7
     START 2 minifying app code
     DONE 2 minifying app code took 15446
     START 2 minifying app stylesheet
     DONE 2 minifying app stylesheet took 1252
   DONE 1 building for web.browser took 27571
   START 1 building for os.linux.x86_64
     START 2 linking the program
     DONE 2 linking the program took 18
     START 2 processing files with ecmascript (for target os.linux.x86_64)
     DONE 2 processing files with ecmascript (for target os.linux.x86_64) took 341
   DONE 1 building for os.linux.x86_64 took 1378
 END CAPTURE 0 building the application took 89492
toverux commented 8 years ago

Build times on hot reload were catastrophic for me in 1.2 (~20-40 seconds on an i7 with 8 cores and a bunch of gigabytes of RAM, and up to 1.5-2 minutes on a coworker's PC, that was almost unusable). In 1.3, the app builds in 1 or 2 seconds, and it has a large codebase. I don't know what you have done to the build system, but thank you :+1:

I have no more excuses to take breaks now. xkcd's Compiling

HynesIP commented 8 years ago

I was used to clicking save and wandering off to do something else while the Meteor project rebuilt. Not anymore. Awesome! Now I barely have time to clear the console and prepare for the refresh. Great job MDG!

gsabran commented 8 years ago

Still a big issue for me (on 1.3.2):

Top leaves:
| files.readFile...........................................4,439 ms (3581)
| files.readdir............................................3,870 ms (5694)
| other compileUnibuild (the app)..........................2,862 ms (2)
| files.stat...............................................2,627 ms (49252)
| files.realpath...........................................2,048 ms (3041)
| Babel.compile..............................................662 ms (276)
| other ImportScanner#_tryToResolveImportedPath..............620 ms (3772)
| files.lstat................................................609 ms (2158)
| files.writeFile............................................600 ms (7)
| other JsImage#write........................................513 ms (1)
| 
| (#10) Total: 22,634 ms (Rebuild App)
| 

I just can't wait 20s every times I press save. And why is the build spending so much time on file things while I'd usually save 1-2 files at once??? That's very frustrating and hurting my performance. I don't have a particularly large app either...

gsabran commented 8 years ago

I went back to 1.3 and it's 2-3 times faster

ivansrdic commented 8 years ago

Intel i7 3700, 12GB RAM, 2xSSD in raid 0, Windows 10 64bit.

| Top leaves:                                                                
| files.lstat.............................................24,820 ms (189056) 
| other compileUnibuild (the app)..........................5,646 ms (2)      
| files.readdir............................................2,500 ms (10862)  
| files.stat.................................................503 ms (5800)   
| other ImportScanner#_tryToResolveImportedPath..............364 ms (2632)   
| files.readFile.............................................319 ms (945)    
| Babel.compile..............................................137 ms (153)    
| CssTools.parseCss..........................................134 ms (54)     
| other PackageSourceBatch.computeJsOutputFilesMap...........122 ms (1)      
| files.realpath.............................................117 ms (169)    
| CssTools.stringifyCss......................................109 ms (1)      
| ImportScanner#_getInstallPath..............................101 ms (954)    
|                                                                            
| (#4) Total: 35,662 ms (Rebuild App)                                        
|                                                                            

I created a VM with Ubuntu 14.04 64bit (6GB RAM, 4/8 cores) on the same machine and the build times are 2s. Same thing on my other pc and my colleague's windows laptop. Other colleagues that have Linux or OS X have build times less than 2. And it isn't just this project, the todo project has almost the same build time.

Build times are the same on 1.3 and 1.3.x.

I tried searching everywhere for the files.lstat issue, but there is no answer.

EDIT: Tried reinstalling meteor but still same results.

EDIT 2: By removing babel/eslint from local and installing them globally, build time dropped to 5s of which files.lstat takes up 2s. But this problem isn't happening on Unix os so I don't consider this a solution.

steve-ross commented 8 years ago

i had some horrible build times and removing my .meteor/local/bundler-cache helped

steve-ross commented 8 years ago

However I'm on a 2011 Macbook Pro 16GB RAM & SSD and my app rebuild times are a little over 7 seconds. Here is the gist of my profile (instead of pasting it in)

https://gist.github.com/steve-ross/3899678ad3491f3d570f7a4475bfbd39

My slow times using 1.3.2.4 are on ClientTarget#minifyCss which takes about 4 seconds

alamont commented 8 years ago

By removing babel/eslint from local and installing them globally, build time dropped to 5s of which files.lstat takes up 2s. But this problem isn't happening on Unix os so I don't consider this a solution.

I can confirm that this works. However it is still slower as before and this 'solution' is far from ideal.

patrickml commented 8 years ago

@alamont i tried to do that however now im getting build errors with MUPX trying to build in production.

Archiving failed: ENOENT: no such file or directory, stat '/tmp/a05d3854-ddd6-4bf2-a73e-5351b5902df8/bundle/programs/server/npm/node_modules/.bin/eslint'

How did you install eslint globally just using -g?

Update: Re-running npm update and npm install --save after moving to global eslint fixed the issue above.

alamont commented 8 years ago

@patrickml I only removed the babel packages.

steve-ross commented 8 years ago

I installed eslint with npm install -g eslint didn't help at all on posix

FWIW here is the link to the Performance.md file for meteor-tool so you guys are aware that they are actively trying to fix the slow rebuild times: https://github.com/meteor/meteor/blob/be986fd70926c9dd8eff6d8866205f236c8562c4/tools/PERFORMANCE.md