GithubHelp home page GithubHelp logo

x00568 / compilation-visualizer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from needle-tools/compilation-visualizer

0.0 0.0 0.0 80 KB

Unity Tool showing a timeline of assembly compilation. This is especially helpful when trying to optimize compile times and dependencies between assemblies. Besides showing a graphical view of compilation, selecting an assembly shows both dependencies and dependents of that assembly.

License: MIT License

C# 100.00%

compilation-visualizer's Introduction

Compilation Visualizer for Unity

Unity Version Compatibility openupm

What's this?

This tool visualizes the assembly compilation process in Unity3D. It hooks into the Editor-provided events and nicely draws them on a timeline. That's especially helpful when trying to optimize compile times and dependencies between assemblies.

Besides showing a graphical view of compilation, selecting an assembly shows both dependencies and dependents of that assembly.

The screenshots show full compilations; but the timeline works as well for partial compilations (e.g. you changed a single script and Unity only recompiles the relevant parts of the dependency chain).

Quick Start

Compilation Visualizer is available on OpenUPM: https://openupm.com/packages/com.needle.compilation-visualizer/

If you're on Unity 2019.4+:

  • open Edit/Project Settings/Package Manager
  • add a new Scoped Registry or add the package to the existing OpenUPM scope:
    Name: OpenUPM
    URL:  https://package.openupm.com/
    Scope(s): com.needle.compilation-visualizer
    
  • click Save
  • open Package Manager
  • click +
  • select Add from Git URL
  • paste com.needle.compilation-visualizer
  • click Add.

You can open the Compilation Visualizer by selecting Window > Analysis > Compilation Timeline. It will automatically update whenever something is compiled.

Compilation Process

Recompile

If you want to trigger a recompile, you can either use the Recompile button, or Right Click > Reimport a script or folder with scripts to cause that to be recompiled.

You can also compile player scripts only, by clicking Compile Player Scripts. Use the dropdown button to switch to another platform.

On 2021.2+, Unity changed how compilation results are cached. The Recompile and Compile Player Scripts will clear those caches to allow measuring a full compilation run.

Navigation

Left Click to select a specific assembly. This will show dependencies and dependants.
Hover over an assembly to get additional details.
Alt + Scroll Wheel to zoom in/out.
Alt + Right Click to reset zoom.

Compact will toggle between a waterfall view of all assemblies, and a compact collapsed view that tries to save space.
Logging turns on a lot of extra logs that will be put into the Console when clicking on an assembly.
Show Reloads adds an extra section in the timeline to see how much time went into compilation and how much into the following Domain Reload.

EditMode tests

Compilation Visualizer can run edit mode tests to ensure your project compiles on all platforms, catching common mistakes with ifdefs and API compatibility.
To use these tests, simply add it to the "testables" section in your project manifest.json:

  "testables": [
    "com.needle.compilation-visualizer"
  ],

Then, when you open Window > General > Test Runner you can click Run All or double-click CompilePlayerScripts.

EditMode Tests

Screenshots

Compilation Process Coloring Options Compact View Compact View with selected assembly Expanded View Expanded view with selected assembly

Compatibility to 2018.4, 2019.1, 2019.2

While most functionality works great those versions, some minor things are different:

  • slightly less accurate total compilation time on 2018.4 — 2019.1+ has events for the entire compilation while on 2018.4 the last finished assembly compilation is used as end date.
  • no PackageInfo for now on 2018.4/2019.1 as PackageInfo.FindForAsset doesn't exist.

Known Issues

On 2021.2, sometimes UnityEditor.UI.dll and UnityEditor.TestRunner.dll are included in Player Builds for reasons.

Contact

needle — tools for unity@NeedleTools@marcel_wiessler@hybridherbst

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.