GithubHelp home page GithubHelp logo

needle-tools / compilation-visualizer Goto Github PK

View Code? Open in Web Editor NEW
818.0 818.0 32.0 88 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%
assembly compact compilation-visualizer unity

compilation-visualizer's People

Contributors

hybridherbst avatar marwie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

compilation-visualizer's Issues

Couldn't fetch compilation data; the format has probably changed

Unity: 2022.3.9f1
Package: 1.8.4

System.ArgumentException: JSON parse error: Missing a comma or '}' after an object member.
 at (wrapper managed-to-native) UnityEngine.JsonUtility.FromJsonInternal(string,object,System.Type)
 at UnityEngine.JsonUtility.FromJson (System.String json, System.Type type) [0x0005f] in /Users/bokken/build/output/unity/unity/Modules/JSONSerialize/Public/JsonUtility.bindings.cs:42 
 at UnityEngine.JsonUtility.FromJson[T] (System.String json) [0x00001] in /Users/bokken/build/output/unity/unity/Modules/JSONSerialize/Public/JsonUtility.bindings.cs:30 
 at Needle.CompilationVisualizer.CompilationData.ConvertBeeDataToCompilationData () [0x00015] in ./Library/PackageCache/[email protected]/Editor/CompilationTrace.cs:99 
UnityEngine.Debug:LogError (object)
Needle.CompilationVisualizer.CompilationData:ConvertBeeDataToCompilationData () (at ./Library/PackageCache/[email protected]/Editor/CompilationTrace.cs:169)
Needle.CompilationVisualizer.CompilationData:GetAll () (at ./Library/PackageCache/[email protected]/Editor/CompilationTrace.cs:75)
Needle.CompilationVisualizer.CompilationTimelineWindow:Refresh () (at ./Library/PackageCache/[email protected]/Editor/CompilationTimelineWindow.cs:146)
Needle.CompilationVisualizer.CompilationTimelineWindow:AssemblyCompilationFinished (string,UnityEditor.Compilation.CompilerMessage[]) (at ./Library/PackageCache/[email protected]/Editor/CompilationTimelineWindow.cs:152)
UnityEditor.AddressableAssets.Build.DataBuilders.BuildScriptPackedMode:DoBuild<UnityEditor.AddressableAssets.Build.AddressablesPlayerBuildResult> (UnityEditor.AddressableAssets.Build.AddressablesDataBuilderInput,UnityEditor.AddressableAssets.Build.DataBuilders.AddressableAssetsBuildContext)
AddressablesPlayAssetDelivery.Editor.BuildScriptPlayAssetDelivery:DoBuild<UnityEditor.AddressableAssets.Build.AddressablesPlayerBuildResult> (UnityEditor.AddressableAssets.Build.AddressablesDataBuilderInput,UnityEditor.AddressableAssets.Build.DataBuilders.AddressableAssetsBuildContext) (at Assets/PlayAssetDelivery/Editor/BuildScriptPlayAssetDelivery.cs:45)
UnityEditor.AddressableAssets.Settings.AddressableAssetSettings:BuildPlayerContent (UnityEditor.AddressableAssets.Build.AddressablesPlayerBuildResult&,UnityEditor.AddressableAssets.Settings.AddressableAssetSettings)
AddressablesPlayerBuildProcessor:PrepareForPlayerbuild (UnityEditor.AddressableAssets.Settings.AddressableAssetSettings,UnityEditor.Build.BuildPlayerContext,bool) (at ./LocalPackages/[email protected]/Editor/Build/AddressablesPlayerBuildProcessor.cs:100)
AddressablesPlayerBuildProcessor:PrepareForBuild (UnityEditor.Build.BuildPlayerContext) (at ./LocalPackages/[email protected]/Editor/Build/AddressablesPlayerBuildProcessor.cs:79)
UnityEditor.BuildPipeline:BuildPlayer (UnityEditor.BuildPlayerOptions)
BuildHelper:BuildPlayer (UnityEditor.BuildPlayerOptions) (at Assets/Editor/BuildHelper.cs:683)
BuildHelper:BuildAndroidProductionTeamCityAAB () (at Assets/Editor/BuildHelper.cs:583)GameSwitcher.GameSwitcher/<>c:<OnEnable>b__29_3 () (at Assets/Scripts/GameSwitcher/Editor/GameSwitcher.cs:340)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) (at /Users/bokken/build/output/unity/unity/Modules/IMGUI/GUIUtility.cs:190)

