Skip to content

[nativeaot][tests] Add Native AOT iOS perf scenarios - #85317

Merged
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios
Jun 1, 2023
Merged

[nativeaot][tests] Add Native AOT iOS perf scenarios#85317
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 25, 2023

Copy link
Copy Markdown
Member

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Preliminary perf measurements for the HelloiOS app using Native AOT.

SOD - iOS HelloWorld Native AOT Zip Size

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT Zip Size1727305.000 bytes1727305.000 bytes1727305.000 bytes

SOD - iOS HelloWorld Native AOT .app

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT .app8075485.000 bytes8075485.000 bytes8075485.000 bytes
pub/nativeaot/HelloiOS.app/HelloiOS8074496.000 bytes8074496.000 bytes8074496.000 bytes
pub/nativeaot/HelloiOS.app/Info.plist981.000 bytes981.000 bytes981.000 bytes
pub/nativeaot/HelloiOS.app/PkgInfo8.000 bytes8.000 bytes8.000 bytes

Device Startup - iOS HelloWorld Native AOT

MetricAverageMinMax
Generic Startup38.600 ms34.000 ms41.000 ms

@kotlarmiloskotlarmilos added this to the 8.0.0 milestone Apr 25, 2023
@kotlarmiloskotlarmilos self-assigned this Apr 25, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to 'os-ios': @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

Issue Details

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Author:kotlarmilos
Assignees:kotlarmilos
Labels:

os-ios, area-NativeAOT-coreclr

Milestone:8.0.0

Comment threadsrc/mono/sample/iOS/Makefile Outdated
Comment threadsrc/mono/sample/iOS-NativeAOT/Makefile Outdated
@kotlarmilos

kotlarmilos commented May 30, 2023

Copy link
Copy Markdown
MemberAuthor

This PR is ready for review. The performance results can be found in the dotnet-runtime-perf pipeline. The Mono performance runs have been expanded to include separate runs with and without symbols. Once this PR is merged, the following job names need to be updated in the dashboard.

Native AOT performance measurements:

  • SOD - iOS HelloWorld Native AOT .app Size symbols
  • SOD - iOS HelloWorld Native AOT .app Size nosymbols
  • SOD - iOS HelloWorld Native AOT Zip Size symbols
  • SOD - iOS HelloWorld Native AOT Zip Size nosymbols
  • SOD - Device Startup - iOS Native AOT HelloWorld symbols
  • SOD - Device Startup - iOS Native AOT HelloWorld nosymbols

Mono performance measurements:

  • SOD - iOS HelloWorld Mono .app Size llvm symbols
  • SOD - iOS HelloWorld Mono .app Size llvm nosymbols
  • SOD - iOS HelloWorld Mono .app Size nollvm symbols
  • SOD - iOS HelloWorld Mono .app Size nollvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size llvm symbols
  • SOD - iOS HelloWorld Mono Zip Size llvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm symbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm nosymbols
  • Device Startup - iOS Mono HelloWorld llvm symbols
  • Device Startup - iOS Mono HelloWorld llvm nosymbols
  • Device Startup - iOS Mono HelloWorld nollvm symbols
  • Device Startup - iOS Mono HelloWorld nollvm nosymbols

@LoopedBard3 I will keep you posted.

</PropertyGroup>

<Import Project="$(CoreClrProjectRoot)nativeaot\BuildIntegration\Microsoft.NETCore.Native.targets" />
<!-- Fix temporary regression, will be fixed on the main in a separate PR: https://github.com/dotnet/runtime/issues/80911 -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@ivanpovazanivanpovazan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM!
Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

LGTM! Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

Thanks! If we maintain consistency across all platforms and strip in the same way, it should be fine. If I recall correctly, we encountered an issue with global symbols stripping.

@kotlarmilos
kotlarmilos merged commit 534d1df into dotnet:mainJun 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jul 1, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kotlarmilos@ivanpovazan
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
[nativeaot][tests] Add Native AOT iOS perf scenarios by kotlarmilos · Pull Request #85317 · dotnet/runtime · GitHub
Skip to content

