GithubHelp home page GithubHelp logo

formsbuildtime's Introduction

FormsBuildTime

A quick sample to show how setting DebugType=portable can improve Xamarin.Android build times on Windows. This is basically File->New Project of the Forms Master/Detail template. I didn't change any code in the project.

Here is what I did to reproduce this:

  • Checked out a copy of xamarin-android/master/1826ec2 and built it on Windows msbuild Xamarin.Android.sln /t:Prepare then msbuild Xamarin.Android.sln
  • Checked out this repo

Did the following steps w/ a default template:

git clean -dxf
msbuild FormsBuildTime.sln /t:Restore
../xamarin-android/bin/Debug/bin/xabuild.exe FormsBuildTime.sln /bl:DebugType_full.binlog

Then changed DebugType=portable, and repeated:

git clean -dxf
msbuild FormsBuildTime.sln /t:Restore
../xamarin-android/bin/Debug/bin/xabuild.exe FormsBuildTime.sln /bl:DebugType_portable.binlog

I committed my two binlog files in this repo for review.

Improvements

The _ConvertPdbFiles target gets skipped (as it should) when DebugType=portable. From this log it was taking ~3.8 seconds.

Overall the build when from 30.985s to 25.697s just by changing DebugType to portable. This is about a 5.2 second improvement for a default project.

What should we change?

  1. VS 2017 for Windows could make templates default to DebugType=portable. There was once some concerns about VS 2015, but we support it no longer, right?

  2. VS for Mac should also change their templates to match VS 2017, to support better build times on Windows. A user could create the project on Mac, and another user work on the same project on Windows. Build times will not be improved on Mac, however.

formsbuildtime's People

Contributors

jonathanpeppers avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.