Couldn't fetch compilation data; the format has probably changed. Please report a bug at https://github.com/needle-tools/compilation-visualizer/issues/new and include the package + Unity version.

bug
Couldn't fetch compilation data; the format has probably changed. Please report a bug at https://github.com/needle-tools/compilation-visualizer/issues/new and include the package + Unity version.
System.ArgumentException: JSON parse error: Missing a name for object member.
at (wrapper managed-to-native) UnityEngine.JsonUtility.FromJsonInternal(string,object,System.Type)
at UnityEngine.JsonUtility.FromJson (System.String json, System.Type type) [0x0005f] in /Users/bokken/build/output/unity/unity/Modules/JSONSerialize/Public/JsonUtility.bindings.cs:42
at UnityEngine.JsonUtility.FromJson[T] (System.String json) [0x00001] in /Users/bokken/build/output/unity/unity/Modules/JSONSerialize/Public/JsonUtility.bindings.cs:30
at Needle.CompilationVisualizer.CompilationData.ConvertBeeDataToCompilationData () [0x00021] in ./Library/PackageCache/[email protected]/Editor/CompilationTrace.cs:99
UnityEngine.Debug:LogError (object)
Needle.CompilationVisualizer.CompilationData:ConvertBeeDataToCompilationData () (at ./Library/PackageCache/[email protected]/Editor/CompilationTrace.cs:169)
Needle.CompilationVisualizer.CompilationData:GetAll () (at ./Library/PackageCache/[email protected]/Editor/CompilationTrace.cs:75)
Needle.CompilationVisualizer.CompilationTimelineWindow:Refresh () (at ./Library/PackageCache/[email protected]/Editor/CompilationTimelineWindow.cs:146)
Needle.CompilationVisualizer.CompilationTimelineWindow:AssemblyCompilationFinished (string,UnityEditor.Compilation.CompilerMessage[]) (at ./Library/PackageCache/[email protected]/Editor/CompilationTimelineWindow.cs:152)
UnityEditor.Build.Player.PlayerBuildInterface:CompilePlayerScripts (UnityEditor.Build.Player.ScriptCompilationSettings,string)
Needle.CompilationVisualizer.CompilationTimelineWindow:CompilePlayerScripts () (at ./Library/PackageCache/[email protected]/Editor/CompilationTimelineWindow.cs:709)
Needle.CompilationVisualizer.CompilationTimelineWindow:OnGUI () (at ./Library/PackageCache/[email protected]/Editor/CompilationTimelineWindow.cs:271)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) (at /Users/bokken/build/output/unity/unity/Modules/IMGUI/GUIUtility.cs:190)

Can not install

but added com.needle.compilation-visualizer to scopes in settings.
And now it shows in package manager and works

Total time for PlayMode compilation keeps running in the background

I am working on an Android only project. Currently do not have a non Android project on my machine. On play compilation visualizer is triggered and appears to record the compilation and reload time accurately, however, the total time seems to be an arbitrary number, usually around 100 seconds. Every now and again it shoots up to 1000 seconds. I've repeated on play 30 times, restarted Unity after the 15th time before continuing.

image

image

Unity 2018.4.28f1 NullReferenceException on recompilation

Hi,

Got following exceptions when clicking "Recompile" button from the compilation timeline window:

