{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,20]],"date-time":"2025-06-20T04:08:51Z","timestamp":1750392531819,"version":"3.41.0"},"reference-count":86,"publisher":"Association for Computing Machinery (ACM)","issue":"FSE","funder":[{"DOI":"10.13039\/501100021171","name":"Guangdong Basic and Applied Basic Research Foundation","doi-asserted-by":"crossref","award":["2024A1515010145"],"award-info":[{"award-number":["2024A1515010145"]}],"id":[{"id":"10.13039\/501100021171","id-type":"DOI","asserted-by":"crossref"}]},{"name":"Shenzhen Science and Technology Program","award":["ZDSYS20230626091302006"],"award-info":[{"award-number":["ZDSYS20230626091302006"]}]}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. ACM Softw. Eng."],"published-print":{"date-parts":[[2025,6,19]]},"abstract":"<jats:p>With the increasing demand for handling large-scale and complex data, data science (DS) applications often suffer from long execution time and rapid RAM exhaustion, which leads to many serious issues like unbearable delays and crashes in financial transactions. As popular DS libraries are frequently used in these applications, their performance bugs (PBs) are a major contributing factor to these issues, making it crucial to address them for improving overall application performance. However, PBs in popular DS libraries remain largely unexplored. To address this gap, we conducted a study of 202 PBs collected from seven popular DS libraries. Our study examined the impact of PBs and proposed a taxonomy for common root causes. We found over half of the PBs arise from inefficient data processing operations, especially within data structure. We also explored the effort required to locate their root causes and fix these bugs, along with the challenges involved. Notably, around 20% of the PBs could be fixed using simple strategies (e.g. Conditions Optimizing), suggesting the potential for automated repair approaches. Our findings highlight the severity of PBs in core DS libraries and offer insights for developing high-performance libraries and detecting PBs. Furthermore, we derived test rules from our identified root causes, identifying eight PBs, of which four were confirmed, demonstrating the practical utility of our findings.<\/jats:p>","DOI":"10.1145\/3729374","type":"journal-article","created":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T15:15:34Z","timestamp":1750346134000},"page":"2335-2358","source":"Crossref","is-referenced-by-count":0,"title":["Towards Understanding Performance Bugs in Popular Data Science Libraries"],"prefix":"10.1145","volume":"2","author":[{"ORCID":"https:\/\/orcid.org\/0009-0008-7709-2923","authenticated-orcid":false,"given":"Haowen","family":"Yang","sequence":"first","affiliation":[{"name":"The Chinese University of Hong Kong, Shenzhen (CUHK-Shenzhen), Shenzhen, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0008-4679-1297","authenticated-orcid":false,"given":"Zhengda","family":"Li","sequence":"additional","affiliation":[{"name":"The Chinese University of Hong Kong, Shenzhen (CUHK-Shenzhen), Shenzhen, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-2304-9619","authenticated-orcid":false,"given":"Zhiqing","family":"Zhong","sequence":"additional","affiliation":[{"name":"The Chinese University of Hong Kong, Shenzhen (CUHK-Shenzhen), Shenzhen, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-3955-1195","authenticated-orcid":false,"given":"Xiaoying","family":"Tang","sequence":"additional","affiliation":[{"name":"The Chinese University of Hong Kong, Shenzhen (CUHK-Shenzhen), Shenzhen, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-3377-8129","authenticated-orcid":false,"given":"Pinjia","family":"He","sequence":"additional","affiliation":[{"name":"The Chinese University of Hong Kong, Shenzhen (CUHK-Shenzhen), Shenzhen, China"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2025,6,19]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"[n. d.]. 8 Best Python Libraries For Data Science. https:\/\/www.bairesdev.com\/blog\/best-python-libraries-data-science\/ Accessed: [2024.02.17]"},{"key":"e_1_2_1_2_1","unstructured":"[n. d.]. Freqtrade. https:\/\/github.com\/freqtrade\/freqtrade Accessed: [2023.12.17]"},{"key":"e_1_2_1_3_1","unstructured":"[n. d.]. Freqtrade causing my VPS to crash. https:\/\/github.com\/freqtrade\/freqtrade\/issues\/3016 Accessed: [2023.12.17]"},{"key":"e_1_2_1_4_1","unstructured":"[n. d.]. https:\/\/github.com\/mwaskom\/seaborn. https:\/\/github.com\/scikit-learn\/scikit-learn\/issues\/15527 Accessed: [2023.12.17]"},{"key":"e_1_2_1_5_1","unstructured":"[n. d.]. Issue 15150 in Scikit-learn. https:\/\/github.com\/scikit-learn\/scikit-learn\/issues\/15150 Accessed: [2023.12.17]"},{"key":"e_1_2_1_6_1","unstructured":"[n. d.]. Issue 15527 in Scikit. https:\/\/github.com\/scikit-learn\/scikit-learn\/issues\/15527 Accessed: [2023.12.17]"},{"key":"e_1_2_1_7_1","unstructured":"[n. d.]. Issue 18921 in Scipy. https:\/\/github.com\/scipy\/scipy\/issues\/18921 Accessed: [2023.12.17]"},{"key":"e_1_2_1_8_1","unstructured":"[n. d.]. Issue 19010 in Numpy. https:\/\/github.com\/numpy\/numpy\/issues\/19010 Accessed: [2023.12.17]"},{"key":"e_1_2_1_9_1","unstructured":"[n. d.]. Issue 21242 in Scikit. https:\/\/github.com\/scikit-learn\/scikit-learn\/issues\/21242 Accessed: [2023.12.17]"},{"key":"e_1_2_1_10_1","unstructured":"[n. d.]. Issue 22949 in Numpy. https:\/\/github.com\/numpy\/numpy\/issues\/22949 Accessed: [2023.12.17]"},{"key":"e_1_2_1_11_1","unstructured":"[n. d.]. Issue 23209 in Pandas. https:\/\/github.com\/pandas-dev\/pandas\/issues\/23209 Accessed: [2023.12.17]"},{"key":"e_1_2_1_12_1","unstructured":"[n. d.]. Issue 23968 in Matplotlib. https:\/\/github.com\/matplotlib\/matplotlib\/issues\/23968 Accessed: [2023.12.17]"},{"key":"e_1_2_1_13_1","unstructured":"[n. d.]. Issue 24252 in Numpy. https:\/\/github.com\/numpy\/numpy\/issues\/24252 Accessed: [2023.12.17]"},{"key":"e_1_2_1_14_1","unstructured":"[n. d.]. Issue 24562 in Pandas. https:\/\/github.com\/pandas-dev\/pandas\/issues\/24562 Accessed: [2023.12.17]"},{"key":"e_1_2_1_15_1","unstructured":"[n. d.]. Issue 26098 in Scikit. https:\/\/github.com\/scikit-learn\/scikit-learn\/issues\/26098 Accessed: [2023.12.17]"},{"key":"e_1_2_1_16_1","unstructured":"[n. d.]. Issue 30552 in Pandas. https:\/\/github.com\/pandas-dev\/pandas\/issues\/30552 Accessed: [2023.12.17]"},{"key":"e_1_2_1_17_1","unstructured":"[n. d.]. Issue 32727 in Pandas. https:\/\/github.com\/pandas-dev\/pandas\/issues\/52016 Accessed: [2023.12.17]"},{"key":"e_1_2_1_18_1","unstructured":"[n. d.]. Issue 44106 in Pandas. https:\/\/github.com\/pandas-dev\/pandas\/issues\/44106 Accessed: [2023.12.17]"},{"key":"e_1_2_1_19_1","unstructured":"[n. d.]. Issue 44240 in Pandas. https:\/\/github.com\/pandas-dev\/pandas\/issues\/44240 Accessed: [2023.12.17]"},{"key":"e_1_2_1_20_1","unstructured":"[n. d.]. Issue 49929 in Pandas. https:\/\/github.com\/pandas-dev\/pandas\/issues\/49929 Accessed: [2023.12.17]"},{"key":"e_1_2_1_21_1","unstructured":"[n. d.]. Issue 52070 in Pandas. https:\/\/github.com\/pandas-dev\/pandas\/issues\/52070 Accessed: [2023.12.17]"},{"key":"e_1_2_1_22_1","unstructured":"[n. d.]. Issue 53574 in Pandas. https:\/\/github.com\/pandas-dev\/pandas\/issues\/53574 Accessed: [2023.12.17]"},{"key":"e_1_2_1_23_1","unstructured":"[n. d.]. OpenAI O1. https:\/\/openai.com\/o1\/ Accessed: [2025.02.20]"},{"key":"e_1_2_1_24_1","unstructured":"[n. d.]. Pok\u00e9mon Go makers call for calm as servers crash across Europe and US. https:\/\/www.theguardian.com\/technology\/2016\/jul\/16\/pokemon-go-server-crash-niantic-europe-us Accessed: [2023.12.17]"},{"key":"e_1_2_1_25_1","unstructured":"[n. d.]. Python Libraries for Data Science: A Comprehensive Guide. https:\/\/www.codemotion.com\/magazine\/languages\/python-libraries-data-science\/ Accessed: [2024.02.17]"},{"key":"e_1_2_1_26_1","unstructured":"[n. d.]. Requests. https:\/\/github.com\/psf\/requests Accessed: [2023.12.17]"},{"key":"e_1_2_1_27_1","volume-title":"d.]. Taylor Swift\u2019s \u2019Midnights","year":"2023","unstructured":"[n. d.]. Taylor Swift\u2019s \u2019Midnights\u2019 album crashes Spotify, leaving fans shocked; nearly 8,000 outages reported. https:\/\/www.foxbusiness.com\/entertainment\/taylor-swifts-midnights-album-crashes-spotify-fans-shocked-8000-outages-reported Accessed: [2023.12.17]"},{"key":"e_1_2_1_28_1","volume-title":"d.]. Top 10 Python Libraries for Data Science","year":"2024","unstructured":"[n. d.]. Top 10 Python Libraries for Data Science in 2024. https:\/\/www.geeksforgeeks.org\/python-libraries-for-data-science\/ Accessed: [2024.02.17]"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4842-3913-1"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1109\/icse-seip.2019.00042"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.48550\/arXiv.2406.11731"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1109\/msr59073.2023.00037"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","unstructured":"Ekaba Bisong and Ekaba Bisong. 2019. Matplotlib and seaborn. Building Machine Learning and Deep Learning Models on Google Cloud Platform: A Comprehensive Guide for Beginners 151\u2013165. https:\/\/doi.org\/10.1007\/978-1-4842-4470-8_12 10.1007\/978-1-4842-4470-8_12","DOI":"10.1007\/978-1-4842-4470-8_12"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","unstructured":"Sumon Biswas Mohammad Wardat and Hridesh Rajan. 2022. The Art and Practice of Data Science Pipelines. https:\/\/doi.org\/10.1145\/3510003.3510057 10.1145\/3510003.3510057","DOI":"10.1145\/3510003.3510057"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/3540250.3549123"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/3313831.3376729"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1109\/icpc58990.2023.00047"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","unstructured":"Tianyu Chen Lin Li Liuchuan Zhu Zongyang Li Xueqing Liu Guangtai Liang Qianxiang Wang and Tao Xie. 2023. VulLibGen: Generating names of vulnerability-affected packages via a large language model. arXiv preprint arXiv:2308.04662 https:\/\/doi.org\/10.18653\/v1\/2024.acl-long.527 10.18653\/v1\/2024.acl-long.527","DOI":"10.18653\/v1"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1109\/issre.2019.00017"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","unstructured":"Nadia Daoudi Kevin Allix Tegawend\u00e9 F Bissyand\u00e9 and Jacques Klein. 2022. A two-steps approach to improve the performance of android malware detectors. arXiv preprint arXiv:2205.08265 https:\/\/doi.org\/10.1109\/cybersecpods.2019.8885384 10.1109\/cybersecpods.2019.8885384","DOI":"10.1109\/cybersecpods.2019.8885384"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-019-09798-3"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/3641539"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1109\/ase.2017.8115662"},{"key":"e_1_2_1_44_1","volume-title":"Proceedings of the ACM\/IEEE 42nd International Conference on Software Engineering. 1435\u20131446","author":"Ding Zishuo","year":"2020","unstructured":"Zishuo Ding, Jinfu Chen, and Weiyi Shang. 2020. Towards the use of the readily available tests from the release pipeline as performance tests: Are we there yet? In Proceedings of the ACM\/IEEE 42nd International Conference on Software Engineering. 1435\u20131446."},{"key":"e_1_2_1_45_1","volume-title":"The essential guide to effect sizes: Statistical power, meta-analysis, and the interpretation of research results","author":"Ellis Paul D","unstructured":"Paul D Ellis. 2010. The essential guide to effect sizes: Statistical power, meta-analysis, and the interpretation of research results. Cambridge university press."},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/3445814.3446700"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/3377811.3380397"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","unstructured":"Daya Guo Dejian Yang Haowei Zhang Junxiao Song Ruoyu Zhang Runxin Xu Qihao Zhu Shirong Ma Peiyi Wang and Xiao Bi. 2025. Deepseek-r1: Incentivizing reasoning capability in llms via reinforcement learning. arXiv preprint arXiv:2501.12948 https:\/\/doi.org\/10.36227\/techrxiv.174742969.91776650\/v1 10.36227\/techrxiv.174742969.91776650\/v1","DOI":"10.36227\/techrxiv.174742969.91776650"},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/2961111.2962602"},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1038\/s41586-020-2649-2"},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/3338906.3342498"},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/3290605.3300500"},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1002\/pits.20234"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/3338906.3338955"},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/2345156.2254075"},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.1109\/icsm.2015.7332486"},{"key":"e_1_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/2568225.2568229"},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","unstructured":"Henry B Mann and Donald R Whitney. 1947. On a test of whether one of two random variables is stochastically larger than the other. The annals of mathematical statistics 50\u201360. https:\/\/doi.org\/10.2307\/2280514 10.2307\/2280514","DOI":"10.2307\/2280514"},{"key":"e_1_2_1_59_1","volume-title":"Towards Continuous Performance Assessment of Java Applications With PerfBot. In 2023 IEEE\/ACM 5th International Workshop on Bots in Software Engineering (BotSE). 6\u20138.","author":"Markusse Florian","year":"2023","unstructured":"Florian Markusse, Alexander Serebrenik, and Philipp Leitner. 2023. Towards Continuous Performance Assessment of Java Applications With PerfBot. In 2023 IEEE\/ACM 5th International Workshop on Bots in Software Engineering (BotSE). 6\u20138."},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.11613\/bm.2012.031"},{"key":"e_1_2_1_61_1","doi-asserted-by":"publisher","DOI":"10.25080\/majora-92bf1922-00a"},{"key":"e_1_2_1_62_1","doi-asserted-by":"publisher","DOI":"10.1109\/msr.2013.6624035"},{"key":"e_1_2_1_63_1","doi-asserted-by":"publisher","DOI":"10.1109\/icse.2013.6606602"},{"key":"e_1_2_1_64_1","volume-title":"2021 IEEE\/ACM 43rd International Conference on Software Engineering (ICSE). 473\u2013485","author":"Nusrat Fariha","year":"2021","unstructured":"Fariha Nusrat, Foyzul Hassan, Hao Zhong, and Xiaoyin Wang. 2021. How developers optimize virtual reality applications: A study of optimization commits in open source unity projects. In 2021 IEEE\/ACM 43rd International Conference on Software Engineering (ICSE). 473\u2013485."},{"key":"e_1_2_1_65_1","volume-title":"Proceedings of the 44th International Conference on Software Engineering. 1469\u20131481","author":"Patra Jibesh","year":"2022","unstructured":"Jibesh Patra and Michael Pradel. 2022. Nalin: learning from runtime behavior to find name-value inconsistencies in jupyter notebooks. In Proceedings of the 44th International Conference on Software Engineering. 1469\u20131481."},{"key":"e_1_2_1_66_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4842-0958-5_8"},{"key":"e_1_2_1_67_1","doi-asserted-by":"publisher","DOI":"10.1109\/eurospw51379.2020.00010"},{"key":"e_1_2_1_68_1","doi-asserted-by":"publisher","DOI":"10.1109\/tkde.2019.2946162"},{"key":"e_1_2_1_69_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.799955"},{"key":"e_1_2_1_70_1","doi-asserted-by":"publisher","DOI":"10.1145\/2884781.2884829"},{"key":"e_1_2_1_71_1","doi-asserted-by":"publisher","DOI":"10.1145\/3468264.3468591"},{"key":"e_1_2_1_72_1","doi-asserted-by":"publisher","DOI":"10.1162\/tacl_a_00530"},{"key":"e_1_2_1_73_1","volume-title":"Proceedings of the 28th Annual ACM Symposium on Applied Computing. 1505\u20131510","author":"Solanki Jigar","year":"2013","unstructured":"Jigar Solanki, Laurent R\u00e9veill\u00e8re, Y\u00e9rom-David Bromberg, Bertrand Le Gal, and T\u00e9gawend\u00e9 F Bissyand\u00e9. 2013. Improving the performance of message parsers for embedded systems. In Proceedings of the 28th Annual ACM Symposium on Applied Computing. 1505\u20131510."},{"key":"e_1_2_1_74_1","doi-asserted-by":"publisher","DOI":"10.1145\/2660193.2660234"},{"key":"e_1_2_1_75_1","doi-asserted-by":"publisher","DOI":"10.1145\/3468264.3468560"},{"key":"e_1_2_1_76_1","doi-asserted-by":"publisher","DOI":"10.1145\/3324884.3416543"},{"key":"e_1_2_1_77_1","doi-asserted-by":"publisher","DOI":"10.1109\/ase.2019.00067"},{"key":"e_1_2_1_78_1","doi-asserted-by":"publisher","DOI":"10.1145\/3395363.3404540"},{"key":"e_1_2_1_79_1","doi-asserted-by":"publisher","DOI":"10.1038\/s41592-019-0686-2"},{"key":"e_1_2_1_80_1","doi-asserted-by":"publisher","DOI":"10.1145\/3468264.3468559"},{"key":"e_1_2_1_81_1","doi-asserted-by":"publisher","DOI":"10.1145\/3180155.3180194"},{"key":"e_1_2_1_82_1","volume-title":"2019 IEEE\/ACM 41st International Conference on Software Engineering (ICSE). 994\u20131004","author":"Yang Junwen","year":"2019","unstructured":"Junwen Yang, Cong Yan, Chengcheng Wan, Shan Lu, and Alvin Cheung. 2019. View-centric performance optimization for database-backed web applications. In 2019 IEEE\/ACM 41st International Conference on Software Engineering (ICSE). 994\u20131004."},{"key":"e_1_2_1_83_1","doi-asserted-by":"publisher","unstructured":"Shahed Zaman Bram Adams and Ahmed E Hassan. 2012. A qualitative study on performance bugs. In 2012 9th IEEE working conference on mining software repositories (MSR). 199\u2013208. https:\/\/doi.org\/10.1016\/s0140-6736(23)02149-9 10.1016\/s0140-6736(23)02149-9","DOI":"10.1016\/s0140-6736(23)02149-9"},{"key":"e_1_2_1_84_1","doi-asserted-by":"publisher","unstructured":"Eric Zelikman Yuhuai Wu and Noah D Goodman. 2022. STaR: Self-Taught Reasoner. arXiv preprint arXiv:2203.14465 https:\/\/doi.org\/10.1177\/0096144215589949 10.1177\/0096144215589949","DOI":"10.1177\/0096144215589949"},{"key":"e_1_2_1_85_1","doi-asserted-by":"publisher","DOI":"10.1109\/tse.2022.3167628"},{"key":"e_1_2_1_86_1","doi-asserted-by":"publisher","DOI":"10.1145\/3358960.3379130"}],"container-title":["Proceedings of the ACM on Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3729374","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T15:18:37Z","timestamp":1750346317000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3729374"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,6,19]]},"references-count":86,"journal-issue":{"issue":"FSE","published-print":{"date-parts":[[2025,6,19]]}},"alternative-id":["10.1145\/3729374"],"URL":"https:\/\/doi.org\/10.1145\/3729374","relation":{},"ISSN":["2994-970X"],"issn-type":[{"value":"2994-970X","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,6,19]]}}}