Compiling time tests on code tiny changes : Ly 1.20 vs 1.22

Hi Lumberyard devs!
I want to take your attention on one very importat thing for me on the - compiling time.
I made little test for you, so you can see the difference on compiling same project with using difference versions of engine.

First test: Lumberyard 1.20 + my GameProject + VS2017Community 15.9.19

1>------ Build started: Project: _WAF_, Configuration: [Game and Engine] profile x64 ------
1>[WAF] Engine Root: c:\Lumberyard\dev\
1>[WAF] Executing 'build_win_x64_vs2017_profile' in 'c:\Lumberyard\dev\BinTemp\win_x64_vs2017_profile'
1>[INFO] Regenerating 3rd Party settings file...
1>[WARN] Missing JDK path from Setup Assistant detected. Target platforms that require java will be disabled. Please re-run Setup Assistant with "Compile For Android" enabled and run the configure command again.
1>[SETTINGS] msvs_version = 15 (default 14)
1>[SETTINGS] Target Output folder (win_x64_vs2017/profile): Bin64vc141
1>[WARNING] Incredibuild disabled by build option
1>[WARN] Invalid module 'LyIdentity_shared' in spec 'game_and_engine'
1>[WARN] Invalid module 'LyIdentity_static' in spec 'game_and_engine'
1>[WARN] Module use dependency 'CrashHandler' for target 'CrySystem' refers to an invalid module
1>[WARN] Module use dependency 'ToolsCrashHandler' for target 'EditorLib' refers to an invalid module
1>Cannot copy source 'C:\Lumberyard\3rdParty\PVRTexTool\2016_r1.1\PVRTexLib_License.txt' File not found.  Skipping.
1>[3836/5992] cxx (win_x64_vs2017|profile): GameProject\Gem\Code\Source\Components\RTSCameraComponent.cpp -> BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\Components\RTSCameraComponent.cpp.1363050.obj
1>[5903/5992] cxxshlib (win_x64_vs2017|profile): BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\GameProject_rc\GameProject.auto_gen.1363050.res BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\Components\GameCursorComponent.cpp.1363050.obj BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\Components\RTSCameraComponent.cpp.1363050.obj BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\Components\SimpleFPSController.cpp.1363050.obj BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\Components\VisibleTagComponent.cpp.1363050.obj BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\GameProjectModule.cpp.1363050.obj BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\GameProjectSystemComponent.cpp.1363050.obj BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\GameProject_precompiled.1363050.obj -> Bin64vc141\Gem.GameProject.ee43c3a070a94d369c664215508971cf.v0.1.0.dll Bin64vc141\Gem.GameProject.ee43c3a070a94d369c664215508971cf.v0.1.0.pdb Bin64vc141\Gem.GameProject.ee43c3a070a94d369c664215508971cf.v0.1.0.dll.manifest
1>   Creating library c:\Lumberyard\dev\Bin64vc141\Gem.GameProject.ee43c3a070a94d369c664215508971cf.v0.1.0.lib and object c:\Lumberyard\dev\Bin64vc141\Gem.GameProject.ee43c3a070a94d369c664215508971cf.v0.1.0.exp
1>[WAF] 'build_win_x64_vs2017_profile' finished successfully (18.676s)
1>[WAF] Executing 'package_win_x64_vs2017_profile'
1>[WAF] 'package_win_x64_vs2017_profile' finished successfully (1.613s)
1>[WAF] Executing 'deploy_win_x64_vs2017_profile'
1>[INFO] Regenerating 3rd Party settings file...
1>[WAF] 'deploy_win_x64_vs2017_profile' finished successfully (1.658s)
2>------ Build started: Project: GameProject (GameProject\GameProject), Configuration: [Game and Engine] profile x64 ------
2>[WAF] Engine Root: c:\Lumberyard\dev\
2>[WAF] Executing 'build_win_x64_vs2017_profile' in 'c:\Lumberyard\dev\BinTemp\win_x64_vs2017_profile'
2>[INFO] Regenerating 3rd Party settings file...
2>[WARN] Missing JDK path from Setup Assistant detected. Target platforms that require java will be disabled. Please re-run Setup Assistant with "Compile For Android" enabled and run the configure command again.
2>[SETTINGS] msvs_version = 15 (default 14)
2>[SETTINGS] Target Output folder (win_x64_vs2017/profile): Bin64vc141
2>[WARNING] Incredibuild disabled by build option
2>[WARN] Invalid module 'LyIdentity_shared' in spec 'game_and_engine'
2>[WARN] Invalid module 'LyIdentity_static' in spec 'game_and_engine'
2>[WARN] Module use dependency 'CrashHandler' for target 'CrySystem' refers to an invalid module
2>[WARN] Module use dependency 'ToolsCrashHandler' for target 'EditorLib' refers to an invalid module
2>[WAF] 'build_win_x64_vs2017_profile' finished successfully (2.958s)
2>[WAF] Executing 'package_win_x64_vs2017_profile'
2>[WAF] 'package_win_x64_vs2017_profile' finished successfully (1.603s)
2>[WAF] Executing 'deploy_win_x64_vs2017_profile'
2>[INFO] Regenerating 3rd Party settings file...
2>[WAF] 'deploy_win_x64_vs2017_profile' finished successfully (1.651s)
========== Build: 2 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
TOTAL COMPILE TIME = 18.6+3 ~ 20..25sec

