jdk.jmh.g" data-id="heainkedList;
new">E P j & Uions opt = k 9 c<.SECONDS) + class="hljs-pa"hljs-keyword">:
@Setup % h _ ~ @8fb17c903e6.pngmark="6hu">5 t umber">5 B + { P )public orgs="6hu-2052-myp>
@Mespan class="6huss="hljs-commenspan class="6huliforedList.add(ljs-keyword">iml s p ta ` >int i =ta">@Measuremenclass="6hu-1054s-keyword">int@Benchmimport<果可以看出,从 rd">import
-
()<.options.Optio<| i / f P W +的功用问题,所 * ^ z ( &lass="6hu-3956-功用检验
="6hu">Y 3 Y .# V R * + W 操作的功用检验 /span>/ 核算中 了避免 JIT 忽略s="hljs-meta">@ss="hljs-keywort居然比ArrayLis2000+4i 地址。 p>
1
f W D~ class="hljs-ke-39408-mypl" da,数组的代表为 。
检验效 一个节点(通常 V >f { p 5 u-8736-mypl" da401924-0b9f3034318-mypl" data-k="6hu">^ g %
以word">import// java.utild">import
最终Name()) 检验/span> lass.getSdata-mark="6hu"st慢了1000多倍 t o r 是rk="6hu">+ k V "heading-1">数 | ] penjdss="hljs-title"penjdk.jmh.runnList进行t慢了1000多倍?ure>fos="hljs-number">() span> org.openj">privateL ] ~ $ 一种数据结构, ss="6hu-10208-m之前就是最终一 l" data-mark="6pan> org.openjdan class="hljs-ass="hljs-keywou.cc/wp-contentrt org.o"6hu-35443-myplpan>
public an> 事。而本文 pan class="hljs链均匀实行(结束 @Benchmarkort ">public w.6hu.cc/wp-con删去也同样是移 ="attachment wp_ o e ? lass="hljs-keyweyword">import(t endCou个无需连续内存 6hu-20774-mypl"an class="6hu-4yword">v1 )ljs-title">main
a动之后的所有元 ;
}
}
findLin, time = pan class="6hu-an>4 Q 8 E W 来必定的功用开 dList居然比Arra969-mypl" data-keyword">new java.util.>int i =ass="6hu-16140-ss="hljs-commenta-mark="6hu">M这个链接指向列 eading" data-id
) J U I ="6hu-32973-mypu">I I ] } f{
// 要导入的unt + operation()an class="hljs-class="hljs-key="hljs-keyword"RunnerException5540-mypl" datayList慢了1000多),而两头查询 ">o 3 v d扩展。
W G B h Y R org.openjdk.">// f B R :pan class="6hu-ln>
org.openList.add(i, i);ckhole.consume(="LinkedList居 poprivate<76-mypl" data-mt">// 中心删去 an class="6hu-2;
方 a-mark="6hu">&an>
链表eea606f4e3cf.pnord">private org.openjint
mutil.LinkedListt )
(图+功用评测)" a多倍?(动图+功 以就有了双向链 -4340-mypl" datnerException;
<数据,这就会带 6e7675c9ba.png" = ic private ss="hljs-functi
<间
@Benchmoptions.Optionsst.add(i);
linkhu-36924-mypl" = )
privateiass="hljs-keywo="LinkedList居 data-mark="6hu"s="hljs-meta">@-keyword">int// 预热次数a-mark="6hu">Z n class="hljs-nss="6hu-16211-mn class="hljs-k>- f d x pvoid <>L * 8 s { 2 { ns = /span class="hljement (itspan class="hljark="6hu">o z %们将添加的次数 评测)" alt="Linss="6hu-1428-mys="6hu-25145-my="hljs-keyword"009-mypl" data-12804-mypl" datJMH 的内容for (an> st-mark="6hu">u Mn>功用评测,cc/wp-content/u heN h
// 检验 n> LinkedList&a是关于许多人来 "heading-6">双 们需求检验的voidint (a.Blackhole是在每一个节点pan> org.openjdspan>.getSimplep-content/uploau-35612-mypl" dg"> (! n k .Ass="6hu-32054-mdList居然比Arran class="hljs-m-keyword">statiinkedList居然比39312-mypl" dat>f A 2 J O ` - / N ;Int class="hljs-meode>Aric @Ouspan class="hljlt; (maxSize - V ayList.="LinkedList居 00多倍?(动图+ 6hu-4640-mypl" 时间快了约 1990pan class="6hu- 进行数据 - v 7 r D f链表长处7.扩展添加检oads/2020/06/15ArrayList(statyOptimizeTest.ceyword">newArrayList,可以很便利的 实行检验 n class="6hu-17>_ c X / 束时间
Runn,s://www.6hu.cc/span class="hlj" data-mark="6h效果可以看出,5 , ark="6hu">= ! #i);
}
}
0+功用评测)" alts="6hu-16200-myclass="hljs-com"hljs-keyword">ljs-keyword">stn class="hljs-c6hu-20844-mypl"ArrayListimpBuilder;图+功用评测)" w20/06/159240192ad wp-image-561ass="hljs-meta"public <索引为 i 的元素 new 多倍?(动图+功 769-mypl" data-" data-mark="6h>public .add(i);
}
}
tic A5/1588813732-65data-mark="6hu"class="6hu-4089w M } 7 rjs-number">0d ; i++) {
arrayLpan>dList;
J : #n class="hljs-css="6hu-102-myp/tr>
ode class="hljspan>
/ ) # C u _ word">importA o r keyword">void从以上代码可以 Y 9 - y ArrayList<Ian class="hljs-验结束时间 ArrayList&l评测)" alt="Lineta">@Warmup素,maxSize = $ ] m y g f rel="attachmentf9cfb41.png" reude(ArrayOptimiu">j N D L) c<-mark="6hu">] ?pl" data-mark="="hljs-meta">@Bn class="hljs-pc C u opespan class="6huo k f 0 rn class="hljs-k如下图所示:
add(i, i);
}ss="hljs-title"edList pan class="6hu-rk="6hu">Y c i g" rel="attachm"hljs-meta">@Foclass="hljs-comata-mark="6hu">t">// 预热次数 ) onsume(link类
链表rk="6hu">S W a ="hljs-comment"s">(St(Mode.Aver5 , timeU到 9 的 32 位整r $ e U
e测
final java.util.L65-mypl" data-mrk="6hu">t f a span class="6huhu-19899-mypl" / 为了避免 JIT ="6hu">T e W G验结束时间ArrayOpr">1 , tian class="6hu-1 U g 2ar6hu">F } ? u u >privatettps://www.6hu.;5.中心查 c &l表更加简单。1000thros-number">2g ! f K 8 D从以上效果可 "LinkedList居然0" lass="hljs-clasa S / 为 (5 , timepan>{
im2 , timemypl" data-markark="6hu">V D %class="hljs-key一个是指针,此 心部分/尾部g.ope; i++2 ;
& p R { C ass="hljs-keywospan>
ray
l" data-mark="6span> ArrayL
重 ss="hljs-numbern>; final+ n q
[ / zu C S m Yljs-number">0 检验次数和时间;I总结 opt = nne- * 5 g uint 我们先来回想一 1e768fb17c903e6="6hu">r F o
| 8 上程序的实行效 调至 1w, {
<>h R D C D t ^z z -keyword">pubstatic(iteratio="6hu">z K V O ark="6hu">1 a M>D I + o B p X Runner(6974-mypl" data data-mark="6huss="hljs-meta"> java copyable"span class="hljinf srpan>t;
s一个节点的指针 n class="hljs-nid dBy org.opespan>.runner.Ru/1592401914-c59了1000多倍?(动x # l [ P// 为ypl" data-mark=eUnit.SECONDS) 用评测)" width=keyword">vo&. Q N O j+) {
arrayList.idth="1024" heia-id="heading-1ner.options.Opt前,我们先将
j r 9 r20770-mypl" datil.concurrent.T下,什么keyword">final5 , timjs-keyword">thrs="hljs-commentght="294" src="nkedList-mark="6hu">v Fp-content/uploa还有一个缺点, alignnone size-s="6hu-7878-mypit.NANOSECONDS)>nteger&impojs-keyword">finSize = im次初步添加元素 an> OptionsBuils-comment">// atic "hljs-meta">@Ou4"> ] U 7 2 空值,我们上面 ws Runnepan> end">@BN c //n> e L的均匀9 = W s首要分为以下几 ta-mark="6hu">5s="hljs-keywordyword">void org.o以上程序的 1000多倍?(动图t">//O >imph.infra.n class="6hu-31 java copyable"ss="hljs-keywor>I -3864-mypl" datan class="6hu-3实行效果为:1 // 检验次e-5624" title="s="hljs-keywordkeyword">final<$ assvoidt.(Blackh:
pube @Benchma,我们再将添加 t; maxSize; i++if" rel="attachata-mark="6hu">M A v 3i h e8.png" rel="at/wp-content/upljs-keyword">sta数和时间 况下,从头部依 maxSizent">// 发起基准6hu-31716-mypl"rt java.arrayLi Arpan class="hljsprian class="6hu-9te>
最简略的到删去节点的上 s-function">种常见 hu">T 9 z m 5 9mypl" data-mark` ) ( x y
{
) le;
impo 本文我们将an class="hljs-span>ns.Options从头部查询 100 w.6hu.cc/wp-concomment">// 检 15209-mypl" datn>OutputTimeUnilass="hljs-titlass="hljs-keywoljs-comment">//load wp-image-5add(i, i);
}
st;
rationSize; data-mark="6hust慢了1000多倍 an class="6hu-5/wp-content/upl class="hljs-ke因为它是连续存 rrayOptimi
<居然比ArrayListn class="hljs-kc="https://www.-34624-mypl" das-meta">@Benchmmeta">@State (B01923-3dae7049d="hljs-keyword"6hu.cc/wp-conten {
76-mypl" data-m"6hu">! y Q a Phu-42282-mypl" pan> org.openjdmup (iter"6hu-9216-mypl" E k V nkspan class="hlj C 5 i u e ) h<检验
Optpan>rkModemp; J j data-mark="6hu"是面试中常考的 an class="hljs-ass="6hu-9027-m2020/06/1592401-3990-mypl" datclass="6hu-1472927-07b6771489d class="hljs-ke://www.6hu.cc/w次数和时间 // 要导Count; i < (C ExSize + k I 4 Z
(t s
循环链,已然现已有单 u">4 ^ k : rt axSrd">private$ c hljs-meta">@(Scop@Formain } H )。
publ如果单向链表要 4-3b703e38dfc6beyword">import_ Y ? ! l R hljs-keyword">s连续的内存组成 span>:
private@ForkArime
删去-5619"> s @ [ G /ns.*;
数组? y c n> org.openjnew = startCount; ata-mark="6hu">s="hljs-keywordBuilder;
:t<Integer>ss="6hu-15444-mspan>
linkedLisword">new
hljs-function">hu-26784-mypl" ="hljs-keyword"port orgBenchmarkMode>void M j Oons;
e k C 8 S2 , yLis(Stringdata-mark="6hu"ass="hljs-keywos y k n()hljs-comment">/ i = (m<-keyword">final; * e G 0 [ R vass="hljs-meta"4-0b9f3034912d6ize-full lazylo> {
刻复杂度是 O(ns="6hu-5280-mypss="6hu-11725-m然比ArrayList慢5">4.头部查询功看出,? $ *ass="hljs-functole) LinkedListayLn imeUnit.SECONDSclass="hljs-keyint Linked" data-mark="6h java.util.Linkl" data-mark="6 (startint// 预热 zeTun/06/1592401925->import O(n) 的时间,而eyword">for i = span>后边的元lackhole;^ j W 类作次数
impor(Time1 class="hljs-fu环节an class="hljs-ta-mark="6hu">?="163" src="htt} k ~ []atic4 Tdata-mark="6hu"6hu">! H D 9 ` a-mark="6hu">* OptionsBuilder(comment">// 操 抉择了它的存储 Options"hljs-comment">p-att-5617">
static<面试题之一。可 49d5b8151.gif">大特征,就是它 n>
.runner.R
O(n)
大。但当数int 6hu-10752-mypl"k="6hu">M M Jimportx k w S W :验
Opt2, tyOptimizeTest.c;mh.annoan>
{
//@Ban class="hljs-rk="6hu">t o J href="https://-params">(Blackz H X ^ | V 1 impan>oncurrent.Tpan>e Linspan class="hlj/span>
"hljs-keyword">an class="6hu-2 class="hljs-ke"hljs-meta">@Fohljs-keyword">p一个节点访问前 n class="hljs-k">stapan class="6hu-ta">@Measuremenrpublicthroass="6hu-26607-an>; i < maxS626" title="Linhljs-comment">/ class="hljs-coal
2 = R Op" data-mark="6hn class="hljs-k="hljs-number">omment">// 发起<Integer> ( + ` Man> {
@OutputTimeUnpan class="hljs482-mypl" data-ss="6hu-31668-m-18425-mypl" daljs-keyword">pr不影响链表的创 lass="hljs-keyw class="hljs-ketartCount = max刺进
public Arr// 为了避免向链表
-mypl" data-margs) @BenchmarkModeel="attachment class="hljs-keass="6hu-16154-ckhole.consume(/span> {c (Scpan>(iterations">private
数组和 1000 ; @Measurt = maxSize / <。
java
链表删去rk="6hu">* / g E C / { .u">@ 5 b ; Sf - n class="6hu-18a-mark="6hu">) - [ e实ass="hljs-keywoe>,因此我们就 ss="6hu-30784-m J 1 taymeUnit.SECONDS)span class="hlj size-full lazyn> 检验结束时间ng">new(iterations ">Array; (StrH 刺进
O> LinkedList
S x="6hu">W ; 7 X 组的功用差不不 span> vo" data-mark="6hayList;
(M数组和链表是 class="6hu-670verageTime) e m 同不大。
for
@Outp href="https://检验效果如下:<循环次数 Runner(ofor1001000
2 u" data-mark="6h复杂度,如下表 ljs-keyword">in中心部分进行刺 data-mark="6hupl" data-mark="的检验类 g.openjdk.jmh.ru">5 } ^ b . e an class="hljs-"6hu-29388-myplzyload wp-imagera data-mark="6hu.尾部查询功用评对应的存储地址 yword">new1 , timeyword">classstatic@Setup
n>上效果可以看 ?(动图+功用评 ) l | q l N i J<="6hu-35428-mypuploads/2020/06mark="6hu">} U g. or
Y G ps="hljs-keyword-mark="6hu"> a n class="hljs-k="6hu-5180-myplan>ageTime) ; i < endCo2020/06/1592401>(iterationsN _ ) = vu-8103-mypl" daan>
均匀实行时 word">voide用评测)" alt="Lmain org.o>(int2 class="headin
kedyByMiddleopenjdk.jmh.b v TimeUnit;
ions op java.util.tle="LinkedList”特征抉择了它的L X 7 o s1<="6hu">l _ r , tatic Arn class="hljs-p[] args) 有内存碎片,也 G 行检 an>:
fin导入的检验类
M ord">importthrow
ole blacarams">(String[s="hljs-keyword/ 中心删数组表<"6hu">) l a 1 Zrunner.options.n>);
linkedListspan class="6huspan class="hlj401924-17bd86f5jdk.jmh.runner.l" data-mark="6hu-16461-mypl" 点,一起还介绍 u-21762-mypl" dspan class="hljass="6hu-23058->int opepan>; i < man class="hljs-kate newt.get(i);
}
}
}hljs-keyword">it">// 发起基准 >
fori M _ 4770-mypl" data-keyword">new"hljs-title">inpan class="hljs/span> java.utipan>的根底知识 143" src="httpsa">@Benchma@Benchmatations.*;
voidvoidnew
循环链ams">(String[]<1000多倍?(动图"6hu-34715-mypl>private > linkedvoi@Statevoid/blockquote>
g.openjdk.jm" data-mark="6h">public ="6hu-31396-mypan class="hljs-ass="hljs-keywo/code> 均匀实行a-mark="6hu"> %ata-mark="6hu">个缺点就是刺进 . / ! S 3 u E ?d">int iata-mark="6hu">ss="6hu-5278-my次第表相应的时 刺进或删去一个 R . f organ class="6hu-3comment">// 履<69-mypl" data-m="hljs-keyword"k="6hu">i e [ Pger> arrayLik="6hu">* 2 w lh.annotation// 发起="heading-17">6多倍?(动图+功 数组添加的进/span>
100 class="hljs-kepre>
以上程 >// 检验循环次 6adf4666.gif" rss="6hu-4704-my.concurrent.Timspan> maxSize =.SEimpor
相关文章
位运算是什么 二进制是计算技术中广泛采用的一种数制。二进制数据是用 0 和 1 ...
3 年前
0
0
149
跟着 Google I/O 2023 的发布, Flutter 3.10 和 D...
1 年前
0
0
59
场景描述: 设想下如果服务器端返回的数据成百上千条,需要你在前端“一次性”渲染出...
2 年前
0
0
150
最近,有许多人在传说 SpringBoot要出3.0的版别了,而且宣布不再支持 ...
1 年前
0
0
109