[nativeaot][tests] Add Native AOT iOS perf scenarios - #85317

Merged
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios
Jun 1, 2023
Merged

[nativeaot][tests] Add Native AOT iOS perf scenarios#85317
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 25, 2023

Copy link
Copy Markdown
Member

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Preliminary perf measurements for the HelloiOS app using Native AOT.

SOD - iOS HelloWorld Native AOT Zip Size

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT Zip Size1727305.000 bytes1727305.000 bytes1727305.000 bytes

SOD - iOS HelloWorld Native AOT .app

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT .app8075485.000 bytes8075485.000 bytes8075485.000 bytes
pub/nativeaot/HelloiOS.app/HelloiOS8074496.000 bytes8074496.000 bytes8074496.000 bytes
pub/nativeaot/HelloiOS.app/Info.plist981.000 bytes981.000 bytes981.000 bytes
pub/nativeaot/HelloiOS.app/PkgInfo8.000 bytes8.000 bytes8.000 bytes

Device Startup - iOS HelloWorld Native AOT

MetricAverageMinMax
Generic Startup38.600 ms34.000 ms41.000 ms

@kotlarmiloskotlarmilos added this to the 8.0.0 milestone Apr 25, 2023
@kotlarmiloskotlarmilos self-assigned this Apr 25, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to 'os-ios': @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

Issue Details

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Author:kotlarmilos
Assignees:kotlarmilos
Labels:

os-ios, area-NativeAOT-coreclr

Milestone:8.0.0

Comment threadsrc/mono/sample/iOS/Makefile Outdated
Comment threadsrc/mono/sample/iOS-NativeAOT/Makefile Outdated
@kotlarmilos

kotlarmilos commented May 30, 2023

Copy link
Copy Markdown
MemberAuthor

This PR is ready for review. The performance results can be found in the dotnet-runtime-perf pipeline. The Mono performance runs have been expanded to include separate runs with and without symbols. Once this PR is merged, the following job names need to be updated in the dashboard.

Native AOT performance measurements:

  • SOD - iOS HelloWorld Native AOT .app Size symbols
  • SOD - iOS HelloWorld Native AOT .app Size nosymbols
  • SOD - iOS HelloWorld Native AOT Zip Size symbols
  • SOD - iOS HelloWorld Native AOT Zip Size nosymbols
  • SOD - Device Startup - iOS Native AOT HelloWorld symbols
  • SOD - Device Startup - iOS Native AOT HelloWorld nosymbols

Mono performance measurements:

  • SOD - iOS HelloWorld Mono .app Size llvm symbols
  • SOD - iOS HelloWorld Mono .app Size llvm nosymbols
  • SOD - iOS HelloWorld Mono .app Size nollvm symbols
  • SOD - iOS HelloWorld Mono .app Size nollvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size llvm symbols
  • SOD - iOS HelloWorld Mono Zip Size llvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm symbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm nosymbols
  • Device Startup - iOS Mono HelloWorld llvm symbols
  • Device Startup - iOS Mono HelloWorld llvm nosymbols
  • Device Startup - iOS Mono HelloWorld nollvm symbols
  • Device Startup - iOS Mono HelloWorld nollvm nosymbols

@LoopedBard3 I will keep you posted.

</PropertyGroup>

<Import Project="$(CoreClrProjectRoot)nativeaot\BuildIntegration\Microsoft.NETCore.Native.targets" />
<!-- Fix temporary regression, will be fixed on the main in a separate PR: https://github.com/dotnet/runtime/issues/80911 -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@ivanpovazanivanpovazan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM!
Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

LGTM! Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

Thanks! If we maintain consistency across all platforms and strip in the same way, it should be fine. If I recall correctly, we encountered an issue with global symbols stripping.

@kotlarmilos
kotlarmilos merged commit 534d1df into dotnet:mainJun 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jul 1, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kotlarmilos@ivanpovazan
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [nativeaot][tests] Add Native AOT iOS perf scenarios by kotlarmilos · Pull Request #85317 · dotnet/runtime · GitHub
Skip to content

[nativeaot][tests] Add Native AOT iOS perf scenarios - #85317