Second test: Lumberyard 1.22 + my GameProject + VS2017Community 15.9.19

1>------ Build started: Project: _WAF_, Configuration: [Game and Engine] profile x64 ------
1>[WAF] Engine Root: c:\Lumberyard\dev\
1>[WAF] Executing 'build_win_x64_vs2017_profile' in 'c:\Lumberyard\dev\BinTemp\win_x64_vs2017_profile'
1>[WARN] Missing JDK path from Setup Assistant detected. Target platforms that require java will be disabled. Please re-run Setup Assistant with "Compile For Android" enabled and run the configure command again.
1>[SETTINGS] Target Output folder (win_x64_vs2017/profile): Bin64vc141
1>[WARNING] Incredibuild disabled by build option
1>[WARN] Invalid module 'LyIdentity_shared' in spec 'game_and_engine'
1>[WARN] Invalid module 'LyIdentity_static' in spec 'game_and_engine'
1>[WARN] Module use dependency 'CrashHandler' for target 'CrySystem' refers to an invalid module
1>[WARN] Module use dependency 'ToolsCrashHandler' for target 'EditorLib' refers to an invalid module
1>Cannot copy source 'C:\Lumberyard\3rdParty\PVRTexTool\2016_r1.1\PVRTexLib_License.txt' File not found.  Skipping.
1>[4135/6379] cxx (win_x64_vs2017|profile): GameProject\Gem\Code\Source\Components\RTSCameraComponent.cpp -> BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\Components\RTSCameraComponent.cpp.1363050.obj
1>[4138/6379] cxx (win_x64_vs2017|profile): GameProject\Gem\Code\Source\GameProjectModule.cpp -> BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\GameProjectModule.cpp.1363050.obj
1>[6284/6379] cxxshlib (win_x64_vs2017|profile): BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\GameProject_rc\GameProject.auto_gen.1363050.res BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\Components\GameCursorComponent.cpp.1363050.obj BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\Components\RTSCameraComponent.cpp.1363050.obj BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\Components\SimpleFPSController.cpp.1363050.obj BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\Components\VisibleTagComponent.cpp.1363050.obj BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\GameProjectModule.cpp.1363050.obj BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\GameProjectSystemComponent.cpp.1363050.obj BinTemp\win_x64_vs2017_profile\GameProject\Gem\Code\Source\GameProject_precompiled.1363050.obj -> Bin64vc141\Gem.GameProject.ee43c3a070a94d369c664215508971cf.v0.1.0.dll Bin64vc141\Gem.GameProject.ee43c3a070a94d369c664215508971cf.v0.1.0.pdb Bin64vc141\Gem.GameProject.ee43c3a070a94d369c664215508971cf.v0.1.0.dll.manifest
1>   Creating library c:\Lumberyard\dev\Bin64vc141\Gem.GameProject.ee43c3a070a94d369c664215508971cf.v0.1.0.lib and object c:\Lumberyard\dev\Bin64vc141\Gem.GameProject.ee43c3a070a94d369c664215508971cf.v0.1.0.exp
1>[WAF] 'build_win_x64_vs2017_profile' finished successfully (2m18.624s)
1>[WAF] Executing 'package_win_x64_vs2017_profile'
1>[WAF] 'package_win_x64_vs2017_profile' finished successfully (2.909s)
1>[WAF] Executing 'deploy_win_x64_vs2017_profile'
1>[WAF] 'deploy_win_x64_vs2017_profile' finished successfully (1.957s)
2>------ Build started: Project: GameProject (GameProject\GameProject), Configuration: [Game and Engine] profile x64 ------
2>[WAF] Engine Root: c:\Lumberyard\dev\
2>[WAF] Executing 'build_win_x64_vs2017_profile' in 'c:\Lumberyard\dev\BinTemp\win_x64_vs2017_profile'
2>[WARN] Missing JDK path from Setup Assistant detected. Target platforms that require java will be disabled. Please re-run Setup Assistant with "Compile For Android" enabled and run the configure command again.
2>[SETTINGS] Target Output folder (win_x64_vs2017/profile): Bin64vc141
2>[WARNING] Incredibuild disabled by build option
2>[WARN] Invalid module 'LyIdentity_shared' in spec 'game_and_engine'
2>[WARN] Invalid module 'LyIdentity_static' in spec 'game_and_engine'
2>[WARN] Module use dependency 'CrashHandler' for target 'CrySystem' refers to an invalid module
2>[WARN] Module use dependency 'ToolsCrashHandler' for target 'EditorLib' refers to an invalid module
2>[WAF] 'build_win_x64_vs2017_profile' finished successfully (48.837s)
2>[WAF] Executing 'package_win_x64_vs2017_profile'
2>[WAF] 'package_win_x64_vs2017_profile' finished successfully (2.616s)
2>[WAF] Executing 'deploy_win_x64_vs2017_profile'
2>[WAF] 'deploy_win_x64_vs2017_profile' finished successfully (1.867s)
========== Build: 2 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
TOTAL COMPILE TIME 2.18+48.8 ~~ 3min

