Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM - #105009

Merged
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast
Jul 17, 2024
Merged

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM#105009
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast

Conversation

@tannergooding

Copy link
Copy Markdown
Member

Only gave a single example below, but did run a sampling of benchmarks and the results look to be correct now.

Notably the docs for running WASM benchmarks is very out of date right now: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md#dotnet-runtime-testing-for-wasm, I ended up getting it working but having up to date guidance would be great.
-- Most notably test-main.js was moved, tests won't run since it can't find the 9.0.0-dev packages, and test-main.js was updated to require --module

This should resolvedotnet/perf-autofiling-issues#38466

Interpreter

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.964 us0.0753 us0.0705 us4.983 us4.879 us5.061 us?
Round3079115.186 us1.6031 us1.4996 us115.301 us113.414 us117.719 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round12824.16 us0.411 us0.422 us23.99 us23.77 us25.20 us?
Round3079560.19 us6.621 us6.193 us556.65 us555.04 us570.42 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.631 us0.0281 us0.0263 us4.622 us4.602 us4.688 us?
Round3079106.797 us0.8264 us0.7730 us106.628 us105.733 us107.948 us?

AOT

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.862 us0.0570 us0.0476 us6.852 us6.793 us6.969 us?
Round3079158.344 us7.1171 us8.1960 us162.109 us147.830 us170.130 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.536 us0.0304 us0.0284 us6.528 us6.494 us6.586 us?
Round3079166.275 us1.5275 us1.3541 us166.335 us163.915 us168.996 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.151 us0.0253 us0.0224 us6.157 us6.114 us6.182 us?
Round3079149.354 us2.2647 us2.2242 us149.108 us147.509 us156.868 us?

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @BrzVlad, @kotlarmilos
See info in area-owners.md if you want to be subscribed.

@kg

kg commented Jul 17, 2024

Copy link
Copy Markdown
Contributor

The MOV_VT numbers are very promising! Thanks for chasing this down.

@tannergooding

Copy link
Copy Markdown
MemberAuthor

This should be ready for review, CI failures are flaky tests hitting OOM/timeouts and I'm rerunning them

@lewing

Copy link
Copy Markdown
Member

@tannergooding thanks for getting this done so quickly, the initial data from our benchmarks also indicate there now a net improvement in here. Excellent work.

@lewing

Copy link
Copy Markdown
Member

@mkhamoyan can you please update the documentation in dotnet/performance

@tannergooding

Copy link
Copy Markdown
MemberAuthor

Glad I was finally able to figure it out, hopefully it should make future improvements easier as well 😄

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Aug 18, 2024
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.

[Perf] Linux/x64: 646 Regressions on 7/12/2024 7:02:19 PM

4 participants

@tannergooding@kg@lewing@BrzVlad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM - #105009

Merged
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast
Jul 17, 2024
Merged

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM#105009
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast

Conversation

@tannergooding

Copy link
Copy Markdown
Member

Only gave a single example below, but did run a sampling of benchmarks and the results look to be correct now.

Notably the docs for running WASM benchmarks is very out of date right now: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md#dotnet-runtime-testing-for-wasm, I ended up getting it working but having up to date guidance would be great.
-- Most notably test-main.js was moved, tests won't run since it can't find the 9.0.0-dev packages, and test-main.js was updated to require --module

This should resolvedotnet/perf-autofiling-issues#38466

Interpreter

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.964 us0.0753 us0.0705 us4.983 us4.879 us5.061 us?
Round3079115.186 us1.6031 us1.4996 us115.301 us113.414 us117.719 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round12824.16 us0.411 us0.422 us23.99 us23.77 us25.20 us?
Round3079560.19 us6.621 us6.193 us556.65 us555.04 us570.42 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.631 us0.0281 us0.0263 us4.622 us4.602 us4.688 us?
Round3079106.797 us0.8264 us0.7730 us106.628 us105.733 us107.948 us?

AOT

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.862 us0.0570 us0.0476 us6.852 us6.793 us6.969 us?
Round3079158.344 us7.1171 us8.1960 us162.109 us147.830 us170.130 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.536 us0.0304 us0.0284 us6.528 us6.494 us6.586 us?
Round3079166.275 us1.5275 us1.3541 us166.335 us163.915 us168.996 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.151 us0.0253 us0.0224 us6.157 us6.114 us6.182 us?
Round3079149.354 us2.2647 us2.2242 us149.108 us147.509 us156.868 us?

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @BrzVlad, @kotlarmilos
See info in area-owners.md if you want to be subscribed.