NullReferenceException: Object reference not set to an instance of an object
Needle.CompilationVisualizer.CompilationAnalysis.OnAssemblyCompilationStarted (System.String assembly) (at Packages/com.needle.compilation-visualizer@d99008755b85376fd5dec3a914d7fa544eded78d/Editor/CompilationAnalysis.cs:86)
UnityEditor.Compilation.CompilationPipeline.<SubscribeToEvents>m__0 (System.String assemblyPath) (at C:/buildslave/unity/build/Editor/Mono/Scripting/ScriptCompilation/CompilationPipeline.cs:117)
UnityEditor.Scripting.ScriptCompilation.EditorCompilationInterface:TickCompilationPipeline(EditorScriptCompilationOptions, BuildTargetGroup, BuildTarget) (at C:/buildslave/unity/build/Editor/Mono/Scripting/ScriptCompilation/EditorCompilationInterface.cs:346)

and

NullReferenceException: Object reference not set to an instance of an object
Needle.CompilationVisualizer.CompilationAnalysis.OnAssemblyCompilationFinished (System.String assembly, UnityEditor.Compilation.CompilerMessage[] arg2) (at Packages/com.needle.compilation-visualizer@d99008755b85376fd5dec3a914d7fa544eded78d/Editor/CompilationAnalysis.cs:110)
UnityEditor.Compilation.CompilationPipeline.<SubscribeToEvents>m__1 (System.String assemblyPath, UnityEditor.Compilation.CompilerMessage[] messages) (at C:/buildslave/unity/build/Editor/Mono/Scripting/ScriptCompilation/CompilationPipeline.cs:130)
UnityEditor.Scripting.ScriptCompilation.EditorCompilationInterface:TickCompilationPipeline(EditorScriptCompilationOptions, BuildTargetGroup, BuildTarget) (at C:/buildslave/unity/build/Editor/Mono/Scripting/ScriptCompilation/EditorCompilationInterface.cs:346)

Exceptions seem to trigger for every assembly in the project. After a bit of investigation it turned out that following json is stored in EditorPrefs for "Needle.CompilationVisualizer.CompilationData" key:

{
    "iterations": []
}

Tried clearing EditorPrefs for that key and restarting Unity and it did not help.

I wonder, is it a valid state of compilation data json to have empty iterations array? If yes, then it feels like that for the first assembly compilation started event need to change following check to

if (data == null || data.compilationFinished != DateTime.MinValue)

Add the ability to zoom

It would be nice if we could have the ability to zoom into the timeline. Right now, we get this result and it is rather hard to read
image

Couldn't fetch compilation data; the format has probably changed.

1.8.3
Unity 2022.2.1f1

System.IO.IOException: Sharing violation on path I:\Documents\Demos\Entities\Library\Bee\fullprofile.json
at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) [0x0019e] in <8f06425e63004caf99a79845675f751e>:0
at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.IO.FileOptions options) [0x00000] in <8f06425e63004caf99a79845675f751e>:0
at (wrapper remoting-invoke-with-check) System.IO.FileStream..ctor(string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,int,System.IO.FileOptions)
at System.IO.StreamReader..ctor (System.String path, System.Text.Encoding encoding, System.Boolean detectEncodingFromByteOrderMarks, System.Int32 bufferSize) [0x00055] in <8f06425e63004caf99a79845675f751e>:0
at System.IO.StreamReader..ctor (System.String path, System.Text.Encoding encoding, System.Boolean detectEncodingFromByteOrderMarks) [0x00000] in <8f06425e63004caf99a79845675f751e>:0
at (wrapper remoting-invoke-with-check) System.IO.StreamReader..ctor(string,System.Text.Encoding,bool)
at System.IO.File.InternalReadAllText (System.String path, System.Text.Encoding encoding) [0x00000] in <8f06425e63004caf99a79845675f751e>:0
at System.IO.File.ReadAllText (System.String path) [0x0002c] in <8f06425e63004caf99a79845675f751e>:0
at Needle.CompilationVisualizer.CompilationData.ConvertBeeDataToCompilationData () [0x00021] in I:\Documents\Demos\Entities\Library\PackageCache\[email protected]\Editor\CompilationTrace.cs:99

[Suggestion] Auto focus window while recompiling

Can you guys add an optional functionality so it automatically switches to this window while recompiling and back to console (or possibly any other) window when finished.

I'm using this nested at same row with my console window as I don't need this window visible most of the time except while recompiling.

This will allow you to see the live recompiling progress without needing to manually click and back. Which would be really neat feature.

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.