日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

在Java中,相同代碼塊的運行時間不同。這是為什么?

瀏覽:234日期:2024-04-29 15:14:46
如何解決在Java中,相同代碼塊的運行時間不同。這是為什么??

基準測試錯誤。錯誤的非詳盡清單:

:單次測量幾乎總是錯誤的; :我們可能開始使用僅適用于該方法中第一個循環(huán)的執(zhí)行數據來編譯該方法; :如果循環(huán)編譯,我們實際上可以預測結果; :如果循環(huán)編譯,我們可以將循環(huán)丟掉

這可以說是用jmh正確地做到的:

@OutputTimeUnit(TimeUnit.NANOSECONDS)@BenchmarkMode(Mode.AverageTime)@Warmup(iterations = 3, time = 1)@Measurement(iterations = 3, time = 1)@Fork(10)@State(Scope.Thread)public class Longs { public static final int COUNT = 10; private Long[] refLongs; private long[] primLongs; /* * Implementation notes: * - copying the array from the field keeps the constant * optimizations away, but we implicitly counting the * costs of arraycopy() in; * - two additional baseline experiments quantify the * scale of arraycopy effects (note you can’t directly * subtract the baseline scores from the tests, because * the code is mixed together; * - the resulting arrays are always fed back into JMH * to prevent dead-code elimination */ @Setup public void setup() {primLongs = new long[COUNT];for (int i = 0; i < COUNT; i++) { primLongs[i] = 12l;}refLongs = new Long[COUNT];for (int i = 0; i < COUNT; i++) { refLongs[i] = 12l;} } @GenerateMicroBenchmark public long[] prim_baseline() {long[] d = new long[COUNT];System.arraycopy(primLongs, 0, d, 0, COUNT);return d; } @GenerateMicroBenchmark public long[] prim_sort() {long[] d = new long[COUNT];System.arraycopy(primLongs, 0, d, 0, COUNT);Arrays.sort(d);return d; } @GenerateMicroBenchmark public Long[] ref_baseline() {Long[] d = new Long[COUNT];System.arraycopy(refLongs, 0, d, 0, COUNT);return d; } @GenerateMicroBenchmark public Long[] ref_sort() {Long[] d = new Long[COUNT];System.arraycopy(refLongs, 0, d, 0, COUNT);Arrays.sort(d);return d; }}

…產生:

Benchmark Mode Samples Mean Mean error Unitso.s.Longs.prim_baseline avgt30 19.6040.327 ns/opo.s.Longs.prim_sort avgt30 51.2171.873 ns/opo.s.Longs.ref_baseline avgt30 16.9350.087 ns/opo.s.Longs.ref_sort avgt30 25.1990.430 ns/op

在這一點上,您可能會開始懷疑為什么排序Long[]和排序long[]會花費不同的時間。答案在于Array.sort()重載:OpenJDK通過不同的算法(使用Timsort的引用,使用雙數據點快速排序的基元)對基元數組和引用數組進行排序。這是使用選擇另一個算法的亮點-Djava.util.Arrays.useLegacyMergeSort=true,這又落到了合并排序的參考上:

Benchmark Mode Samples Mean Mean error Unitso.s.Longs.prim_baseline avgt30 19.6750.291 ns/opo.s.Longs.prim_sort avgt30 50.8821.550 ns/opo.s.Longs.ref_baseline avgt30 16.7420.089 ns/opo.s.Longs.ref_sort avgt30 64.2071.047 ns/op

希望這有助于解釋差異。

上面的解釋幾乎沒有涉及排序的性能。當使用不同的源數據(包括可用的預排序子序列,它們的模式和游程長度,數據本身的大小)呈現時,性能會有很大不同。

解決方法

我有下面的代碼。我只想檢查代碼塊的運行時間。錯誤地,我再次復制并粘貼了相同的代碼,并得到了有趣的結果。盡管代碼塊相同,但運行時間不同。而且codeblock 1 比其他人花費更多的時間。如果我切換代碼塊,(say i move the code blocks 4 to thetop)則代碼塊4將比其他代碼花費更多時間。

我在代碼塊中使用了兩種不同類型的數組來檢查它是否依賴于此。結果是一樣的。如果代碼塊具有相同類型的數組,則最上面的代碼塊將花費更多時間。參見下面的代碼和給出的輸出。

