{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:10:30Z","timestamp":1750306230583,"version":"3.41.0"},"reference-count":38,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2016,8,19]],"date-time":"2016-08-19T00:00:00Z","timestamp":1471564800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["SIGSOFT Softw. Eng. Notes"],"published-print":{"date-parts":[[2016,8,19]]},"abstract":"<jats:p>An exploratory experiment found that sorting arrays of random integers using Java 8's parallel sort required only 50%-70% of the time taken using the parallel sort of the Parallel Colt library. Factors considered responsible for the performance advantage include the use of a dual-pivot quicksort on locally held data at certain phases of execution and work-stealing by threads, a feature of the fork-join framework. The default performance of Parallel Colt's parallel sort was found to degrade dramatically for small array sizes due to unnecessary thread creation.<\/jats:p>","DOI":"10.1145\/2967307.2967316","type":"journal-article","created":{"date-parts":[[2016,8,26]],"date-time":"2016-08-26T12:25:39Z","timestamp":1472214339000},"page":"1-5","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["A Comparison of Sorting Times between Java 8 and Parallel Colt"],"prefix":"10.1145","volume":"41","author":[{"given":"Andrew","family":"Brooks","sequence":"first","affiliation":[{"name":"University College Roosevelt, Middelburg, The Netherlands"}]},{"given":"Laura","family":"Krebs","sequence":"additional","affiliation":[{"name":"University of Minnesota Duluth, Duluth, MN"}]},{"given":"Brandon","family":"Paulsen","sequence":"additional","affiliation":[{"name":"University of Minnesota Duluth, Duluth, MN"}]}],"member":"320","published-online":{"date-parts":[[2016,8,19]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"Intel\u00ae Turbo Boost Technology 2.0. http:\/\/www.intel.com\/content\/www\/us\/en\/architecture-and-technology\/turbo-boost\/turbo-boost-technology.html. Accessed June 2 2016.  Intel\u00ae Turbo Boost Technology 2.0. http:\/\/www.intel.com\/content\/www\/us\/en\/architecture-and-technology\/turbo-boost\/turbo-boost-technology.html. Accessed June 2 2016."},{"key":"e_1_2_1_2_1","unstructured":"M. Aum\u00fcller M. Dietzfelbinger and P. Klaue. How good is multi-pivot quicksort? arXiv preprint arXiv:1510.04676 2015.  M. Aum\u00fcller M. Dietzfelbinger and P. Klaue. How good is multi-pivot quicksort? arXiv preprint arXiv:1510.04676 2015."},{"issue":"5","key":"e_1_2_1_3_1","first-page":"507","article-title":"The oracle problem in software testing: A survey. Software Engineering","volume":"41","author":"Barr E. T.","year":"2015","journal-title":"IEEE Transactions on"},{"key":"e_1_2_1_4_1","unstructured":"B. Boyer. Robust Java benchmarking Part 1: Issues. http:\/\/www.ibm.com\/developerworks\/library\/j-benchmark1\/. Accessed June 2 2016.  B. Boyer. Robust Java benchmarking Part 1: Issues. http:\/\/www.ibm.com\/developerworks\/library\/j-benchmark1\/. Accessed June 2 2016."},{"key":"e_1_2_1_5_1","unstructured":"B. Boyer. Robust Java benchmarking Part 2: Statistics and Solutions. https:\/\/www.ibm.com\/developerworks\/java\/library\/j-benchmark2\/. Accessed June 2 2016.  B. Boyer. Robust Java benchmarking Part 2: Statistics and Solutions. https:\/\/www.ibm.com\/developerworks\/java\/library\/j-benchmark2\/. Accessed June 2 2016."},{"key":"e_1_2_1_6_1","unstructured":"A. Bridgwater. Oracle Java 8 Launched with Lambda Expressions for Parallelism. http:\/\/www.drdobbs.com\/jvm\/oracle-java-8-launched-with-lambda-expre\/240166831. Accessed June 2 2016.  A. Bridgwater. Oracle Java 8 Launched with Lambda Expressions for Parallelism. http:\/\/www.drdobbs.com\/jvm\/oracle-java-8-launched-with-lambda-expre\/240166831. Accessed June 2 2016."},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-84800-044-5_14"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1109\/IISWC.2009.5306782"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1109\/PARELEC.2011.10"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/2095050.2095100"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/1047124.1047372"},{"key":"e_1_2_1_12_1","unstructured":"A. Horvath. blog. http:\/\/blog.teamleadnet.com\/2014\/05\/java-8-parallel-sort-internals.html. Accessed June 2 2016.  A. Horvath. blog. http:\/\/blog.teamleadnet.com\/2014\/05\/java-8-parallel-sort-internals.html. Accessed June 2 2016."},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/2647508.2647514"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1109\/IPDPSW.2015.84"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.5555\/2790174.2790180"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/337449.337465"},{"volume-title":"Cambridge University Press","year":"2012","author":"McGeoch C. C.","key":"e_1_2_1_17_1"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.28945\/2232"},{"key":"e_1_2_1_19_1","unstructured":"H. Muhammad. htop - an interactive process viewer for Unix. http:\/\/hisham.hm\/htop\/. Accessed June 2 2016.  H. Muhammad. htop - an interactive process viewer for Unix. http:\/\/hisham.hm\/htop\/. Accessed June 2 2016."},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/1508284.1508275"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1007\/s00453-015-0041-7"},{"key":"e_1_2_1_22_1","unstructured":"ORACLE. currentTimeMillis(). https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/lang\/System.html#currentTimeMillis--. Accessed June 2 2016.  ORACLE. currentTimeMillis(). https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/lang\/System.html#currentTimeMillis--. Accessed June 2 2016."},{"key":"e_1_2_1_23_1","unstructured":"ORACLE. Java 5 API ArrayBlockingQueue. http:\/\/docs.oracle.com\/javase\/1.5.0\/docs\/api\/java\/util\/concurrent\/ArrayBlockingQueue.html. Accessed June 2 2016.  ORACLE. Java 5 API ArrayBlockingQueue. http:\/\/docs.oracle.com\/javase\/1.5.0\/docs\/api\/java\/util\/concurrent\/ArrayBlockingQueue.html. Accessed June 2 2016."},{"key":"e_1_2_1_24_1","unstructured":"ORACLE. Java 5 API newCachedThreadPool. http:\/\/docs.oracle.com\/javase\/1.5.0\/docs\/api\/java\/util\/concurrent\/Executors.html#newCachedThreadPool(). Accessed June 2 2016.  ORACLE. Java 5 API newCachedThreadPool. http:\/\/docs.oracle.com\/javase\/1.5.0\/docs\/api\/java\/util\/concurrent\/Executors.html#newCachedThreadPool(). Accessed June 2 2016."},{"key":"e_1_2_1_25_1","unstructured":"ORACLE. Java Garbage Collection Basics. http:\/\/www.oracle.com\/webfolder\/technetwork\/tutorials\/obe\/java\/gc01\/index.html. Accessed June 2 2016.  ORACLE. Java Garbage Collection Basics. http:\/\/www.oracle.com\/webfolder\/technetwork\/tutorials\/obe\/java\/gc01\/index.html. Accessed June 2 2016."},{"key":"e_1_2_1_26_1","unstructured":"ORACLE. Java Mission Control. http:\/\/www.oracle.com\/technetwork\/java\/javaseproducts\/mission-control\/index.html. Accessed June 2 2016.  ORACLE. Java Mission Control. http:\/\/www.oracle.com\/technetwork\/java\/javaseproducts\/mission-control\/index.html. Accessed June 2 2016."},{"key":"e_1_2_1_27_1","unstructured":"ORACLE. nanoTime(). https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/lang\/System.html#nanoTime--. Accessed June 2 2016.  ORACLE. nanoTime(). https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/lang\/System.html#nanoTime--. Accessed June 2 2016."},{"key":"e_1_2_1_28_1","unstructured":"J. Ponge. Fork and Join: Java Can Excel at Painless Parallel Programming Too! http:\/\/www.oracle.com\/technetwork\/articles\/java\/fork-join-422606.html July 2011. Accessed June 2 2016.  J. Ponge. Fork and Join: Java Can Excel at Painless Parallel Programming Too! http:\/\/www.oracle.com\/technetwork\/articles\/java\/fork-join-422606.html July 2011. Accessed June 2 2016."},{"key":"e_1_2_1_29_1","unstructured":"J. Ponge. Avoiding Benchmarking Pitfalls on the JVM. http:\/\/www.oracle.com\/technetwork\/articles\/java\/architect-benchmarking-2266277.html July 2014. Accessed June 2 2016.  J. Ponge. Avoiding Benchmarking Pitfalls on the JVM. http:\/\/www.oracle.com\/technetwork\/articles\/java\/architect-benchmarking-2266277.html July 2014. Accessed June 2 2016."},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/359619.359631"},{"key":"e_1_2_1_31_1","unstructured":"A. Shipil\u00e9v. blog. http:\/\/shipilev.net\/blog\/2014\/nanotrusting-nanotime\/. Accessed June 2 2016.  A. Shipil\u00e9v. blog. http:\/\/shipilev.net\/blog\/2014\/nanotrusting-nanotime\/. Accessed June 2 2016."},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1086\/392587"},{"key":"e_1_2_1_33_1","unstructured":"P. Wendykier. Parallel Colt. https:\/\/sites.google.com\/site\/piotrwendykier\/software\/parallelcolt. Accessed June 2 2016.  P. Wendykier. Parallel Colt. https:\/\/sites.google.com\/site\/piotrwendykier\/software\/parallelcolt. Accessed June 2 2016."},{"key":"e_1_2_1_34_1","unstructured":"P. Wendykier. Timer class in Parallel Colt. http:\/\/www.net2plan.com\/documentation\/current\/javadoc\/parallelColt-0.9.4\/cern\/colt\/Timer.html. Accessed June 2 2016.  P. Wendykier. Timer class in Parallel Colt. http:\/\/www.net2plan.com\/documentation\/current\/javadoc\/parallelColt-0.9.4\/cern\/colt\/Timer.html. Accessed June 2 2016."},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/1824801.1824809"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-33090-2_71"},{"key":"e_1_2_1_37_1","unstructured":"V. Yaroslavskiy. Dual-Pivot Quicksort. http:\/\/codeblab.com\/wp-content\/uploads\/2009\/09\/DualPivotQuicksort.pdf. Accessed June 2 2016.  V. Yaroslavskiy. Dual-Pivot Quicksort. http:\/\/codeblab.com\/wp-content\/uploads\/2009\/09\/DualPivotQuicksort.pdf. Accessed June 2 2016."},{"key":"e_1_2_1_38_1","unstructured":"YourKit. YourKit Java Profiler. https:\/\/www.yourkit.com\/home\/. Accessed June 2 2016.  YourKit. YourKit Java Profiler. https:\/\/www.yourkit.com\/home\/. Accessed June 2 2016."}],"container-title":["ACM SIGSOFT Software Engineering Notes"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2967307.2967316","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2967307.2967316","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:23:13Z","timestamp":1750220593000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2967307.2967316"}},"subtitle":["an Exploratory Experiment"],"short-title":[],"issued":{"date-parts":[[2016,8,19]]},"references-count":38,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2016,8,19]]}},"alternative-id":["10.1145\/2967307.2967316"],"URL":"https:\/\/doi.org\/10.1145\/2967307.2967316","relation":{},"ISSN":["0163-5948"],"issn-type":[{"type":"print","value":"0163-5948"}],"subject":[],"published":{"date-parts":[[2016,8,19]]},"assertion":[{"value":"2016-08-19","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}