Created
May 5, 2016 19:23
-
-
Save LiSongMWO/36b6964df802491e792aab3edf70154f to your computer and use it in GitHub Desktop.
Performance benchmark Java LinkedList vs ArrayList appending.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package perf; | |
import java.util.ArrayList; | |
import java.util.LinkedList; | |
import net.tuis.ubench.UBench; | |
public class Lists { | |
public static void main(String[] args) throws Exception { | |
final UBench bench = new UBench("ArrayList VS LinkedList"); | |
for (int n = 100; n < 100000; n *= 10) { | |
final int N = n; | |
bench.addTask("ArrayList " + N, () -> { | |
ArrayList<Integer> ans = new ArrayList<>(); | |
for (int x = 0; x < N; ++x) | |
ans.add(x); | |
return null; | |
}); | |
bench.addTask("LinkedList " + N, () -> { | |
LinkedList<Integer> ans = new LinkedList<>(); | |
for (int x = 0; x < N; ++x) | |
ans.add(x); | |
return null; | |
}); | |
} | |
bench.press(100).report("Comparison ArrayList vs LinkedList"); | |
} | |
} |
Results for N=10^6:
Task ArrayList VS LinkedList -> ArrayList 1000000: (Unit: MICROSECONDS)
Count : 100 Average : 8694,9910
Fastest : 5773,0200 Slowest : 172363,0130
95Pctile : 11564,3580 99Pctile : 172363,0130
TimeBlock : 24397,939 7654,109 6032,919 9987,340 5982,441 5993,191 8286,964 6020,457 6438,276 6156,277
Histogram : 94 5 0 0 1
Task ArrayList VS LinkedList -> LinkedList 1000000: (Unit: MICROSECONDS)
Count : 100 Average : 11676,7730
Fastest : 4849,9380 Slowest : 116309,6150
95Pctile : 81683,8060 99Pctile : 116309,6150
TimeBlock : 26185,849 23320,629 7624,831 10119,136 5167,101 13491,721 7648,704 5177,881 12892,858 5139,024
Histogram : 79 14 1 1 5
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Results on my machine:
Comparison ArrayList vs LinkedList
Task ArrayList VS LinkedList -> ArrayList 100: (Unit: MICROSECONDS)
Count : 100 Average : 2,6990
Fastest : 0,6000 Slowest : 71,4680
95Pctile : 9,0080 99Pctile : 71,4680
TimeBlock : 12,972 2,793 2,162 1,201 1,111 1,081 1,021 1,141 2,763 0,751
Histogram : 51 21 17 8 2 0 1
Task ArrayList VS LinkedList -> LinkedList 100: (Unit: MICROSECONDS)
Count : 100 Average : 5,3000
Fastest : 0,3000 Slowest : 361,5450
95Pctile : 6,0060 99Pctile : 361,5450
TimeBlock : 40,869 1,922 1,952 0,991 1,141 0,961 2,913 0,961 0,901 0,390
Histogram : 13 23 50 4 8 0 1 0 0 0 1
Task ArrayList VS LinkedList -> ArrayList 1000: (Unit: MICROSECONDS)
Count : 100 Average : 17,5180
Fastest : 4,2040 Slowest : 136,6310
95Pctile : 56,4540 99Pctile : 136,6310
TimeBlock : 55,553 33,152 20,299 10,570 11,892 10,750 11,681 9,789 7,177 4,324
Histogram : 17 55 20 5 2 1
Task ArrayList VS LinkedList -> LinkedList 1000: (Unit: MICROSECONDS)
Count : 100 Average : 18,5990
Fastest : 4,5040 Slowest : 239,9300
95Pctile : 52,2500 99Pctile : 239,9300
TimeBlock : 63,841 22,341 22,161 13,183 13,213 12,672 12,852 11,861 8,768 5,105
Histogram : 17 53 23 6 0 1
Task ArrayList VS LinkedList -> ArrayList 10000: (Unit: MICROSECONDS)
Count : 100 Average : 163,4250
Fastest : 41,1390 Slowest : 953,1120
95Pctile : 529,1060 99Pctile : 953,1120
TimeBlock : 435,897 274,282 200,742 105,461 105,371 106,572 114,860 182,905 65,192 42,971
Histogram : 18 54 21 6 1
Task ArrayList VS LinkedList -> LinkedList 10000: (Unit: MICROSECONDS)
Count : 100 Average : 168,7190
Fastest : 47,7460 Slowest : 655,8270
95Pctile : 512,5900 99Pctile : 655,8270
TimeBlock : 424,486 228,278 236,716 136,060 132,757 132,697 134,529 121,316 87,083 53,271
Histogram : 18 53 23 6