Merged
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios
Jun 1, 2023
Merged

[nativeaot][tests] Add Native AOT iOS perf scenarios#85317
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 25, 2023

Copy link
Copy Markdown
Member

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Preliminary perf measurements for the HelloiOS app using Native AOT.

SOD - iOS HelloWorld Native AOT Zip Size

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT Zip Size1727305.000 bytes1727305.000 bytes1727305.000 bytes

SOD - iOS HelloWorld Native AOT .app

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT .app8075485.000 bytes8075485.000 bytes8075485.000 bytes
pub/nativeaot/HelloiOS.app/HelloiOS8074496.000 bytes8074496.000 bytes8074496.000 bytes
pub/nativeaot/HelloiOS.app/Info.plist981.000 bytes981.000 bytes981.000 bytes
pub/nativeaot/HelloiOS.app/PkgInfo8.000 bytes8.000 bytes8.000 bytes

Device Startup - iOS HelloWorld Native AOT

MetricAverageMinMax
Generic Startup38.600 ms34.000 ms41.000 ms

@kotlarmiloskotlarmilos added this to the 8.0.0 milestone Apr 25, 2023
@kotlarmiloskotlarmilos self-assigned this Apr 25, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to 'os-ios': @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

Issue Details

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Author:kotlarmilos
Assignees:kotlarmilos
Labels:

os-ios, area-NativeAOT-coreclr

Milestone:8.0.0

Comment threadsrc/mono/sample/iOS/Makefile Outdated
Comment threadsrc/mono/sample/iOS-NativeAOT/Makefile Outdated
@kotlarmilos

kotlarmilos commented May 30, 2023

Copy link
Copy Markdown
MemberAuthor

This PR is ready for review. The performance results can be found in the dotnet-runtime-perf pipeline. The Mono performance runs have been expanded to include separate runs with and without symbols. Once this PR is merged, the following job names need to be updated in the dashboard.

Native AOT performance measurements:

  • SOD - iOS HelloWorld Native AOT .app Size symbols
  • SOD - iOS HelloWorld Native AOT .app Size nosymbols
  • SOD - iOS HelloWorld Native AOT Zip Size symbols
  • SOD - iOS HelloWorld Native AOT Zip Size nosymbols
  • SOD - Device Startup - iOS Native AOT HelloWorld symbols
  • SOD - Device Startup - iOS Native AOT HelloWorld nosymbols

Mono performance measurements:

  • SOD - iOS HelloWorld Mono .app Size llvm symbols
  • SOD - iOS HelloWorld Mono .app Size llvm nosymbols
  • SOD - iOS HelloWorld Mono .app Size nollvm symbols
  • SOD - iOS HelloWorld Mono .app Size nollvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size llvm symbols
  • SOD - iOS HelloWorld Mono Zip Size llvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm symbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm nosymbols
  • Device Startup - iOS Mono HelloWorld llvm symbols
  • Device Startup - iOS Mono HelloWorld llvm nosymbols
  • Device Startup - iOS Mono HelloWorld nollvm symbols
  • Device Startup - iOS Mono HelloWorld nollvm nosymbols

@LoopedBard3 I will keep you posted.

</PropertyGroup>

<Import Project="$(CoreClrProjectRoot)nativeaot\BuildIntegration\Microsoft.NETCore.Native.targets" />
<!-- Fix temporary regression, will be fixed on the main in a separate PR: https://github.com/dotnet/runtime/issues/80911 -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@ivanpovazanivanpovazan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM!
Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

LGTM! Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

Thanks! If we maintain consistency across all platforms and strip in the same way, it should be fine. If I recall correctly, we encountered an issue with global symbols stripping.

@kotlarmilos
kotlarmilos merged commit 534d1df into dotnet:mainJun 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jul 1, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kotlarmilos@ivanpovazan
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [nativeaot][tests] Add Native AOT iOS perf scenarios by kotlarmilos · Pull Request #85317 · dotnet/runtime · GitHub
Skip to content

[nativeaot][tests] Add Native AOT iOS perf scenarios - #85317

Merged
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios
Jun 1, 2023
Merged

