Skip to content

Instantly share code, notes, and snippets.

@LiSongMWO
Created May 5, 2016 19:23
Show Gist options
  • Save LiSongMWO/36b6964df802491e792aab3edf70154f to your computer and use it in GitHub Desktop.
Save LiSongMWO/36b6964df802491e792aab3edf70154f to your computer and use it in GitHub Desktop.
Performance benchmark Java LinkedList vs ArrayList appending.
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");
}
}
@LiSongMWO
Copy link
Author

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

@LiSongMWO
Copy link
Author

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