Skip to content
This repository was archived by the owner on Nov 1, 2020. It is now read-only.

SuperIlc improvements, part #1#7190

Merged
trylek merged 5 commits intodotnet:masterfrom
trylek:SuperIlc
Mar 19, 2019
Merged

SuperIlc improvements, part #1#7190
trylek merged 5 commits intodotnet:masterfrom
trylek:SuperIlc

Conversation

@trylek
Copy link
Member

@trylek trylek commented Mar 19, 2019

This change enables parallelization of ILC compilation when building
multiple assemblies. For the CoreCLR framework I'm observing about
3~4 times compilation time speedup (about 33 seconds where
previously I was observing about 120 seconds with SuperIlc and
about 180 seconds with the legacy scripts).

Thanks

Tomas

This change enables parallelization of ILC compilation when building
multiple assemblies. For the CoreCLR framework I'm observing about
3~4 times compilation time speedup (about 33 seconds where
previously I was observing about 120 seconds with SuperIlc and
about 180 seconds with the legacy scripts).

Thanks

Tomas
@trylek trylek requested a review from nattress March 19, 2019 20:01
@@ -0,0 +1,160 @@
using System;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you add the copyright header

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, for sure, sorry about missing it again :-).

public string LogPath;
public int TimeoutMilliseconds = DefaultTimeout;
public int ExpectedExitCode;
public object Data;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we strongly type this and use a meaningful name, ie, FileName?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, will do, I was originally thinking it might also serve other purposes but I agree it's better not to introduce speculative code.

Based on Simon's PR feedback I have renamed ProcessInfo.Data to
InputFileName and I made it a string. As I've introduced a subfolder
per compiler name (ilc / crossgen), I could relax the requirement
for output directory specification (because it can default to the
input folder) and the check for input folder being a subfolder
of the output folder.

Thanks

Tomas
try
{
outputDirectory.Delete(recursive: true);
Directory.Delete(runnerOutputPath, recursive: true);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: Could you update the error message in the catch to refer to runnerOutputPath instead of the now potentially incorrect outputDirectory?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, will do!

Copy link
Contributor

@nattress nattress left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM - Thanks!

trylek added 2 commits March 19, 2019 21:59
Emit the process name, arguments, duration and exit status into the
process log file. I have also added calls to WaitForExit() to
flush buffered stdout / stderr outputs.

Thanks

Tomas
@trylek trylek closed this Mar 19, 2019
@trylek trylek reopened this Mar 19, 2019
@trylek trylek merged commit 6ecf41c into dotnet:master Mar 19, 2019
@trylek trylek deleted the SuperIlc branch April 25, 2019 21:56
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants