{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,30]],"date-time":"2026-01-30T05:35:12Z","timestamp":1769751312657,"version":"3.49.0"},"reference-count":58,"publisher":"Springer Science and Business Media LLC","issue":"6","license":[{"start":{"date-parts":[[2019,4,17]],"date-time":"2019-04-17T00:00:00Z","timestamp":1555459200000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Empir Software Eng"],"published-print":{"date-parts":[[2019,12]]},"DOI":"10.1007\/s10664-019-09703-y","type":"journal-article","created":{"date-parts":[[2019,4,17]],"date-time":"2019-04-17T12:23:24Z","timestamp":1555503804000},"page":"3484-3513","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":13,"title":["iPerfDetector: Characterizing and detecting performance anti-patterns in iOS applications"],"prefix":"10.1007","volume":"24","author":[{"given":"Sara Seif","family":"Afjehei","sequence":"first","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4027-0905","authenticated-orcid":false,"given":"Tse-Hsun (Peter)","family":"Chen","sequence":"additional","affiliation":[]},{"given":"Nikolaos","family":"Tsantalis","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2019,4,17]]},"reference":[{"key":"9703_CR1","unstructured":"Afjehei SS, Chen T-HP (2018) iOS performance issue reports. \nhttps:\/\/docs.google.com\/spreadsheets\/d\/1hX8IBcYIVv6x4nWfWczT5oLV0b1SMQK03q6_xC9B8eQ\/edit#gid=1079185239\n\n. Accessed 2018-07-23"},{"key":"9703_CR2","unstructured":"Apple (2012) Practical memory management. \nhttps:\/\/developer.apple.com\/library\/archive\/documentation\/Cocoa\/Conceptual\/MemoryMgmt\/Articles\/mmPractical.html\n\n. Accessed 2018-06-15"},{"key":"9703_CR3","unstructured":"Apple (2015) More core data and concurrency. \nhttps:\/\/cocoacasts.com\/more-core-data-and-concurrency\n\n. Accessed 2018-06-15"},{"key":"9703_CR4","unstructured":"Apple (2017) Apple threading programming guide. \nhttps:\/\/developer.apple.com\/documentation\/code_diagnostics\/main_thread_checker\n\n. Accessed 2018-06-15"},{"key":"9703_CR5","unstructured":"Apple (2017) Nsmanagedobject programming guide. \nhttps:\/\/developer.apple.com\/documentation\/coredata\/nsmanagedobjectcontext\n\n. Accessed 2018-06-15"},{"key":"9703_CR6","unstructured":"Apple (2018a) Apple guide on swift programming language. \nhttps:\/\/developer.apple.com\/swift\/\n\n. Accessed 2018-06-15"},{"key":"9703_CR7","unstructured":"Apple (2018b) Apple UIKit. \nhttps:\/\/developer.apple.com\/documentation\/uikit\n\n. Accessed 2018-06-15"},{"key":"9703_CR8","unstructured":"Apple (2018c) Instruments. \nhttps:\/\/help.apple.com\/instruments\/mac\/current\/#\/dev7b09c84f5\/\n\n. Accessed 2018-07-23"},{"key":"9703_CR9","unstructured":"Apple (2018d) Making core data your model layer. \nhttps:\/\/developer.apple.com\/documentation\/coredata\/making_core_data_your_model_layer\n\n. Accessed 2018-06-15"},{"key":"9703_CR10","unstructured":"Apple (2018e) Model-view-controller. \nhttps:\/\/developer.apple.com\/library\/archive\/documentation\/General\/Conceptual\/DevPedia-CocoaCore\/MVC.html\n\n. Accessed 2018-06-15"},{"key":"9703_CR11","unstructured":"Apple (2018f) Monitoring your app\u2019s graphics activity. \nhttps:\/\/developer.apple.com\/documentation\/metal\/tools_profiling_and_debugging\/gpu_activity_monitors\/monitoring_your_app_s_graphics_activity\n\n. Accessed 2018-07-23"},{"key":"9703_CR12","unstructured":"Apple (2018g) Using core data in the background. \nhttps:\/\/developer.apple.com\/documentation\/coredata\/using_core_data_in_the_background\n\n. Accessed 2018-06-15"},{"key":"9703_CR13","doi-asserted-by":"crossref","unstructured":"Cassee N, Pinto G, Castor F, Serebrenik A (2018) How swift developers handle errors. In: 15Th international conference on mining software repositories (MSR 2018)","DOI":"10.1145\/3196398.3196428"},{"key":"9703_CR14","unstructured":"Chen T-H, Weiyi S, Jiang ZM, Hassan AE, Nasser M, Flora P (2014) Detecting performance anti-patterns for applications developed using object-relational mapping. In: Proceedings of the 36th international conference on software engineering (ICSE), pp 1001\u20131012"},{"key":"9703_CR15","doi-asserted-by":"crossref","unstructured":"Chen T.-H., Shang W, Hassan AE, Nasser M, Flora P (2016a) Detecting problems in the database access code of large scale systems: an industrial experience report. In: Proceedings of the 38th international conference on software engineering companion, ICSE \u201916, pp 71\u201380","DOI":"10.1145\/2889160.2889228"},{"issue":"12","key":"9703_CR16","doi-asserted-by":"publisher","first-page":"1148","DOI":"10.1109\/TSE.2016.2553039","volume":"42","author":"T-H Chen","year":"2016","unstructured":"Chen T-H, Shang W, Jiang ZM, Hassan AE, Nasser M, Flora P (2016b) Finding and evaluating the performance impact of redundant data access for applications that are developed using object-relational mapping frameworks. IEEE Trans Softw Eng 42(12):1148\u20131161","journal-title":"IEEE Trans Softw Eng"},{"key":"9703_CR17","unstructured":"Chen T-H, Syer MD, Shang W, Jiang ZM, Hassan AE, Nasser M, Flora P (2017) Analytics-driven load testing: an industrial experience report on load testing of large-scale systems. In: Proceedings of the 39th international conference on software engineering: software engineering in practice track, ICSE-SEIP \u201917, pp 243\u2013252"},{"issue":"3","key":"9703_CR18","doi-asserted-by":"publisher","first-page":"1422","DOI":"10.1007\/s10664-017-9545-x","volume":"23","author":"S Chowdhury","year":"2018","unstructured":"Chowdhury S, Di Nardo S, Hindle A, Jiang ZMJ (2018) An exploratory study on assessing the energy impact of logging on android applications. Empir Softw Eng 23(3):1422\u20131456","journal-title":"Empir Softw Eng"},{"key":"9703_CR19","doi-asserted-by":"crossref","unstructured":"Cruz L, Abreu R (2017) Performance-based guidelines for energy efficient mobile applications. In: 2017 IEEE\/ACM 4th international conference on mobile software engineering and systems (MOBILESoft). IEEE, pp 46\u201357","DOI":"10.1109\/MOBILESoft.2017.19"},{"key":"9703_CR20","unstructured":"Facebook (2017) Facebook\u2019s infer static analysis tool. \nhttp:\/\/fbinfer.com\/\n\n. Accessed 2018-06-15"},{"key":"9703_CR21","unstructured":"Github (2018) Trending swift projects on github. \nhttps:\/\/github.com\/trending\/swift?since=monthly\n\n. Accessed 2018-06-15"},{"key":"9703_CR22","unstructured":"Gottschalk M, Jelschen J, Winter A (2014) Saving energy on mobile devices by refactoring. In: EnviroInfo, pp 437\u2013444"},{"key":"9703_CR23","doi-asserted-by":"crossref","unstructured":"Grechanik M, Fu C, Xie Q (2012) Automatically finding performance problems with feedback-directed learning software testing. In: Proceedings of the 34th international conference on software engineering (ICSE), pp 156\u2013166","DOI":"10.1109\/ICSE.2012.6227197"},{"key":"9703_CR24","unstructured":"Guide ACDP (2017) Core data programming guide. \nhttps:\/\/developer.apple.com\/documentation\/coredata\n\n. Accessed 2018-06-15"},{"key":"9703_CR25","doi-asserted-by":"crossref","unstructured":"Habchi S, Hecht G, Rouvoy R, Moha N (2017) Code smells in ios apps: how do they compare to android?. In: Proceedings of the 4th international conference on mobile software engineering and systems. IEEE Press, pp 110\u2013121","DOI":"10.1109\/MOBILESoft.2017.11"},{"key":"9703_CR26","doi-asserted-by":"crossref","unstructured":"Hecht G, Moha N, Rouvoy R (2016) An empirical study of the performance impacts of Android code smells. In: Proceedings of the international workshop on mobile software engineering and systems. ACM, pp 59\u201369","DOI":"10.1145\/2897073.2897100"},{"key":"9703_CR27","doi-asserted-by":"crossref","unstructured":"Hu H, Bezemer C-P, Hassan AE (2018) Studying the consistency of star ratings and the complaints in 1 & 2-star user reviews for top free cross-platform android and iOS apps. Empir Softw Eng","DOI":"10.1007\/s10664-018-9604-y"},{"key":"9703_CR28","doi-asserted-by":"crossref","unstructured":"Jiang ZM, Hassan AE, Hamann G, Flora P (2008) Automatic identification of load testing problems. In: Proceedings of 24th international conference on software maintenance (ICSM), pp 307\u2013316","DOI":"10.1109\/ICSM.2008.4658079"},{"key":"9703_CR29","doi-asserted-by":"crossref","unstructured":"Jin G, Song L, Shi X, Scherpelz J, Lu S (2012a) Understanding and detecting real-world performance bugs. In: Proceedings of the 33rd ACM SIGPLAN conference on programming language design and implementation, PLDI \u201912","DOI":"10.1145\/2254064.2254075"},{"key":"9703_CR30","doi-asserted-by":"crossref","unstructured":"Jin G, Song L, Shi X, Scherpelz J, Lu S (2012b) Understanding and detecting real-world performance bugs. In: Proceedings of the 33rd ACM SIGPLAN conference on programming language design and implementation, PLDI \u201912, pp 77\u201388","DOI":"10.1145\/2254064.2254075"},{"issue":"6","key":"9703_CR31","doi-asserted-by":"publisher","first-page":"77","DOI":"10.1145\/2345156.2254075","volume":"47","author":"G Jin","year":"2012","unstructured":"Jin G, Song L, Shi X, Scherpelz J, Lu S (2012c) Understanding and detecting real-world performance bugs. ACM SIGPLAN Not 47(6):77\u201388","journal-title":"ACM SIGPLAN Not"},{"key":"9703_CR32","doi-asserted-by":"crossref","unstructured":"Jindal A, Pathak A, Hu YC, Midkiff S (2013) On death, taxes, and sleep disorder bugs in smartphones. In: Proceedings of the workshop on power-aware computing and systems. ACM, p 1","DOI":"10.1145\/2525526.2525845"},{"issue":"3","key":"9703_CR33","doi-asserted-by":"publisher","first-page":"70","DOI":"10.1109\/MS.2014.50","volume":"32","author":"H Khalid","year":"2015","unstructured":"Khalid H, Shihab E, Nagappan M, Hassan AE (2015) What do mobile app users complain about? IEEE Softw 32(3):70\u201377","journal-title":"IEEE Softw"},{"key":"9703_CR34","doi-asserted-by":"crossref","unstructured":"Lin Y, Okur S, Dig D (2015) Study and refactoring of android asynchronous programming (t). In: 2015 30th IEEE\/ACM international conference on automated software engineering (ASE). IEEE, pp 224\u2013235","DOI":"10.1109\/ASE.2015.50"},{"key":"9703_CR35","doi-asserted-by":"crossref","unstructured":"Liu Y, Xu C, Cheung S-C (2014) Characterizing and detecting performance bugs for smartphone applications. In: Proceedings of the 36th international conference on software engineering. ACM, pp 1013\u20131024","DOI":"10.1145\/2568225.2568229"},{"key":"9703_CR36","doi-asserted-by":"crossref","unstructured":"Mannan UA, Ahmed I, Almurshed RAM, Dig D, Jensen C (2016) Understanding code smells in android applications. In: 2016 IEEE\/ACM international conference on mobile software engineering and systems (MOBILESoft). IEEE, pp 225\u2013236","DOI":"10.1145\/2897073.2897094"},{"issue":"9","key":"9703_CR37","doi-asserted-by":"publisher","first-page":"817","DOI":"10.1109\/TSE.2016.2630689","volume":"43","author":"W Martin","year":"2017","unstructured":"Martin W, Sarro F, Jia Y, Zhang Y, Harman M (2017) A survey of app store analysis for software engineering. IEEE Trans Softw Eng 43(9):817\u2013847","journal-title":"IEEE Trans Softw Eng"},{"key":"9703_CR38","volume-title":"Refactoring: improving the design of existing code","author":"M Fowler","year":"1999","unstructured":"Fowler M, Beck K, Brant J, Opdyke W, Roberts D (1999) Refactoring: improving the design of existing code. Addison-Wesley, Reading"},{"key":"9703_CR39","doi-asserted-by":"crossref","unstructured":"McDonnell T, Ray B, Kim M (2013) An empirical study of api stability and adoption in the android ecosystem. In: Proceedings of the 2013 IEEE international conference on software maintenance, ICSM \u201913, pp 70\u201379","DOI":"10.1109\/ICSM.2013.18"},{"key":"9703_CR40","unstructured":"Medium (2015) Diagnose and solve performance problems with xcode instruments. \nhttps:\/\/medium.com\/@zhenya.peteliev\/diagnose-and-solve-performance-problem-with-xcode-instruments-5c25c27f21d5\n\n. Accessed 2018-11-05"},{"key":"9703_CR41","unstructured":"Medium (2016) 21 amazing open source iOS apps written in swift. \nhttps:\/\/medium.mybridge.co\/21-amazing-open-source-ios-apps-written-in-swift-5e835afee98e\n\n. Accessed 2018-06-11"},{"key":"9703_CR42","unstructured":"Morales R, Saborido R, Khomh F, Chicano F, Antoniol G (2017) Earmo: an energy-aware refactoring approach for mobile apps. IEEE Trans Softw Eng, (1):1\u20131"},{"key":"9703_CR43","doi-asserted-by":"crossref","unstructured":"Nistor A, Jiang T, Tan L (2013a) Discovering, reporting, and fixing performance bugs. In: Proceedings of the 10th working conference on mining software repositories. IEEE Press, pp 237\u2013246","DOI":"10.1109\/MSR.2013.6624035"},{"key":"9703_CR44","doi-asserted-by":"crossref","unstructured":"Nistor A, Song L, Marinov D, Lu S (2013b) Toddler: detecting performance problems via similar memory-access patterns. In: Proceedings of the 2013 international conference on software engineering, ICSE \u201913, pp 562\u2013571","DOI":"10.1109\/ICSE.2013.6606602"},{"key":"9703_CR45","doi-asserted-by":"crossref","unstructured":"Nistor A, Chang P-C, Radoi C, Lu S (2015) Caramel: detecting and fixing performance problems that have non-intrusive fixes. In: Proceedings of the 2015 international conference on software engineering, ICSE \u201915, pp 902\u2013912","DOI":"10.1109\/ICSE.2015.100"},{"key":"9703_CR46","doi-asserted-by":"crossref","unstructured":"Okur S, Hartveld DL, Dig D, Deursen AV (2014) A study and toolkit for asynchronous programming in C#. In: Proceedings of the 36th international conference on software engineering. ACM, pp 1117\u20131127","DOI":"10.1145\/2568225.2568309"},{"key":"9703_CR47","doi-asserted-by":"crossref","unstructured":"Palomba F, Di Nucci D, Panichella A, Zaidman A, De Lucia A (2017) Lightweight detection of android-specific code smells: the adoctor project. In: Proceedings of the 24th international conference on software analysis, evolution and reengineering, SANER \u201917, pp 487\u2013491","DOI":"10.1109\/SANER.2017.7884659"},{"key":"9703_CR48","doi-asserted-by":"crossref","unstructured":"Pathak A, Hu YC, Zhang M (2011) Bootstrapping energy debugging on smartphones: a first look at energy bugs in mobile devices. In: Proceedings of the 10th ACM workshop on hot topics in networks. ACM, p 5","DOI":"10.1145\/2070562.2070567"},{"key":"9703_CR49","doi-asserted-by":"crossref","unstructured":"Pathak A, Hu YC, Zhang M (2012) Where is the energy spent inside my app?: fine grained energy accounting on smartphones with eprof. In: Proceedings of the 7th ACM European conference on computer systems. ACM, pp 29\u201342","DOI":"10.1145\/2168836.2168841"},{"key":"9703_CR50","doi-asserted-by":"crossref","unstructured":"Rebou\u00e7as M, Pinto G, Ebert F, Torres W, Serebrenik A, Castor F (2016) An empirical study on the usage of the swift programming language. In: 2016 IEEE 23rd international conference on software analysis, evolution, and reengineering (SANER). IEEE, pp 634\u2013638","DOI":"10.1109\/SANER.2016.66"},{"key":"9703_CR51","unstructured":"RedMonk (2018) The RedMonk programming language rankings: January 2018. \nhttp:\/\/redmonk.com\/sogrady\/2018\/03\/07\/language-rankings-1-18\/\n\n. Accessed 2018-06-11"},{"key":"9703_CR52","unstructured":"Reimann J, Brylski M, A\u00dfmann U (2014) A tool-supported quality smell catalogue for android developers. In: Proceeding of the conference modellierung 2014 in the workshop modellbasierte und modellgetriebene softwaremodernisierung\u2013MMSM"},{"key":"9703_CR53","unstructured":"Smith CU, Williams LG (2001) Software performance antipatterns; common performance problems and their solutions. In: Int CMG conference, pp 797\u2013806"},{"key":"9703_CR54","unstructured":"Statista (2018) Number of apps available in leading app stores. \nhttps:\/\/www.statista.com\/statistics\/276623\/number-of-apps-available-in-leading-app-stores\/\n\n. Accessed 2018-07-23"},{"key":"9703_CR55","unstructured":"Statistia (2018) Number of apps available in leading app stores as of 1st quarter 2018. \nhttps:\/\/www.statista.com\/statistics\/276623\/number-of-apps-available-in-leading-app-stores\/\n\n. Accessed 2018-06-15"},{"key":"9703_CR56","unstructured":"SwiftAST (2018) Swift-ast tool on github. \nhttps:\/\/github.com\/yanagiba\/swift-ast\n\n. Accessed 2018-6-30"},{"key":"9703_CR57","unstructured":"Syer MD, Nagappan M, Hassan AE, Adams B (2013) Revisiting prior empirical findings for mobile apps: an empirical case study on the 15 most popular open-source android apps. In: Proceedings of the 2013 conference of the center for advanced studies on collaborative research, CASCON \u201913, pp 283\u2013297"},{"key":"9703_CR58","doi-asserted-by":"crossref","unstructured":"Zaman S, Adams B, Hassan AE (2012) A qualitative study on performance bugs. In: Proceedings of the 9th IEEE working conference on mining software repositories. IEEE Press, pp 199\u2013208","DOI":"10.1109\/MSR.2012.6224281"}],"container-title":["Empirical Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-019-09703-y.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/article\/10.1007\/s10664-019-09703-y\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-019-09703-y.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2020,4,15]],"date-time":"2020-04-15T23:28:14Z","timestamp":1586993294000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/s10664-019-09703-y"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,4,17]]},"references-count":58,"journal-issue":{"issue":"6","published-print":{"date-parts":[[2019,12]]}},"alternative-id":["9703"],"URL":"https:\/\/doi.org\/10.1007\/s10664-019-09703-y","relation":{},"ISSN":["1382-3256","1573-7616"],"issn-type":[{"value":"1382-3256","type":"print"},{"value":"1573-7616","type":"electronic"}],"subject":[],"published":{"date-parts":[[2019,4,17]]},"assertion":[{"value":"17 April 2019","order":1,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}}]}}