Code inside - Improve the performance - session 2
The session 1 gave two problems to think and solve:
- What is code behind of the class and where we find it.
- Do we need to choose the another class to store our data (books, orders, customers) and what is the priorities to choose them.
Assume that ArrayList is chosen to store data. This session looks inside it:
Link 1: https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
Link 2: http://developer.classpath.org/doc/java/util/ArrayList-source.html
From link 1, we notice:
- Resizable-array: it is the normal array
- Capacity: size of the array used to store the elements in the list. This can increased or reduced.
- Not synchronized (no support the multi threads access)
From link 2, we notice:
- private transient E[] data. We only to care about the array E[] where E is parameter of the array: ArrayList<Integer>, ArrayList<Book>,...
- DEFAULT_CAPACITY = 10: the user can provice capacity; otherwise value 10 is used
Some methods that make the program's performance becomes bad:
- indexOf(Object e) or lastIndexOf: use the for loop: "for (int i = 0; i < size; i++)"
- ensureCapacity(): expand the array, call System.arraycopy (this method takes time to copy)
- add(E e): call ensureCapacity(size + 1) that can extend the array
- contains(Object e): call indexOf method
- remove(): call System.arraycopy (this method takes time to copy)
Some methods are fast:
- get(int index): go directly to the specific address (offset) and retrieve it.
We can see that Array is very fast in getting the elements based on the index.
The performance is bad in insert, search, remove.
In the example program, book is not retrieved by the index. So ArrayList is not suitable to use in this case.
Next think: Which data structure should be used in order to replace the ArrayList?
*** Thank you for reading - Keep study hard ***
(*) Cover photo is retrieved from https://www.raconteur.net/wp-content/uploads/2021/03/transform-fast.jpg
Perfect entertainment theme.
Listen to online radio stations at the site: https://internetradiohoren.de/
Am interesting to learn these languages
https://downloadnox.onl/ https://vidmate.cool/ https://vlc.onl/