[nativeaot][tests] Add Native AOT iOS perf scenarios#85317
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 25, 2023

Copy link
Copy Markdown
Member

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Preliminary perf measurements for the HelloiOS app using Native AOT.

SOD - iOS HelloWorld Native AOT Zip Size

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT Zip Size1727305.000 bytes1727305.000 bytes1727305.000 bytes

SOD - iOS HelloWorld Native AOT .app

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT .app8075485.000 bytes8075485.000 bytes8075485.000 bytes
pub/nativeaot/HelloiOS.app/HelloiOS8074496.000 bytes8074496.000 bytes8074496.000 bytes
pub/nativeaot/HelloiOS.app/Info.plist981.000 bytes981.000 bytes981.000 bytes
pub/nativeaot/HelloiOS.app/PkgInfo8.000 bytes8.000 bytes8.000 bytes

Device Startup - iOS HelloWorld Native AOT

MetricAverageMinMax
Generic Startup38.600 ms34.000 ms41.000 ms

@kotlarmiloskotlarmilos added this to the 8.0.0 milestone Apr 25, 2023
@kotlarmiloskotlarmilos self-assigned this Apr 25, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to 'os-ios': @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

Issue Details

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Author:kotlarmilos
Assignees:kotlarmilos
Labels:

os-ios, area-NativeAOT-coreclr

Milestone:8.0.0

Comment threadsrc/mono/sample/iOS/Makefile Outdated
Comment threadsrc/mono/sample/iOS-NativeAOT/Makefile Outdated
@kotlarmilos

kotlarmilos commented May 30, 2023

Copy link
Copy Markdown
MemberAuthor

This PR is ready for review. The performance results can be found in the dotnet-runtime-perf pipeline. The Mono performance runs have been expanded to include separate runs with and without symbols. Once this PR is merged, the following job names need to be updated in the dashboard.

Native AOT performance measurements:

  • SOD - iOS HelloWorld Native AOT .app Size symbols
  • SOD - iOS HelloWorld Native AOT .app Size nosymbols
  • SOD - iOS HelloWorld Native AOT Zip Size symbols
  • SOD - iOS HelloWorld Native AOT Zip Size nosymbols
  • SOD - Device Startup - iOS Native AOT HelloWorld symbols
  • SOD - Device Startup - iOS Native AOT HelloWorld nosymbols

Mono performance measurements:

  • SOD - iOS HelloWorld Mono .app Size llvm symbols
  • SOD - iOS HelloWorld Mono .app Size llvm nosymbols
  • SOD - iOS HelloWorld Mono .app Size nollvm symbols
  • SOD - iOS HelloWorld Mono .app Size nollvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size llvm symbols
  • SOD - iOS HelloWorld Mono Zip Size llvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm symbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm nosymbols
  • Device Startup - iOS Mono HelloWorld llvm symbols
  • Device Startup - iOS Mono HelloWorld llvm nosymbols
  • Device Startup - iOS Mono HelloWorld nollvm symbols
  • Device Startup - iOS Mono HelloWorld nollvm nosymbols

@LoopedBard3 I will keep you posted.

</PropertyGroup>

<Import Project="$(CoreClrProjectRoot)nativeaot\BuildIntegration\Microsoft.NETCore.Native.targets" />
<!-- Fix temporary regression, will be fixed on the main in a separate PR: https://github.com/dotnet/runtime/issues/80911 -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@ivanpovazanivanpovazan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM!
Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

LGTM! Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

Thanks! If we maintain consistency across all platforms and strip in the same way, it should be fine. If I recall correctly, we encountered an issue with global symbols stripping.

@kotlarmilos
kotlarmilos merged commit 534d1df into dotnet:mainJun 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jul 1, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kotlarmilos@ivanpovazan
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' [nativeaot][tests] Add Native AOT iOS perf scenarios by kotlarmilos · Pull Request #85317 · dotnet/runtime · GitHub
Skip to content

[nativeaot][tests] Add Native AOT iOS perf scenarios - #85317

Merged
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios
Jun 1, 2023
Merged

[nativeaot][tests] Add Native AOT iOS perf scenarios#85317
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 25, 2023

