Linked Lists/Java/Timing: Difference between revisions
From charlesreid1
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
==Timing Linked Lists== | |||
This page describes a script that measures the performance of a custom Linked List type, and compares its performance to the built-in LinkedList type. | This page describes a script that measures the performance of a custom Linked List type, and compares its performance to the built-in LinkedList type. | ||
The custom Linked List | ===About the Linked List Class=== | ||
The custom Linked List class used here is TLinkedList, implemented following Goodrich et al, Data Structures in Java, Chapter 3 Linked Lists. | |||
Link: https://charlesreid1.com:3000/cs/java/src/master/lists/linked-lists/TLinkedList.java | Link: https://charlesreid1.com:3000/cs/java/src/master/lists/linked-lists/TLinkedList.java | ||
More details at [[Linked Lists/Java]] | More details at [[Linked Lists/Java]] | ||
===Code=== | ===Code=== | ||
| Line 33: | Line 36: | ||
} | } | ||
</pre> | |||
The code is implemented as two tests. One is a test that just adds things to a list, and tests that the amortized cost of a dynamically expanding list is O(1). | |||
The second add-remove test successively adds and removes items from a list, in exactly the same sequence, and tests the amount of time it takes. | |||
===Output=== | ===Output=== | ||
Revision as of 04:12, 5 June 2017
Timing Linked Lists
This page describes a script that measures the performance of a custom Linked List type, and compares its performance to the built-in LinkedList type.
About the Linked List Class
The custom Linked List class used here is TLinkedList, implemented following Goodrich et al, Data Structures in Java, Chapter 3 Linked Lists.
Link: https://charlesreid1.com:3000/cs/java/src/master/lists/linked-lists/TLinkedList.java
More details at Linked Lists/Java
Code
The following code uses the TLinkedList class and the LinkedList class from the Java Collections API, so have those both ready and/or imported.
import java.util.LinkedList;
import java.util.Random;
/** Timing class: measure big-O complexity and runtime of data structures.
*
* Compare algorithms, test structures, and verify expected big-O behavior.
*
* This program is intended to be run on the command line like so:
*
* java Timing > output.txt
*
*/
public class Timing {
// Tests
public static void main(String[] args) {
linked_list_add_test();
linked_list_add_remove_test();
}
The code is implemented as two tests. One is a test that just adds things to a list, and tests that the amortized cost of a dynamically expanding list is O(1).
The second add-remove test successively adds and removes items from a list, in exactly the same sequence, and tests the amount of time it takes.
Output
N, Add Amortized Walltime Per 1k Builtin (us), Add Amortized Walltime Per 1k Mine (us) 1024, 31.250, 18.555 2048, 15.137, 20.508 4096, 17.822, 8.301 8192, 17.944, 8.301 16384, 14.099, 12.085 32768, 10.742, 7.965 65536, 10.300, 7.248 131072, 10.597, 7.721 262144, 11.223, 9.842 N, Add Remove Amortized Walltime Per 1k Builtin (us), Add Remove Amortized Walltime Per 1k Mine (us) 1024, 53.711, 41.992 2048, 39.551, 19.043 4096, 23.438, 24.658 8192, 22.949, 18.677 16384, 22.949, 19.165 32768, 22.675, 20.172 65536, 23.087, 20.065 131072, 23.651, 19.623 262144, 23.518, 19.264