@kg

kg commented Jul 17, 2024

Copy link
Copy Markdown
Contributor

The MOV_VT numbers are very promising! Thanks for chasing this down.

@tannergooding

Copy link
Copy Markdown
MemberAuthor

This should be ready for review, CI failures are flaky tests hitting OOM/timeouts and I'm rerunning them

@lewing

Copy link
Copy Markdown
Member

@tannergooding thanks for getting this done so quickly, the initial data from our benchmarks also indicate there now a net improvement in here. Excellent work.

@lewing

Copy link
Copy Markdown
Member

@mkhamoyan can you please update the documentation in dotnet/performance

@tannergooding

Copy link
Copy Markdown
MemberAuthor

Glad I was finally able to figure it out, hopefully it should make future improvements easier as well 😄

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Aug 18, 2024
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.

[Perf] Linux/x64: 646 Regressions on 7/12/2024 7:02:19 PM

4 participants

@tannergooding@kg@lewing@BrzVlad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM - #105009

Merged
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast
Jul 17, 2024
Merged

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM#105009
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast

Conversation

@tannergooding

Copy link
Copy Markdown
Member

Only gave a single example below, but did run a sampling of benchmarks and the results look to be correct now.

Notably the docs for running WASM benchmarks is very out of date right now: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md#dotnet-runtime-testing-for-wasm, I ended up getting it working but having up to date guidance would be great.
-- Most notably test-main.js was moved, tests won't run since it can't find the 9.0.0-dev packages, and test-main.js was updated to require --module

This should resolvedotnet/perf-autofiling-issues#38466

Interpreter

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.964 us0.0753 us0.0705 us4.983 us4.879 us5.061 us?
Round3079115.186 us1.6031 us1.4996 us115.301 us113.414 us117.719 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round12824.16 us0.411 us0.422 us23.99 us23.77 us25.20 us?
Round3079560.19 us6.621 us6.193 us556.65 us555.04 us570.42 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.631 us0.0281 us0.0263 us4.622 us4.602 us4.688 us?
Round3079106.797 us0.8264 us0.7730 us106.628 us105.733 us107.948 us?

AOT

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.862 us0.0570 us0.0476 us6.852 us6.793 us6.969 us?
Round3079158.344 us7.1171 us8.1960 us162.109 us147.830 us170.130 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.536 us0.0304 us0.0284 us6.528 us6.494 us6.586 us?
Round3079166.275 us1.5275 us1.3541 us166.335 us163.915 us168.996 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.151 us0.0253 us0.0224 us6.157 us6.114 us6.182 us?
Round3079149.354 us2.2647 us2.2242 us149.108 us147.509 us156.868 us?

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @BrzVlad, @kotlarmilos
See info in area-owners.md if you want to be subscribed.

@kg

kg commented Jul 17, 2024

Copy link
Copy Markdown
Contributor

The MOV_VT numbers are very promising! Thanks for chasing this down.

@tannergooding

Copy link
Copy Markdown
MemberAuthor

This should be ready for review, CI failures are flaky tests hitting OOM/timeouts and I'm rerunning them

@lewing

Copy link
Copy Markdown
Member

@tannergooding thanks for getting this done so quickly, the initial data from our benchmarks also indicate there now a net improvement in here. Excellent work.

@lewing

Copy link
Copy Markdown
Member

@mkhamoyan can you please update the documentation in dotnet/performance

@tannergooding

Copy link
Copy Markdown
MemberAuthor

Glad I was finally able to figure it out, hopefully it should make future improvements easier as well 😄

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Aug 18, 2024
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.

[Perf] Linux/x64: 646 Regressions on 7/12/2024 7:02:19 PM

4 participants

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

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM - #105009

Merged
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast
Jul 17, 2024
Merged

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM#105009
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast

Conversation

@tannergooding

Copy link
Copy Markdown
Member

Only gave a single example below, but did run a sampling of benchmarks and the results look to be correct now.

Notably the docs for running WASM benchmarks is very out of date right now: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md#dotnet-runtime-testing-for-wasm, I ended up getting it working but having up to date guidance would be great.
-- Most notably test-main.js was moved, tests won't run since it can't find the 9.0.0-dev packages, and test-main.js was updated to require --module

This should resolvedotnet/perf-autofiling-issues#38466

