Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Crazy fast build times

Unconventional advice on how to improve your build times
by

Daniel Worthington-Bodart

on 13 October 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Crazy fast build times

Crazy Fast Build Times
Or when 10 seconds starts to make you nervous
Daniel Worthington-Bodart
dan.bodart@springer.com
http://joinit.springer.com
Greenfield only?
Examples
5+ year 150k app: 45 mins to <3 minutes
3+ year 92K app: 20 mins to <3 minutes
1+ year 15k app: 12+ seconds
6 month 20k app: 15 seconds
2 year 13k library: 8 seconds
Tools
Maven
Contract
Ant
Make
Ivy
wget/curl
{repo--base-url}/
{group-id}
/
{artifact-id}
/
{version}
/
{artifact-id}
-
{version}
.
{type}
http://repo.bodar.com/
com/googlecode/totallylazy
/
totallylazy
/
631
/
totallylazy
-
631
.
jar
Compiler + Language
Scala
Incremental vs
Clean
Java
Transative?
sbt
buildr
Compile + Jar
Testing
In-memory
Write them
in code
Refactoring
Contract Tests
Fast / Production Quality Dummies
Why?
Libraries
byte code size
Lucene
Hibernate
200 line HBM file ->
1.3 seconds
to load SessionFactory!
Spring
1+ year Annotated ->
1.3 seconds
to create context
5+ year Xml ->
14 seconds
(In tests use default-lazy-init to reduce time)
Containers
Tomcat
Jetty
Java 6
HttpServer
NOT...
Fit
Fitness
Concordion
Deployed War
2+ seconds
Embedded web.xml static port
1 second
Embedded dynamic port Cold
<30ms
Embedded dynamic port Walm
<3ms
Deployed War
2+ seconds
Embedded mode ???
Cold JVM start
<20ms
Warm JVM start
<1ms
3.3 to 3.4 FilexxxDirectory
take 30x longer to create
GWT
Compiler is slow
30 seconds
for 4.6K loc
Acceptance Tests are slow
20 mins
for IE Selenium build
We replaced 4.6k with 800 lines of MVC code (inc templates)
OS / Hardware
Windows / Mac / Linux
HD / SSD / RAM
See
Measure
1999 - Ten
Minute Build
"A shorter build doesn't
give you time to
drink your coffee."
15%
15%
SimpleWeb
Cold JVM start
<30 ms
Walm JVM start
<2 ms
-
Full transcript