Copy link
Copy Markdown
Member

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Preliminary perf measurements for the HelloiOS app using Native AOT.

SOD - iOS HelloWorld Native AOT Zip Size

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT Zip Size1727305.000 bytes1727305.000 bytes1727305.000 bytes

SOD - iOS HelloWorld Native AOT .app

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT .app8075485.000 bytes8075485.000 bytes8075485.000 bytes
pub/nativeaot/HelloiOS.app/HelloiOS8074496.000 bytes8074496.000 bytes8074496.000 bytes
pub/nativeaot/HelloiOS.app/Info.plist981.000 bytes981.000 bytes981.000 bytes
pub/nativeaot/HelloiOS.app/PkgInfo8.000 bytes8.000 bytes8.000 bytes

Device Startup - iOS HelloWorld Native AOT

MetricAverageMinMax
Generic Startup38.600 ms34.000 ms41.000 ms

@kotlarmiloskotlarmilos added this to the 8.0.0 milestone Apr 25, 2023
@kotlarmiloskotlarmilos self-assigned this Apr 25, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to 'os-ios': @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

Issue Details

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Author:kotlarmilos
Assignees:kotlarmilos
Labels:

os-ios, area-NativeAOT-coreclr

Milestone:8.0.0

Comment threadsrc/mono/sample/iOS/Makefile Outdated
Comment threadsrc/mono/sample/iOS-NativeAOT/Makefile Outdated
@kotlarmilos

kotlarmilos commented May 30, 2023

Copy link
Copy Markdown
MemberAuthor

This PR is ready for review. The performance results can be found in the dotnet-runtime-perf pipeline. The Mono performance runs have been expanded to include separate runs with and without symbols. Once this PR is merged, the following job names need to be updated in the dashboard.

Native AOT performance measurements:

  • SOD - iOS HelloWorld Native AOT .app Size symbols
  • SOD - iOS HelloWorld Native AOT .app Size nosymbols
  • SOD - iOS HelloWorld Native AOT Zip Size symbols
  • SOD - iOS HelloWorld Native AOT Zip Size nosymbols
  • SOD - Device Startup - iOS Native AOT HelloWorld symbols
  • SOD - Device Startup - iOS Native AOT HelloWorld nosymbols

Mono performance measurements:

  • SOD - iOS HelloWorld Mono .app Size llvm symbols
  • SOD - iOS HelloWorld Mono .app Size llvm nosymbols
  • SOD - iOS HelloWorld Mono .app Size nollvm symbols
  • SOD - iOS HelloWorld Mono .app Size nollvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size llvm symbols
  • SOD - iOS HelloWorld Mono Zip Size llvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm symbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm nosymbols
  • Device Startup - iOS Mono HelloWorld llvm symbols
  • Device Startup - iOS Mono HelloWorld llvm nosymbols
  • Device Startup - iOS Mono HelloWorld nollvm symbols
  • Device Startup - iOS Mono HelloWorld nollvm nosymbols

@LoopedBard3 I will keep you posted.

</PropertyGroup>

<Import Project="$(CoreClrProjectRoot)nativeaot\BuildIntegration\Microsoft.NETCore.Native.targets" />
<!-- Fix temporary regression, will be fixed on the main in a separate PR: https://github.com/dotnet/runtime/issues/80911 -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@ivanpovazanivanpovazan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM!
Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

LGTM! Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

Thanks! If we maintain consistency across all platforms and strip in the same way, it should be fine. If I recall correctly, we encountered an issue with global symbols stripping.

@kotlarmilos
kotlarmilos merged commit 534d1df into dotnet:mainJun 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jul 1, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kotlarmilos@ivanpovazan
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [nativeaot][tests] Add Native AOT iOS perf scenarios by kotlarmilos · Pull Request #85317 · dotnet/runtime · GitHub
Skip to content

[nativeaot][tests] Add Native AOT iOS perf scenarios - #85317

Merged
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios
Jun 1, 2023
Merged

[nativeaot][tests] Add Native AOT iOS perf scenarios#85317
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 25, 2023