Interpreter

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.964 us0.0753 us0.0705 us4.983 us4.879 us5.061 us?
Round3079115.186 us1.6031 us1.4996 us115.301 us113.414 us117.719 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round12824.16 us0.411 us0.422 us23.99 us23.77 us25.20 us?
Round3079560.19 us6.621 us6.193 us556.65 us555.04 us570.42 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.631 us0.0281 us0.0263 us4.622 us4.602 us4.688 us?
Round3079106.797 us0.8264 us0.7730 us106.628 us105.733 us107.948 us?

AOT

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.862 us0.0570 us0.0476 us6.852 us6.793 us6.969 us?
Round3079158.344 us7.1171 us8.1960 us162.109 us147.830 us170.130 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.536 us0.0304 us0.0284 us6.528 us6.494 us6.586 us?
Round3079166.275 us1.5275 us1.3541 us166.335 us163.915 us168.996 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.151 us0.0253 us0.0224 us6.157 us6.114 us6.182 us?
Round3079149.354 us2.2647 us2.2242 us149.108 us147.509 us156.868 us?

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @BrzVlad, @kotlarmilos
See info in area-owners.md if you want to be subscribed.

@kg

kg commented Jul 17, 2024

Copy link
Copy Markdown
Contributor

The MOV_VT numbers are very promising! Thanks for chasing this down.

@tannergooding

Copy link
Copy Markdown
MemberAuthor

This should be ready for review, CI failures are flaky tests hitting OOM/timeouts and I'm rerunning them

@lewing

Copy link
Copy Markdown
Member

@tannergooding thanks for getting this done so quickly, the initial data from our benchmarks also indicate there now a net improvement in here. Excellent work.

@lewing

Copy link
Copy Markdown
Member

@mkhamoyan can you please update the documentation in dotnet/performance

@tannergooding

Copy link
Copy Markdown
MemberAuthor

Glad I was finally able to figure it out, hopefully it should make future improvements easier as well 😄

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Aug 18, 2024
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.

[Perf] Linux/x64: 646 Regressions on 7/12/2024 7:02:19 PM

4 participants

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

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM - #105009

Merged
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast
Jul 17, 2024
Merged

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM#105009
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast

Conversation

@tannergooding

Copy link
Copy Markdown
Member

Only gave a single example below, but did run a sampling of benchmarks and the results look to be correct now.

Notably the docs for running WASM benchmarks is very out of date right now: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md#dotnet-runtime-testing-for-wasm, I ended up getting it working but having up to date guidance would be great.
-- Most notably test-main.js was moved, tests won't run since it can't find the 9.0.0-dev packages, and test-main.js was updated to require --module

This should resolvedotnet/perf-autofiling-issues#38466

Interpreter

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.964 us0.0753 us0.0705 us4.983 us4.879 us5.061 us?
Round3079115.186 us1.6031 us1.4996 us115.301 us113.414 us117.719 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round12824.16 us0.411 us0.422 us23.99 us23.77 us25.20 us?
Round3079560.19 us6.621 us6.193 us556.65 us555.04 us570.42 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.631 us0.0281 us0.0263 us4.622 us4.602 us4.688 us?
Round3079106.797 us0.8264 us0.7730 us106.628 us105.733 us107.948 us?

AOT

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.862 us0.0570 us0.0476 us6.852 us6.793 us6.969 us?
Round3079158.344 us7.1171 us8.1960 us162.109 us147.830 us170.130 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.536 us0.0304 us0.0284 us6.528 us6.494 us6.586 us?
Round3079166.275 us1.5275 us1.3541 us166.335 us163.915 us168.996 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.151 us0.0253 us0.0224 us6.157 us6.114 us6.182 us?
Round3079149.354 us2.2647 us2.2242 us149.108 us147.509 us156.868 us?

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @BrzVlad, @kotlarmilos
See info in area-owners.md if you want to be subscribed.

@kg

kg commented Jul 17, 2024

Copy link
Copy Markdown
Contributor

The MOV_VT numbers are very promising! Thanks for chasing this down.

@tannergooding

Copy link
Copy Markdown
MemberAuthor

This should be ready for review, CI failures are flaky tests hitting OOM/timeouts and I'm rerunning them

@lewing

Copy link
Copy Markdown
Member

@tannergooding thanks for getting this done so quickly, the initial data from our benchmarks also indicate there now a net improvement in here. Excellent work.

@lewing

Copy link
Copy Markdown
Member