As you can see the difference of compiling time is very huge:
25sec Vs 3min! (1.20 vs 1.22) (VS2017 used ver 15.9.19)
Please fix this new WAF changes, it’s very annouing to wait too much to test code changes.

4 Likes

I have the same exact problem. Please fix, this is completely unacceptable. Mine goes from 30 seconds to 15 minutes.

1 Like

Hi @fluffy and @Amadis,

First of all we’re very sorry this issue is affecting you and leading to increased iteration/build times. We all know how frustrating this is!

The good news is we’re aware of the problem and are currently working on a fix. The issue appears to have been introduced by modifications to a waf build script to improve consistency of whether files should be rebuilt or not. Unfortunately this came at a significant cost and an improved solution is being worked on as I type.

We really hope to have a solution in the form of a patch very soon,

Thank you for your patience!

Tom

2 Likes

Thanks @tom-hh for reply, i’m very glad to hear, what Ly team are working on solving this issue. I’m looking forward to see the patch or new ver of engine 1.23 ))

No worries at all @fluffy, my understanding is it’s the infrastructure team, we’ll definitely have more news next week! Thanks again!

Hi @fluffy,

Apologies we haven’t been in touch sooner but I can confirm we have a fix for this issue and as far as I’m aware it will be in the 1.23 Release.

Thank you for your understanding,

Tom

2 Likes

Thanks @tom-hh. I’ll be waiting till Ly v1.23 be released. I hope it will be released soon. While I’m use Ly v1.21

Hi folks, my team just upgraded to 1.22 last week and while we expected some big builds as part of that, this is now hammering our workflow.

If a patch could be made available in the meantime, that would be appreciated. At a minimum, please document the changes for the fix so smaller teams like us can apply it ourselves, and aren’t forced to commit resources to an immediate 1.23 upgrade.

Hi Tom,

I’m trying out Lumberyard 1.23 now, and it looks like the problem is not fixed. It still takes >2 minutes to launch the Editor, even when not a single file needs compiled.

Did the fix not make it into 1.23?

Best wishes,
James