Copy link
Copy Markdown
Member

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Preliminary perf measurements for the HelloiOS app using Native AOT.

SOD - iOS HelloWorld Native AOT Zip Size

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT Zip Size1727305.000 bytes1727305.000 bytes1727305.000 bytes

SOD - iOS HelloWorld Native AOT .app

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT .app8075485.000 bytes8075485.000 bytes8075485.000 bytes
pub/nativeaot/HelloiOS.app/HelloiOS8074496.000 bytes8074496.000 bytes8074496.000 bytes
pub/nativeaot/HelloiOS.app/Info.plist981.000 bytes981.000 bytes981.000 bytes
pub/nativeaot/HelloiOS.app/PkgInfo8.000 bytes8.000 bytes8.000 bytes

Device Startup - iOS HelloWorld Native AOT

MetricAverageMinMax
Generic Startup38.600 ms34.000 ms41.000 ms

@kotlarmiloskotlarmilos added this to the 8.0.0 milestone Apr 25, 2023
@kotlarmiloskotlarmilos self-assigned this Apr 25, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to 'os-ios': @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

Issue Details

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Author:kotlarmilos
Assignees:kotlarmilos
Labels:

os-ios, area-NativeAOT-coreclr

Milestone:8.0.0

Comment threadsrc/mono/sample/iOS/Makefile Outdated
Comment threadsrc/mono/sample/iOS-NativeAOT/Makefile Outdated
@kotlarmilos

kotlarmilos commented May 30, 2023

Copy link
Copy Markdown
MemberAuthor

This PR is ready for review. The performance results can be found in the dotnet-runtime-perf pipeline. The Mono performance runs have been expanded to include separate runs with and without symbols. Once this PR is merged, the following job names need to be updated in the dashboard.

Native AOT performance measurements:

  • SOD - iOS HelloWorld Native AOT .app Size symbols
  • SOD - iOS HelloWorld Native AOT .app Size nosymbols
  • SOD - iOS HelloWorld Native AOT Zip Size symbols
  • SOD - iOS HelloWorld Native AOT Zip Size nosymbols
  • SOD - Device Startup - iOS Native AOT HelloWorld symbols
  • SOD - Device Startup - iOS Native AOT HelloWorld nosymbols

Mono performance measurements:

  • SOD - iOS HelloWorld Mono .app Size llvm symbols
  • SOD - iOS HelloWorld Mono .app Size llvm nosymbols
  • SOD - iOS HelloWorld Mono .app Size nollvm symbols
  • SOD - iOS HelloWorld Mono .app Size nollvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size llvm symbols
  • SOD - iOS HelloWorld Mono Zip Size llvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm symbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm nosymbols
  • Device Startup - iOS Mono HelloWorld llvm symbols
  • Device Startup - iOS Mono HelloWorld llvm nosymbols
  • Device Startup - iOS Mono HelloWorld nollvm symbols
  • Device Startup - iOS Mono HelloWorld nollvm nosymbols

@LoopedBard3 I will keep you posted.

</PropertyGroup>

<Import Project="$(CoreClrProjectRoot)nativeaot\BuildIntegration\Microsoft.NETCore.Native.targets" />
<!-- Fix temporary regression, will be fixed on the main in a separate PR: https://github.com/dotnet/runtime/issues/80911 -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@ivanpovazanivanpovazan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM!
Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

LGTM! Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

Thanks! If we maintain consistency across all platforms and strip in the same way, it should be fine. If I recall correctly, we encountered an issue with global symbols stripping.

@kotlarmilos
kotlarmilos merged commit 534d1df into dotnet:mainJun 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jul 1, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kotlarmilos@ivanpovazan
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [nativeaot][tests] Add Native AOT iOS perf scenarios by kotlarmilos · Pull Request #85317 · dotnet/runtime · GitHub
Skip to content

[nativeaot][tests] Add Native AOT iOS perf scenarios - #85317

Merged
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios
Jun 1, 2023
Merged

[nativeaot][tests] Add Native AOT iOS perf scenarios#85317
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 25, 2023

Copy link
Copy Markdown
Member

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Preliminary perf measurements for the HelloiOS app using Native AOT.

