Getting the Most from Map Data Structures in Android. Saborido, R., Morales, R., Khomh, F., Gu�h�neuc, Y., & Antoniol, G. Journal of Empirical Software Engineering (EMSE), 23(5):2829–2864, Springer, October, 2018. 35 pages.Paper abstract bibtex A map is a data structure that is commonly used to store data as key-value pairs and retrieve data as keys, values, or key-value pairs. Although Java offers different map implementation classes, Android SDK offers other implementations supposed to be more efficient than HashMap: ArrayMap and SparseArray variants (SparseArray, LongSparseArray, SparseIntArray, SparseLongArray, and SparseBooleanArray). Yet, the performance of these implementations in terms of CPU time, memory usage, and energy consumption is lacking in the official Android documentation; although saving CPU, memory, and energy is a major concern of users wanting to increase battery life. Consequently, we study the use of map implementations by Android developers in two ways. First, we perform an observational study of 5713 Android apps in GitHub. Second, we conduct a survey to assess developers' perspective on Java and Android map implementations. Then, we perform an experimental study comparing HashMap, ArrayMap, and SparseArray variants map implementations in terms of CPU time, memory usage, and energy consumption. We conclude with guidelines for choosing among the map implementations: HashMap is preferable over ArrayMap to improve energy efficiency of apps, and SparseArray variants should be used instead of HashMap and ArrayMap when keys are primitive types.
@ARTICLE{Saborido18-EMSE-AndroidMaps,
AUTHOR = {Rub�n Saborido and Rodrigo Morales and Foutse Khomh and
Yann-Ga�l Gu�h�neuc and Giuliano Antoniol},
JOURNAL = {Journal of Empirical Software Engineering (EMSE)},
TITLE = {Getting the Most from Map Data Structures in Android},
YEAR = {2018},
MONTH = {October},
NOTE = {35 pages.},
NUMBER = {5},
PAGES = {2829--2864},
VOLUME = {23},
EDITOR = {Robert Feldt and Thomas Zimmermann},
KEYWORDS = {Topic: <b>Program comprehension</b>, Venue: <b>EMSE</b>},
PUBLISHER = {Springer},
URL = {http://www.ptidej.net/publications/documents/EMSE18b.doc.pdf},
ABSTRACT = {A map is a data structure that is commonly used to store
data as key-value pairs and retrieve data as keys, values, or
key-value pairs. Although Java offers different map implementation
classes, Android SDK offers other implementations supposed to be more
efficient than HashMap: ArrayMap and SparseArray variants
(SparseArray, LongSparseArray, SparseIntArray, SparseLongArray, and
SparseBooleanArray). Yet, the performance of these implementations in
terms of CPU time, memory usage, and energy consumption is lacking in
the official Android documentation; although saving CPU, memory, and
energy is a major concern of users wanting to increase battery life.
Consequently, we study the use of map implementations by Android
developers in two ways. First, we perform an observational study of
5713 Android apps in GitHub. Second, we conduct a survey to assess
developers' perspective on Java and Android map implementations.
Then, we perform an experimental study comparing HashMap, ArrayMap,
and SparseArray variants map implementations in terms of CPU time,
memory usage, and energy consumption. We conclude with guidelines for
choosing among the map implementations: HashMap is preferable over
ArrayMap to improve energy efficiency of apps, and SparseArray
variants should be used instead of HashMap and ArrayMap when keys are
primitive types.}
}
Downloads: 0
{"_id":"DRXnfspJgz7aE6QB9","bibbaseid":"saborido-morales-khomh-guhneuc-antoniol-gettingthemostfrommapdatastructuresinandroid-2018","downloads":0,"creationDate":"2018-03-10T03:16:37.633Z","title":"Getting the Most from Map Data Structures in Android","author_short":["Saborido, R.","Morales, R.","Khomh, F.","Gu�h�neuc, Y.","Antoniol, G."],"year":2018,"bibtype":"article","biburl":"http://www.yann-gael.gueheneuc.net/Work/Publications/Biblio/complete-bibliography.bib","bibdata":{"bibtype":"article","type":"article","author":[{"firstnames":["Rub�n"],"propositions":[],"lastnames":["Saborido"],"suffixes":[]},{"firstnames":["Rodrigo"],"propositions":[],"lastnames":["Morales"],"suffixes":[]},{"firstnames":["Foutse"],"propositions":[],"lastnames":["Khomh"],"suffixes":[]},{"firstnames":["Yann-Ga�l"],"propositions":[],"lastnames":["Gu�h�neuc"],"suffixes":[]},{"firstnames":["Giuliano"],"propositions":[],"lastnames":["Antoniol"],"suffixes":[]}],"journal":"Journal of Empirical Software Engineering (EMSE)","title":"Getting the Most from Map Data Structures in Android","year":"2018","month":"October","note":"35 pages.","number":"5","pages":"2829–2864","volume":"23","editor":[{"firstnames":["Robert"],"propositions":[],"lastnames":["Feldt"],"suffixes":[]},{"firstnames":["Thomas"],"propositions":[],"lastnames":["Zimmermann"],"suffixes":[]}],"keywords":"Topic: <b>Program comprehension</b>, Venue: <b>EMSE</b>","publisher":"Springer","url":"http://www.ptidej.net/publications/documents/EMSE18b.doc.pdf","abstract":"A map is a data structure that is commonly used to store data as key-value pairs and retrieve data as keys, values, or key-value pairs. Although Java offers different map implementation classes, Android SDK offers other implementations supposed to be more efficient than HashMap: ArrayMap and SparseArray variants (SparseArray, LongSparseArray, SparseIntArray, SparseLongArray, and SparseBooleanArray). Yet, the performance of these implementations in terms of CPU time, memory usage, and energy consumption is lacking in the official Android documentation; although saving CPU, memory, and energy is a major concern of users wanting to increase battery life. Consequently, we study the use of map implementations by Android developers in two ways. First, we perform an observational study of 5713 Android apps in GitHub. Second, we conduct a survey to assess developers' perspective on Java and Android map implementations. Then, we perform an experimental study comparing HashMap, ArrayMap, and SparseArray variants map implementations in terms of CPU time, memory usage, and energy consumption. We conclude with guidelines for choosing among the map implementations: HashMap is preferable over ArrayMap to improve energy efficiency of apps, and SparseArray variants should be used instead of HashMap and ArrayMap when keys are primitive types.","bibtex":"@ARTICLE{Saborido18-EMSE-AndroidMaps,\r\n AUTHOR = {Rub�n Saborido and Rodrigo Morales and Foutse Khomh and \r\n Yann-Ga�l Gu�h�neuc and Giuliano Antoniol},\r\n JOURNAL = {Journal of Empirical Software Engineering (EMSE)},\r\n TITLE = {Getting the Most from Map Data Structures in Android},\r\n YEAR = {2018},\r\n MONTH = {October},\r\n NOTE = {35 pages.},\r\n NUMBER = {5},\r\n PAGES = {2829--2864},\r\n VOLUME = {23},\r\n EDITOR = {Robert Feldt and Thomas Zimmermann},\r\n KEYWORDS = {Topic: <b>Program comprehension</b>, Venue: <b>EMSE</b>},\r\n PUBLISHER = {Springer},\r\n URL = {http://www.ptidej.net/publications/documents/EMSE18b.doc.pdf},\r\n ABSTRACT = {A map is a data structure that is commonly used to store \r\n data as key-value pairs and retrieve data as keys, values, or \r\n key-value pairs. Although Java offers different map implementation \r\n classes, Android SDK offers other implementations supposed to be more \r\n efficient than HashMap: ArrayMap and SparseArray variants \r\n (SparseArray, LongSparseArray, SparseIntArray, SparseLongArray, and \r\n SparseBooleanArray). Yet, the performance of these implementations in \r\n terms of CPU time, memory usage, and energy consumption is lacking in \r\n the official Android documentation; although saving CPU, memory, and \r\n energy is a major concern of users wanting to increase battery life. \r\n Consequently, we study the use of map implementations by Android \r\n developers in two ways. First, we perform an observational study of \r\n 5713 Android apps in GitHub. Second, we conduct a survey to assess \r\n developers' perspective on Java and Android map implementations. \r\n Then, we perform an experimental study comparing HashMap, ArrayMap, \r\n and SparseArray variants map implementations in terms of CPU time, \r\n memory usage, and energy consumption. We conclude with guidelines for \r\n choosing among the map implementations: HashMap is preferable over \r\n ArrayMap to improve energy efficiency of apps, and SparseArray \r\n variants should be used instead of HashMap and ArrayMap when keys are \r\n primitive types.}\r\n}\r\n\r\n","author_short":["Saborido, R.","Morales, R.","Khomh, F.","Gu�h�neuc, Y.","Antoniol, G."],"editor_short":["Feldt, R.","Zimmermann, T."],"key":"Saborido18-EMSE-AndroidMaps","id":"Saborido18-EMSE-AndroidMaps","bibbaseid":"saborido-morales-khomh-guhneuc-antoniol-gettingthemostfrommapdatastructuresinandroid-2018","role":"author","urls":{"Paper":"http://www.ptidej.net/publications/documents/EMSE18b.doc.pdf"},"keyword":["Topic: <b>Program comprehension</b>","Venue: <b>EMSE</b>"],"metadata":{"authorlinks":{"gu�h�neuc, y":"https://bibbase.org/show?bib=http%3A%2F%2Fwww.yann-gael.gueheneuc.net%2FWork%2FPublications%2FBiblio%2Fcomplete-bibliography.bib&msg=embed","morales, r":"https://www.ptidej.net/Members/moralesr"}},"downloads":0,"html":""},"search_terms":["getting","map","data","structures","android","saborido","morales","khomh","gu�h�neuc","antoniol"],"keywords":["topic: <b>program comprehension</b>","venue: <b>emse</b>"],"authorIDs":["AfJhKcg96muyPdu7S","FyQSF5CQAcHMSbkXr"],"dataSources":["SnNYgSkXkvyAsckPN","8vn5MSGYWB4fAx9Z4","p4Z23KnwhEH5amzu8"]}