1import{_ as i,c as a,b as n,o as l}from"./app-B8MQJI6s.js";const t="/assets/cacheline_1-CMAaeKyY.png",e="/assets/cacheline_2-Pb-dlcJ5.png",p={};function h(k,s){return l(),a("div",null,s[0]||(s[0]=[n(`<h2 id="_6-13-ç¼åä¼ªå ±äº«" tabindex="-1"><a class="header-anchor" href="#_6-13-ç¼åä¼ªå ±äº«"><span>6.13 ç¼åä¼ªå ±äº«</span></a></h2><p>ç°ä»£è®¡ç®æºï¼CPUçè¿è¡é度ä¸ä»å åå è½½æ°æ®é度æçè¾å¤§é¸¿æ²ï¼æ¯å¦CPUä»å¯åå¨å è½½æ°æ®éè¦1çº³ç§æ¶é´ï¼èä»å åä¸éè¦100纳ç§ãå æ¤CPU使ç¨ç¼åææ¯ï¼é¢å å è½½å¯è½è®¿é®çæ°æ®å°CPUçç¼åé以æé«æ§è½ãè¿äºæ°æ®å¯è½æ¯</p><ul><li>ä¸ä¸æ¬¡è®¿é®çæ°æ®ï¼æ¨æµä¸ä¸æ¬¡å¯è½ä¼æ¥ç访é®ï¼ä¿çå¨CPUç¼åé</li><li>è¿ç»åå¨çæ°æ®ï¼å¦æ°ç»ï¼æè 对象çåä¸ªåæ®µä¸æ¬¡æ§å è½½å°ç¼å</li></ul><p>CPUæ¯éè¿ç¼åè¡<code>Cache Line</code>ä½ä¸ºæå°æä½åä½ï¼ç¼åè¡é常64åèæè 128åè大å°ã对äºå¦ä¸ç±»ï¼åécountåindexæå¯è½åæ¶è¢«å è½½å°ç¼åè¡</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> static</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> DataWithoutPadding</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span> 2<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> volatile</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> long</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> count</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 3<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> volatile</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> long</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> index</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 4<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>æè DataWithoutPadding[]ä¸çè¿ç»åå¨ç2个å ç´ ï¼ç±»ä¼¼å¦ä¸</p><p><img src="`+t+'" alt=""></p><p>å¨å¤CPUæ¶æä¸ï¼å¤ä¸ªCPUé½ç¼åäºDataWithoutPadding[0]ï¼å½ä¸ä¸ªCPUä¿®æ¹DataWithoutPadding[0].countæ¶åï¼å ¶ä»CPUçç¼åDataWithoutPadding[0].countå°è¢«éç¥ä¸ºæ æï¼å¦æéè¦æä½countï¼åéè¦åä»ä¸»å åä¸å è½½ææ°å¼ï¼ç¸æ¯äºç´æ¥ä»CPUç¼ååå¼ï¼æ§è½éä½äº1-2åæ°é级</p><p>å³ä½¿å ¶ä»CPU没ææä½countï¼æä½çæ¯ç¼åè¡ä¸çindexï¼ä½å 为CPUæ¯ä»¥Cache Line为æå°æä½åä½ï¼å®é ä¸å ¶ä»CPUç¼åä¸çindexä»ç¶è¢«éç¥æ æï¼è¿æ¯éè¦ä»ä¸»åä¸å è½½</p><p>å ³é®åvolatileä¿è¯äºå ¶å¼çå¤CPUçå¯è§æ§</p><p>ä¼ªå ±äº«é®é¢æ¯å 为ç¼åè¡çæä¸ªç¼åæ æï¼å¦count)ï¼å¯¼è´è¿ä¸ªç¼åè¡çå ¶ä»ç¼åå¼ï¼index)å¨å ¶ä»CPUä¸å徿 æ</p><p>
4è§£å³è¿ä¸ªä¼ªå ±äº«é®é¢é常使ç¨å¡«å ææ¯ï¼ä¿è¯å½å64åèçç¼åè¡åªæcountåéæè åªæindexåéãå¦ä¸å¾</p><p><img src="'+e+`" alt=""></p><p>è¿æ ·ï¼å½CPU0çindexä¿®æ¹çæ¶åï¼CPU1çç¼åè¡å 为没æindexåéï¼åªæcountåéï¼å¯ä»¥ä½¿å¾countåéå¨ç¼åä¸è¢«CPU1使ç¨ãèä¸å¿ ä»ä¸»å åå è½½ã</p><p>æ©æå¡«å æ¹æ³æ¯å¨åä¸ä¸ªç±»éï¼ç³ææ æä¹çå¤ä¸ªåéï¼æ¯å¦å¯¹äºcountï¼å¯ä»¥ååå¡«å </p><div class="language-c++ line-numbers-mode" data-ext="c++" data-title="c++"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span>/*</span></span> 5<span class="line"><span>https://developer.aliyun.com/article/1727112#1</span></span> 6<span class="line"><span>*/</span></span> 7<span class="line"><span>public class ManualPaddingLong {</span></span> 8<span class="line"><span> /**</span></span> 9<span class="line"><span> * åå¡«å ï¼7个longç±»ååéï¼å ±56åèï¼é¿å ç®æ åéä¸å¯¹è±¡å¤´ãååºåéå ±äº«ç¼åè¡</span></span> 10<span class="line"><span> */</span></span> 11<span class="line"><span> private volatile long p1, p2, p3, p4, p5, p6, p7;</span></span> 12<span class="line"><span> /**</span></span> 13<span class="line"><span> * ç®æ åéï¼è¢«å¤çº¿ç¨é¢ç¹ä¿®æ¹ççç¹åé</span></span> 14<span class="line"><span> */</span></span> 15<span class="line"><span> public volatile long count;</span></span> 16<span class="line"><span></span></span> 17<span class="line"><span> /**</span></span> 18<span class="line"><span> * åå¡«å ï¼7个longç±»ååéï¼å ±56åèï¼é¿å ç®æ åéä¸ååºåéå ±äº«ç¼åè¡ï¼åæ¶åºå¯¹CPUç¸é»ç¼åè¡é¢å</span></span> 19<span class="line"><span> */</span></span> 20<span class="line"><span> private volatile long q1, q2, q3, q4, q5, q6, q7;</span></span> 21<span class="line"><span></span></span> 22<span class="line"><span> /**</span></span> 23<span class="line"><span>
23 * 访é®å¡«å åæ®µï¼é¿å JITç¼è¯å¨å°å ¶ä¼åæ¶é¤</span></span> 24<span class="line"><span> * @return å¡«å åæ®µçæ±åç»æï¼æ å®é ä¸å¡æä¹</span></span> 25<span class="line"><span> */</span></span> 26<span class="line"><span> public long avoidJitOptimize() {</span></span> 27<span class="line"><span> return p1 + p2 + p3 + p4 + p5 + p6 + p7 + q1 + q2 + q3 + q4 + q5 + q6 + q7;</span></span> 28<span class="line"><span> }</span></span> 29<span class="line"><span>}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Java8åï¼å¯ä»¥ä½¿ç¨@Contendedï¼Javaå°å¨è¿è¡æ¶åèªå¨å®æå¡«å ï¼@Contendedå¯ä»¥åºç¨å¨å段æè æ´ä¸ªç±»ä¸ï¼Javaé«å¹¶å代ç ï¼å¦LongAdder.Cellï¼ConcurrentHashMap.CounterCell ä½¿ç¨æ¤æ³¨è§£å®æèªå¨å¡«å .å¦ä¸æ¯CounterCellå®ç°</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">@</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">jdk</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">internal</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">vm</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">annotation</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">Contended</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> static</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> final</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> CounterCell</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span> 30<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> volatile</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> long</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> value</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 31<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> CounterCell</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">long</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> x</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> value </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> x</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 32<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>æ¬ä¹¦ä¾å<code>CPUCacheLIneTest</code> æ¯è¾äºä½¿ç¨Contendedçæ§è½ï¼</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">@</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">jdk</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">
32internal</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">vm</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">annotation</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">Contended</span></span> 33<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> static</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> Data</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">{</span></span> 34<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> volatile</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> long</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> count</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 35<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> long</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> addCount</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 36<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> count</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">++</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 37<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> return</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> count</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 38<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 39<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span> 40<span class="line"></span> 41<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> static</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> DataWithoutPadding</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span> 42<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> volatile</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> long</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> count</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 43<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> long</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> addCount</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 44<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> count</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">++</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 45<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> return</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> count</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 46<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 47<span class="line"></span> 48<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>注æï¼jdk.internal.vm.annotation.Contended注解被移å°äº<code>jdk.internal.vm.annotation</code>å ä¸ï¼å½å±<code>java.base</code>模åï¼é»è®¤ä¸å¯¹å¤å¯¼åºï¼éè¦å¨ç¼è¯çæ¶åæ¾ç¤º<code>--add-exports java.base/jdk.internal.vm.annotation=ALL-UNNAMED</code></p><p>JMHæµè¯ä»£ç å¦ä¸</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">@</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Fork</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">value</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> jvmArgsPrepend</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span> 49<span class="line"><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> "</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">-XX:-RestrictContended</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span></span> 50<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">})</span></span> 51<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> CPUCacheLIneTest2</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span> 52<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"> //è¿ç»åå¨</span></span> 53<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> Data</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">[]</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> datas</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> Data</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">[]{</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> Data</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(),</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> Data</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">()};</span></span> 54<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> DataWithoutPadding</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">[]</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> dataWithoutPaddings</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> DataWithoutPadding</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">[]{</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> DataWithoutPadding</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(),</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> DataWithoutPadding</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">()};</span></span> 55<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Benchmark</span></span> 56<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Group</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">fill</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span></span> 57<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">GroupThreads</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span></span> 58<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> long</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> dataCount</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 59<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> return</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> datas</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">[</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">0</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">].</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">addCount</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 60<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 61<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Group</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">fill</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span></span> 62<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">GroupThreads</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span></span> 63<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Benchmark</span></span> 64<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> long</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> dataCount2</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 65<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> return</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> datas</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">[</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">].</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">addCount</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 66<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 67<span class="line"></span> 68<span class="line"></span> 69<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Group</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">unfill</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span></span> 70<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">GroupThreads</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span></span> 71<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Benchmark</span></span> 72<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> long</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> dataCountNoPadding</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 73<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> return</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> dataWithoutPaddings</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">[</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">0</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">].</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">addCount</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 74<span class="line"></span> 75<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 76<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Group</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">unfill</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span></span> 77<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">GroupThreads</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span></span> 78<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Benchmark</span></span> 79<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> long</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> dataCountNoPadding2</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 80<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> return</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> dataWithoutPaddings</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">[</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">].</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">addCount
80</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 81<span class="line"></span> 82<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 83<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>è¿æ®µJMH代ç è§£éå¦ä¸</p><table><thead><tr><th style="text-align:left;">注解</th><th style="text-align:left;">说æ</th></tr></thead><tbody><tr><td style="text-align:left;">@Group</td><td style="text-align:left;">对æµè¯æ¹æ³åç»ï¼æ¬ä¾åå为fillåunfillä¿©ç»ãæ¯ç»é½æä¿©ä¸ªæ¹æ³è°ç¨ï¼åå«ä¿®æ¹è¿ç»æ°ç»ä¸ç俩个å¼ï¼ä»¥æ¨¡æä¼ªå ±äº«é®é¢</td></tr><tr><td style="text-align:left;">@GroupThreads(1)</td><td style="text-align:left;">æµè¯æ¹æ³æå¨ç»ä½¿ç¨ççº¿ç¨æ°ï¼è¿é设å®1个线ç¨</td></tr><tr><td style="text-align:left;">-XX:-RestrictContended</td><td style="text-align:left;">JVMå¿ é¡»ä½¿ç¨æ¤é ç½®ï¼å¼å¯JVMèªå¨å¡«å çæã</td></tr></tbody></table><p>JMHæµè¯ç»æå¦ä¸,å¯ä»¥çç¼åè¡å¡«å çåå鿝2åäºæ å¡«å çåºæ¯</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">CPUCacheLIneTest2</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">fill</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> thrpt </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">10</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 85953.571</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ± </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">4483.237</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ops</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">/</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">ms</span></span> 84<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">CPUCacheLIneTest2</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">fill</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">:</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">dataCount thrpt </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">10</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 43462.344</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ± </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">2200.061</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ops</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">/</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">ms</span></span> 85<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">CPUCacheLIneTest2</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">fill</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">:</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">dataCount2 thrpt </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">10</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 42491.227</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ± </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">
852325.268</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ops</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">/</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">ms</span></span> 86<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">CPUCacheLIneTest2</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">unfill</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> thrpt </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">10</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 51176.091</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ± </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">3016.431</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ops</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">/</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">ms</span></span> 87<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">CPUCacheLIneTest2</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">unfill</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">:</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">dataCountNoPadding thrpt </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">10</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 25595.354</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ± </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1539.592</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ops</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">/</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">ms</span></span> 88<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">CPUCacheLIneTest2</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">unfill</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">:</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">dataCountNoPadding2 thrpt </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">10</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 25580.737</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ± </span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1501.565</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ops</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">/</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">ms</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>å ³äº<code>@Contended</code> ï¼è¯·åèJEP 142: Reduce Cache Contention on Specified Fieldsï¼å³âåå°æå®å段ä¸çç¼åäºç¨â</p>`,28)]))}const r=i(p,[["render",h],["__file","index.html.vue"]]),g=JSON.parse('{"path":"/article/performance/microtuning_falseshare/","title":"æ§è½å¾®ä¼å-ç¼åä¼ªå ±äº«","lang":"en-US","frontmatter":{"title":"æ§è½å¾®ä¼å-ç¼åä¼ªå ±äº«","tags":["æ§è½","æ°ä¹¦"],"createTime":"2026/08/20 9:45:15","permalink":"/article/performance/microtuning_falseshare/","description":"6.13 ç¼åä¼ªå ±äº« ç°ä»£è®¡ç®æºï¼CPUçè¿è¡é度ä¸ä»å åå è½½æ°æ®é度æçè¾å¤§é¸¿æ²ï¼æ¯å¦CPUä»å¯åå¨å è½½æ°æ®éè¦1çº³ç§æ¶é´ï¼èä»å åä¸éè¦100纳ç§ãå æ¤CPU使ç¨ç¼åææ¯ï¼é¢å å è½½å¯è½è®¿é®çæ°æ®å°CPUçç¼åé以æé«æ§è½ãè¿äºæ°æ®å¯è½æ¯ ä¸ä¸æ¬¡è®¿é®çæ°æ®ï¼æ¨æµä¸ä¸æ¬¡å¯è½ä¼æ¥ç访é®ï¼ä¿çå¨CPUç¼åé è¿ç»åå¨çæ°æ®ï¼å¦æ°ç»ï¼æè 对象çåä¸ªåæ®µä¸æ¬¡æ§...","head":[["meta",{"property":"og:url","content":"http://ibeetl.com/article/performance/microtuning_falseshare/"}],["meta",{"property":"og:site_name","content":"é²å¤§èµ"}],["meta",{"property":"og:title","content":"æ§è½å¾®ä¼å-ç¼åä¼ªå ±äº«"}],["meta",{"property":"og:description","content":"6.13 ç¼åä¼ªå ±äº« ç°ä»£è®¡ç®æºï¼CPUçè¿è¡é度ä¸ä»å åå è½½æ°æ®é度æçè¾å¤§é¸¿æ²ï¼æ¯å¦CPUä»å¯åå¨å è½½æ°æ®éè¦1çº³ç§æ¶é´ï¼èä»å åä¸éè¦100纳ç§ãå æ¤CPU使ç¨ç¼åææ¯ï¼é¢å å è½½å¯è½è®¿é®çæ°æ®å°CPUçç¼åé以æé«æ§è½ãè¿äºæ°æ®å¯è½æ¯ ä¸ä¸æ¬¡è®¿é®çæ°æ®ï¼æ¨æµä¸ä¸æ¬¡å¯è½ä¼æ¥ç访é®ï¼ä¿çå¨CPUç¼åé è¿ç»åå¨çæ°æ®ï¼å¦æ°ç»ï¼æè 对象çåä¸ªåæ®µä¸æ¬¡æ§..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2026-08-21T06:57:39.000Z"}],["meta",{"property":"article:tag","content":"æ§è½"}],["meta",{"property":"article:tag","content":"æ°ä¹¦"}],["meta",{"property":"article:modified_time","content":"2026-08-21T06:57:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"æ§è½å¾®ä¼å-ç¼åä¼ªå ±äº«\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"202
886-08-21T06:57:39.000Z\\",\\"author\\":[]}"]]},"headers":[],"readingTime":{"minutes":4.09,"words":1226},"git":{"updatedTime":1787295459000,"contributors":[{"name":"lijiazhi","username":"lijiazhi","email":"[email protected]","commits":1,"avatar":"https://gravatar.com/avatar/1b5114831459724ad4acc394423b4b48ecfa4a7e0659fbe07a0ce5181a1050a7?d=retro"}]},"autoDesc":true,"filePathRelative":"article/æ§è½/false_share.md","categoryList":[{"id":"92a2b5","sort":10001,"name":"article"},{"id":"afdb50","sort":10003,"name":"æ§è½"}]}');export{r as comp,g as data};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.