SOD - iOS HelloWorld Native AOT Zip Size

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT Zip Size1727305.000 bytes1727305.000 bytes1727305.000 bytes

SOD - iOS HelloWorld Native AOT .app

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT .app8075485.000 bytes8075485.000 bytes8075485.000 bytes
pub/nativeaot/HelloiOS.app/HelloiOS8074496.000 bytes8074496.000 bytes8074496.000 bytes
pub/nativeaot/HelloiOS.app/Info.plist981.000 bytes981.000 bytes981.000 bytes
pub/nativeaot/HelloiOS.app/PkgInfo8.000 bytes8.000 bytes8.000 bytes

Device Startup - iOS HelloWorld Native AOT

MetricAverageMinMax
Generic Startup38.600 ms34.000 ms41.000 ms

@kotlarmiloskotlarmilos added this to the 8.0.0 milestone Apr 25, 2023
@kotlarmiloskotlarmilos self-assigned this Apr 25, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to 'os-ios': @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

Issue Details

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Author:kotlarmilos
Assignees:kotlarmilos
Labels:

os-ios, area-NativeAOT-coreclr

Milestone:8.0.0

Comment threadsrc/mono/sample/iOS/Makefile Outdated
Comment threadsrc/mono/sample/iOS-NativeAOT/Makefile Outdated
@kotlarmilos

kotlarmilos commented May 30, 2023

Copy link
Copy Markdown
MemberAuthor

This PR is ready for review. The performance results can be found in the dotnet-runtime-perf pipeline. The Mono performance runs have been expanded to include separate runs with and without symbols. Once this PR is merged, the following job names need to be updated in the dashboard.

Native AOT performance measurements:

  • SOD - iOS HelloWorld Native AOT .app Size symbols
  • SOD - iOS HelloWorld Native AOT .app Size nosymbols
  • SOD - iOS HelloWorld Native AOT Zip Size symbols
  • SOD - iOS HelloWorld Native AOT Zip Size nosymbols
  • SOD - Device Startup - iOS Native AOT HelloWorld symbols
  • SOD - Device Startup - iOS Native AOT HelloWorld nosymbols

Mono performance measurements:

  • SOD - iOS HelloWorld Mono .app Size llvm symbols
  • SOD - iOS HelloWorld Mono .app Size llvm nosymbols
  • SOD - iOS HelloWorld Mono .app Size nollvm symbols
  • SOD - iOS HelloWorld Mono .app Size nollvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size llvm symbols
  • SOD - iOS HelloWorld Mono Zip Size llvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm symbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm nosymbols
  • Device Startup - iOS Mono HelloWorld llvm symbols
  • Device Startup - iOS Mono HelloWorld llvm nosymbols
  • Device Startup - iOS Mono HelloWorld nollvm symbols
  • Device Startup - iOS Mono HelloWorld nollvm nosymbols

@LoopedBard3 I will keep you posted.

</PropertyGroup>

<Import Project="$(CoreClrProjectRoot)nativeaot\BuildIntegration\Microsoft.NETCore.Native.targets" />
<!-- Fix temporary regression, will be fixed on the main in a separate PR: https://github.com/dotnet/runtime/issues/80911 -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@ivanpovazanivanpovazan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM!
Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

LGTM! Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

Thanks! If we maintain consistency across all platforms and strip in the same way, it should be fine. If I recall correctly, we encountered an issue with global symbols stripping.

@kotlarmilos
kotlarmilos merged commit 534d1df into dotnet:mainJun 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jul 1, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kotlarmilos@ivanpovazan
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); [nativeaot][tests] Add Native AOT iOS perf scenarios by kotlarmilos · Pull Request #85317 · dotnet/runtime · GitHub
Skip to content

[nativeaot][tests] Add Native AOT iOS perf scenarios - #85317

Merged
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios
Jun 1, 2023
Merged

[nativeaot][tests] Add Native AOT iOS perf scenarios#85317
kotlarmilos merged 66 commits into
dotnet:mainfrom
kotlarmilos:feature/nativeaot-ios-perf-scenarios

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 25, 2023