@mkhamoyan can you please update the documentation in dotnet/performance

@tannergooding

Copy link
Copy Markdown
MemberAuthor

Glad I was finally able to figure it out, hopefully it should make future improvements easier as well 😄

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Aug 18, 2024
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.

[Perf] Linux/x64: 646 Regressions on 7/12/2024 7:02:19 PM

4 participants

@tannergooding@kg@lewing@BrzVlad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM - #105009

Merged
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast
Jul 17, 2024
Merged

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM#105009
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast

Conversation

@tannergooding

Copy link
Copy Markdown
Member

Only gave a single example below, but did run a sampling of benchmarks and the results look to be correct now.

Notably the docs for running WASM benchmarks is very out of date right now: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md#dotnet-runtime-testing-for-wasm, I ended up getting it working but having up to date guidance would be great.
-- Most notably test-main.js was moved, tests won't run since it can't find the 9.0.0-dev packages, and test-main.js was updated to require --module

This should resolvedotnet/perf-autofiling-issues#38466

Interpreter

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.964 us0.0753 us0.0705 us4.983 us4.879 us5.061 us?
Round3079115.186 us1.6031 us1.4996 us115.301 us113.414 us117.719 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round12824.16 us0.411 us0.422 us23.99 us23.77 us25.20 us?
Round3079560.19 us6.621 us6.193 us556.65 us555.04 us570.42 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.631 us0.0281 us0.0263 us4.622 us4.602 us4.688 us?
Round3079106.797 us0.8264 us0.7730 us106.628 us105.733 us107.948 us?

AOT

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.862 us0.0570 us0.0476 us6.852 us6.793 us6.969 us?
Round3079158.344 us7.1171 us8.1960 us162.109 us147.830 us170.130 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.536 us0.0304 us0.0284 us6.528 us6.494 us6.586 us?
Round3079166.275 us1.5275 us1.3541 us166.335 us163.915 us168.996 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.151 us0.0253 us0.0224 us6.157 us6.114 us6.182 us?
Round3079149.354 us2.2647 us2.2242 us149.108 us147.509 us156.868 us?

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @BrzVlad, @kotlarmilos
See info in area-owners.md if you want to be subscribed.

@kg

kg commented Jul 17, 2024

Copy link
Copy Markdown
Contributor

The MOV_VT numbers are very promising! Thanks for chasing this down.

@tannergooding

Copy link
Copy Markdown
MemberAuthor

This should be ready for review, CI failures are flaky tests hitting OOM/timeouts and I'm rerunning them

@lewing

Copy link
Copy Markdown
Member

@tannergooding thanks for getting this done so quickly, the initial data from our benchmarks also indicate there now a net improvement in here. Excellent work.

@lewing

Copy link
Copy Markdown
Member

@mkhamoyan can you please update the documentation in dotnet/performance

@tannergooding

Copy link
Copy Markdown
MemberAuthor

Glad I was finally able to figure it out, hopefully it should make future improvements easier as well 😄

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Aug 18, 2024
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.

[Perf] Linux/x64: 646 Regressions on 7/12/2024 7:02:19 PM

4 participants

@tannergooding@kg@lewing@BrzVlad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM - #105009

Merged
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast
Jul 17, 2024
Merged

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM#105009
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast

Conversation

@tannergooding

Copy link
Copy Markdown
Member

Only gave a single example below, but did run a sampling of benchmarks and the results look to be correct now.

Notably the docs for running WASM benchmarks is very out of date right now: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md#dotnet-runtime-testing-for-wasm, I ended up getting it working but having up to date guidance would be great.
-- Most notably test-main.js was moved, tests won't run since it can't find the 9.0.0-dev packages, and test-main.js was updated to require --module

This should resolvedotnet/perf-autofiling-issues#38466

Interpreter

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.964 us0.0753 us0.0705 us4.983 us4.879 us5.061 us?
Round3079115.186 us1.6031 us1.4996 us115.301 us113.414 us117.719 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round12824.16 us0.411 us0.422 us23.99 us23.77 us25.20 us?
Round3079560.19 us6.621 us6.193 us556.65 us555.04 us570.42 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.631 us0.0281 us0.0263 us4.622 us4.602 us4.688 us?
Round3079106.797 us0.8264 us0.7730 us106.628 us105.733 us107.948 us?