public class ABBYtest {public static void main(String[] args) { long startTime; long endTime; //code block 1 startTime = System.nanoTime(); Long a[] = new Long[10]; for (int i = 0; i < a.length; i++) {a[i] = 12l; } Arrays.sort(a); endTime = System.nanoTime(); System.out.println('code block (has Long array) 1 = ' + (endTime - startTime)); //code block 6 startTime = System.nanoTime(); Long aa[] = new Long[10]; for (int i = 0; i < aa.length; i++) {aa[i] = 12l; } Arrays.sort(aa); endTime = System.nanoTime(); System.out.println('code block (has Long array) 6 = ' + (endTime - startTime)); //code block 7 startTime = System.nanoTime(); Long aaa[] = new Long[10]; for (int i = 0; i < aaa.length; i++) {aaa[i] = 12l; } Arrays.sort(aaa); endTime = System.nanoTime(); System.out.println('code block (has Long array) 7 = ' + (endTime - startTime)); //code block 2 startTime = System.nanoTime(); long c[] = new long[10]; for (int i = 0; i < c.length; i++) {c[i] = 12l; } Arrays.sort(c); endTime = System.nanoTime(); System.out.println('code block (has long array) 2 = ' + (endTime - startTime)); //code block 3 startTime = System.nanoTime(); long d[] = new long[10]; for (int i = 0; i < d.length; i++) {d[i] = 12l; } Arrays.sort(d); endTime = System.nanoTime(); System.out.println('code block (has long array) 3 = ' + (endTime - startTime)); //code block 4 startTime = System.nanoTime(); long b[] = new long[10]; for (int i = 0; i < b.length; i++) {b[i] = 12l; } Arrays.sort(b); endTime = System.nanoTime(); System.out.println('code block (has long array) 4 = ' + (endTime - startTime)); //code block 5 startTime = System.nanoTime(); Long e[] = new Long[10]; for (int i = 0; i < e.length; i++) {e[i] = 12l; } Arrays.sort(e); endTime = System.nanoTime(); System.out.println('code block (has Long array) 5 = ' + (endTime - startTime));}}

運行時間:

code block (has Long array) 1 = 802565

code block (has Long array) 6 = 6158

code block (has Long array) 7 = 4619

code block (has long array) 2 = 171906

code block (has long array) 3 = 4105

code block (has long array) 4 = 3079

code block (has Long array) 5 = 8210

如我們所見,包含的第一個代碼塊Long array將比包含的其他代碼花費更多的時間Long arrays。包含的第一個代碼塊也是如此longarray。

任何人都可以解釋這種行為。還是我在這里做錯了?

標簽: java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
一区二区国产精品| 1000部精品久久久久久久久| 一本色道精品久久一区二区三区| 久久网站免费观看| 一区在线观看| 免费久久99精品国产| 亚洲欧美一级| 欧美视频久久| 欧美日韩视频免费看| 国产伦理久久久久久妇女| 国产精品成人一区二区网站软件| 你懂的亚洲视频| 中文字幕人成乱码在线观看| 久久国产亚洲| 欧美专区在线| 91麻豆精品激情在线观看最新| 国产视频一区二区在线播放| 久久精品午夜| 亚洲午夜av| 中文字幕亚洲影视| 国产精品v亚洲精品v日韩精品| 国产成人精品一区二区免费看京 | 日韩一区亚洲二区| 九一精品国产| 亚洲tv在线| 久久精品网址| 欧美高清一区| 91午夜精品| 日韩免费福利视频| 免费精品视频在线| 久久三级中文| 久久精品国产99久久| 视频一区中文字幕国产| 国产精品一区二区美女视频免费看| 97在线精品| 影院欧美亚洲| 国产精品色婷婷在线观看| 精品久久91| 国产亚洲永久域名| 国产精品嫩模av在线| 久久视频国产| 日韩高清在线不卡| 成人国产精品一区二区网站| 亚洲一区二区免费看| 国产精品大片免费观看| 另类中文字幕国产精品| 日韩亚洲精品在线观看| 麻豆mv在线观看| 蜜桃免费网站一区二区三区| 麻豆精品少妇| 亚洲综合丁香| 国产在线日韩精品| 亚洲欧美日本国产专区一区| 欧美成人精品一级| 国产一区白浆| 国产精品久久久久久久久久10秀 | 久久在线免费| 国产精品中文字幕制服诱惑| 久久久久蜜桃| 国产精品免费不| 亚洲欧美日韩在线观看a三区 | 亚洲精品观看| 蜜桃成人精品| 国产精品成人3p一区二区三区| 不卡一区2区| 精品不卡一区| 日本欧美大码aⅴ在线播放| 久久精品亚洲人成影院| 国产精品久久久久久av公交车| 日韩一级欧洲| 超碰超碰人人人人精品| 欧美日韩xxxx| 首页亚洲欧美制服丝腿| 日韩不卡视频在线观看| 国产精品黄色| 石原莉奈在线亚洲三区| 亚洲成人不卡| 免费在线亚洲欧美| 中文字幕亚洲影视| 影音国产精品| 色老板在线视频一区二区| 久久中文字幕一区二区三区| 日韩一区二区三免费高清在线观看| 国产91精品对白在线播放| 精品久久一区| 国产精品一区高清| 蜜臀va亚洲va欧美va天堂| 99热精品久久| 国产精品yjizz视频网| 国产精品扒开腿做爽爽爽软件| 国产精品视区| 视频一区中文| 精品国模一区二区三区| 精品99在线| 久久不卡国产精品一区二区| 日本亚洲欧洲无免费码在线| 99在线观看免费视频精品观看| 色88888久久久久久影院| 国产成人精品福利| 久久精品国产福利| 国产精品白丝久久av网站| 欧美性www| 日韩动漫一区| 日韩国产高清在线| 日韩高清不卡一区二区| 香蕉视频成人在线观看| 午夜久久美女| 欧洲毛片在线视频免费观看| 色婷婷精品视频| 久久天堂av| 99精品在线观看| 亚洲一级二级| 黄色成人在线网址| 日韩亚洲国产欧美| 美女黄网久久| 亚洲一二av| 日韩不卡在线观看日韩不卡视频| 日韩三级一区| 日本不卡一二三区黄网| 亚洲精品九九| 亚洲91网站| 欧美影院精品| 国产精品天天看天天狠| 你懂的国产精品| 成人国产精品久久| 韩国久久久久久| 国产91久久精品一区二区| 欧美丝袜一区| 国产精品婷婷| 视频精品一区| 久久国产人妖系列| 欧美a在线观看| 91亚洲一区| 国产91精品对白在线播放| 欧美在线资源| 鲁大师成人一区二区三区| 深夜福利亚洲| 欧美国产三级| 日韩高清欧美| 9国产精品视频| 午夜日韩影院| 国产精品视频一区二区三区| 国产成人精品三级高清久久91| 韩国久久久久久| 狠狠色狠狠色综合日日tαg| 亚洲精品日本| 精品一区二区男人吃奶 | 久久久影院免费| 欧美日韩四区| 日产欧产美韩系列久久99| 欧美国产亚洲精品| 日韩电影免费在线观看| 国产婷婷精品| 91九色综合| 一区二区精品伦理...| 99国产成+人+综合+亚洲欧美| 日本亚洲欧美天堂免费| 国产精品草草| 日韩一区二区三区免费| 怡红院精品视频在线观看极品| 亚洲精品系列| 精品国产99| 黄色亚洲大片免费在线观看| 亚洲天堂av资源在线观看| 久久99精品久久久野外观看| 日韩在线短视频| 亚洲久久视频| 91一区二区三区四区| 美女精品在线| 精品一区二区男人吃奶| 精品欧美久久| 久久激情五月激情| 蜜桃精品在线| 日本一区二区三区中文字幕| 久久久男人天堂| 一区二区三区网站| 老牛国内精品亚洲成av人片| 欧美日韩国产综合网| 91九色综合| 日本国产精品| 国产欧美一区二区三区米奇| 久久久久欧美精品| 青青伊人久久| 激情婷婷久久| 免费在线成人| 首页欧美精品中文字幕| 国产成人免费| 天堂va在线高清一区| 午夜av成人| 国产精品欧美大片| 亚洲一区不卡| 国语对白精品一区二区| 中文字幕亚洲精品乱码| 91偷拍一区二区三区精品| 中文字幕免费精品| 色天使综合视频| 乱一区二区av| 日韩国产一区二| 国产精品任我爽爆在线播放| 日韩国产一区二区三区|