Copy link
Copy Markdown
Member

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Preliminary perf measurements for the HelloiOS app using Native AOT.

SOD - iOS HelloWorld Native AOT Zip Size

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT Zip Size1727305.000 bytes1727305.000 bytes1727305.000 bytes

SOD - iOS HelloWorld Native AOT .app

MetricAverageMinMax
SOD - iOS HelloWorld Native AOT .app8075485.000 bytes8075485.000 bytes8075485.000 bytes
pub/nativeaot/HelloiOS.app/HelloiOS8074496.000 bytes8074496.000 bytes8074496.000 bytes
pub/nativeaot/HelloiOS.app/Info.plist981.000 bytes981.000 bytes981.000 bytes
pub/nativeaot/HelloiOS.app/PkgInfo8.000 bytes8.000 bytes8.000 bytes

Device Startup - iOS HelloWorld Native AOT

MetricAverageMinMax
Generic Startup38.600 ms34.000 ms41.000 ms

@kotlarmiloskotlarmilos added this to the 8.0.0 milestone Apr 25, 2023
@kotlarmiloskotlarmilos self-assigned this Apr 25, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to 'os-ios': @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

Issue Details

This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.

Additionally, it temporarily fixes regression to allow testing. The regression will be fixed on the main in a separate PR tracked in #80911.

Author:kotlarmilos
Assignees:kotlarmilos
Labels:

os-ios, area-NativeAOT-coreclr

Milestone:8.0.0

Comment threadsrc/mono/sample/iOS/Makefile Outdated
Comment threadsrc/mono/sample/iOS-NativeAOT/Makefile Outdated
@kotlarmilos

kotlarmilos commented May 30, 2023

Copy link
Copy Markdown
MemberAuthor

This PR is ready for review. The performance results can be found in the dotnet-runtime-perf pipeline. The Mono performance runs have been expanded to include separate runs with and without symbols. Once this PR is merged, the following job names need to be updated in the dashboard.

Native AOT performance measurements:

  • SOD - iOS HelloWorld Native AOT .app Size symbols
  • SOD - iOS HelloWorld Native AOT .app Size nosymbols
  • SOD - iOS HelloWorld Native AOT Zip Size symbols
  • SOD - iOS HelloWorld Native AOT Zip Size nosymbols
  • SOD - Device Startup - iOS Native AOT HelloWorld symbols
  • SOD - Device Startup - iOS Native AOT HelloWorld nosymbols

Mono performance measurements:

  • SOD - iOS HelloWorld Mono .app Size llvm symbols
  • SOD - iOS HelloWorld Mono .app Size llvm nosymbols
  • SOD - iOS HelloWorld Mono .app Size nollvm symbols
  • SOD - iOS HelloWorld Mono .app Size nollvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size llvm symbols
  • SOD - iOS HelloWorld Mono Zip Size llvm nosymbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm symbols
  • SOD - iOS HelloWorld Mono Zip Size nollvm nosymbols
  • Device Startup - iOS Mono HelloWorld llvm symbols
  • Device Startup - iOS Mono HelloWorld llvm nosymbols
  • Device Startup - iOS Mono HelloWorld nollvm symbols
  • Device Startup - iOS Mono HelloWorld nollvm nosymbols

@LoopedBard3 I will keep you posted.

</PropertyGroup>

<Import Project="$(CoreClrProjectRoot)nativeaot\BuildIntegration\Microsoft.NETCore.Native.targets" />
<!-- Fix temporary regression, will be fixed on the main in a separate PR: https://github.com/dotnet/runtime/issues/80911 -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@ivanpovazanivanpovazan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM!
Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

LGTM! Just a small note on "symbol-stripped" scenarios, that in those cases we are stripping local symbols only via strip -x

Thanks! If we maintain consistency across all platforms and strip in the same way, it should be fine. If I recall correctly, we encountered an issue with global symbols stripping.

@kotlarmilos
kotlarmilos merged commit 534d1df into dotnet:mainJun 1, 2023
@ghostghost locked as resolved and limited conversation to collaborators Jul 1, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kotlarmilos@ivanpovazan