AOT

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.862 us0.0570 us0.0476 us6.852 us6.793 us6.969 us?
Round3079158.344 us7.1171 us8.1960 us162.109 us147.830 us170.130 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.536 us0.0304 us0.0284 us6.528 us6.494 us6.586 us?
Round3079166.275 us1.5275 us1.3541 us166.335 us163.915 us168.996 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.151 us0.0253 us0.0224 us6.157 us6.114 us6.182 us?
Round3079149.354 us2.2647 us2.2242 us149.108 us147.509 us156.868 us?

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @BrzVlad, @kotlarmilos
See info in area-owners.md if you want to be subscribed.

@kg

kg commented Jul 17, 2024

Copy link
Copy Markdown
Contributor

The MOV_VT numbers are very promising! Thanks for chasing this down.

@tannergooding

Copy link
Copy Markdown
MemberAuthor

This should be ready for review, CI failures are flaky tests hitting OOM/timeouts and I'm rerunning them

@lewing

Copy link
Copy Markdown
Member

@tannergooding thanks for getting this done so quickly, the initial data from our benchmarks also indicate there now a net improvement in here. Excellent work.

@lewing

Copy link
Copy Markdown
Member

@mkhamoyan can you please update the documentation in dotnet/performance

@tannergooding

Copy link
Copy Markdown
MemberAuthor

Glad I was finally able to figure it out, hopefully it should make future improvements easier as well 😄

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Aug 18, 2024
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.

[Perf] Linux/x64: 646 Regressions on 7/12/2024 7:02:19 PM

4 participants

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

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM - #105009

Merged
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast
Jul 17, 2024
Merged

Ensure that the handling for the V128_BITCAST APIs is correctly performant on Mono WASM#105009
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:mono-v128-bitcast

Conversation

@tannergooding

Copy link
Copy Markdown
Member

Only gave a single example below, but did run a sampling of benchmarks and the results look to be correct now.

Notably the docs for running WASM benchmarks is very out of date right now: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md#dotnet-runtime-testing-for-wasm, I ended up getting it working but having up to date guidance would be great.
-- Most notably test-main.js was moved, tests won't run since it can't find the 9.0.0-dev packages, and test-main.js was updated to require --module

This should resolvedotnet/perf-autofiling-issues#38466

Interpreter

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.964 us0.0753 us0.0705 us4.983 us4.879 us5.061 us?
Round3079115.186 us1.6031 us1.4996 us115.301 us113.414 us117.719 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round12824.16 us0.411 us0.422 us23.99 us23.77 us25.20 us?
Round3079560.19 us6.621 us6.193 us556.65 us555.04 us570.42 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1284.631 us0.0281 us0.0263 us4.622 us4.602 us4.688 us?
Round3079106.797 us0.8264 us0.7730 us106.628 us105.733 us107.948 us?

AOT

No Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.862 us0.0570 us0.0476 us6.852 us6.793 us6.969 us?
Round3079158.344 us7.1171 us8.1960 us162.109 us147.830 us170.130 us?

V128_BITCAST Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.536 us0.0304 us0.0284 us6.528 us6.494 us6.586 us?
Round3079166.275 us1.5275 us1.3541 us166.335 us163.915 us168.996 us?

MOV_VT Handling

MethodBufferLengthMeanErrorStdDevMedianMinMaxAllocated
Round1286.151 us0.0253 us0.0224 us6.157 us6.114 us6.182 us?
Round3079149.354 us2.2647 us2.2242 us149.108 us147.509 us156.868 us?

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @BrzVlad, @kotlarmilos
See info in area-owners.md if you want to be subscribed.

@kg

kg commented Jul 17, 2024

Copy link
Copy Markdown
Contributor

The MOV_VT numbers are very promising! Thanks for chasing this down.

@tannergooding

Copy link
Copy Markdown
MemberAuthor

This should be ready for review, CI failures are flaky tests hitting OOM/timeouts and I'm rerunning them

@lewing

Copy link
Copy Markdown
Member

@tannergooding thanks for getting this done so quickly, the initial data from our benchmarks also indicate there now a net improvement in here. Excellent work.

@lewing

Copy link
Copy Markdown
Member

@mkhamoyan can you please update the documentation in dotnet/performance

@tannergooding

Copy link
Copy Markdown
MemberAuthor

Glad I was finally able to figure it out, hopefully it should make future improvements easier as well 😄

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Aug 18, 2024
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.

[Perf] Linux/x64: 646 Regressions on 7/12/2024 7:02:19 PM

4 participants

@tannergooding@kg@lewing@BrzVlad