Author |
Topic |
|
zachary
New Member
4 Posts |
Posted - Jun 16 2020 : 1:45:05 PM
|
It's super frustrating when I need to compile a new version of UE4 and have to fight with VA. Typical workflow is: 1. Open solution in VS 2. Open VA menu as quickly as possible and disable VA 3. Not fast enough, VA parser has started, close visual studio. 4. Goto 1
The parser processes should be killed when I disable VA. |
|
feline
Whole Tomato Software
United Kingdom
19024 Posts |
Posted - Jun 17 2020 : 05:51:43 AM
|
Instead of disabling VA, have you tried turning off the setting:
VA Options -> Performance -> Enable multithreaded parsing
which can be turned On or Off while VA is parsing. Also, if this is a regular problem, which I can understand might be the case given the size of Unreal Engine, have you considered changing the thread priority to below normal:
VA Options -> Performance -> Thread priority = Normal / Below Normal / Lowest (requires restart)
The problem with disabling VA and stopping all parsing is that disabling VA is intended as a short term action, while VA requires parsing to have finished before it can actually do much to help you, so normally we don't want to stop parsing, but do realise we need to avoid impacting your system performance any more than necessary. |
zen is the art of being at one with the two'ness |
|
|
zachary
New Member
4 Posts |
Posted - Jun 17 2020 : 3:36:24 PM
|
I'll explain why I don't think these are valid solutions based on my workflow and the behavior of VA.
I regularly sync up with the main UE4 github repo. Once I have the main source repo, I compile 3 different solution configurations: * DebugGame Win64 * DevelopmentGame LinuxAArch64 * DevelopmentServer Win64
Once these are compiled I work across 3 UE4 projects that use this compiled engine source as the target engine.
In total there are 4 Visual Studio solution files, 1 for the engine, 3 for the projects.
VA does not remember and use the parsed results across projects. So if I let it fully parse the UE4 source project, it still reparses the entire source tree when I open project 1, 2 and 3 for the first time (and when VS crashes). I have to allow VA to parse the entire UE4 source tree a minimum of 3 times here.
Since compiling the UE4 source for the various targets takes long enough by itself, allowing VA to parse the base tree when the results are just going to be thrown away is a waste of an already starved CPU.
I've been dealing with this workflow for about 2 years now and when deadlines are looming it is an absolutely rage-inducing behavior to have to fight against. I would be happy to just have a "STOP" button in VA that prevents me from having to perform these Visual Studio startup shennanagins OR ideally a situation where VA actually shares data across VS solutions. |
|
|
feline
Whole Tomato Software
United Kingdom
19024 Posts |
Posted - Jun 18 2020 : 07:05:21 AM
|
If you are working with Unreal Engine installed via the Epic Games Launcher, and then have more than one game solution that uses this Unreal Engine version, then VA will remember it and not reparse the engine source files.
The same should be happening when you have installed the engine source code from GitHub and compiled it, but apparently VA does not handle this situation correctly. I am currently looking into this problem, and trying to work out why, and what we can do about it.
As a short term, immediate solution, would loading some instances of the IDE with VA inactive, so it doesn't do any parsing, help you? If so, then you can use the /SafeMode command line switch to launch the IDE without installed extensions enabled, including VA. For VS2019 this would be the command line:
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\devenv.exe" /SafeMode |
zen is the art of being at one with the two'ness |
|
|
zachary
New Member
4 Posts |
Posted - Jun 19 2020 : 12:25:58 AM
|
The safemode switch is helpful, thanks. |
|
|
feline
Whole Tomato Software
United Kingdom
19024 Posts |
Posted - Jun 19 2020 : 07:43:31 AM
|
I am glad this helps, but obviously it is just a short term solution.
When you are working with your 4 different solutions, do you tend to have only one instance of the IDE open at a time, or several, upto 4 at once perhaps?
VA is designed to create a separate symbol database for each instance of the IDE that is opened, so each instance will have to do a full parse of Unreal Engine, even if / when we fix the problem with VA reparsing for a source code compiled version of Unreal Engine.
We have tried having a shared symbol database for Unreal Engine symbols, but this is not as simple as it looks, since you can have several different versions of Unreal Engine installed on the same machine at the same time. |
zen is the art of being at one with the two'ness |
|
|
zachary
New Member
4 Posts |
Posted - Jun 20 2020 : 4:29:47 PM
|
I only ever have 1 instance of the IDE open. I work across several versions of Unreal Engine to make sure my plugin works across them, so if I'm validating the most recent 3 versions of UE4 I'll have 6 different copies of UE4 (3 binary installs and 3 source installs). |
|
|
feline
Whole Tomato Software
United Kingdom
19024 Posts |
Posted - Jun 22 2020 : 05:44:42 AM
|
This is, hopefully, an unusual situation. We probably cannot safely assume that the binary and source installs of UE are identical, even if they have the same version number, so if VA is going to parse the UE code normally, this would require 6 full parses of the code by VA, even assuming we had sharing of UE symbol database working perfectly. I doubt this is what you want or need, at least not when you are just testing your plugin works correctly.
I see much more clearly now why you want a way to stop all VA parsing, ideally before it even starts.
Does the SafeMode command line switch do this successfully for you for now? |
zen is the art of being at one with the two'ness |
|
|
|
Topic |
|