{"id":"https://openalex.org/W2798801374","doi":"https://doi.org/10.1145/3192366.3192420","title":"To-many or to-one? all-in-one! efficient purely functional multi-maps with type-heterogeneous hash-tries","display_name":"To-many or to-one? all-in-one! efficient purely functional multi-maps with type-heterogeneous hash-tries","publication_year":2018,"publication_date":"2018-06-11","ids":{"openalex":"https://openalex.org/W2798801374","doi":"https://doi.org/10.1145/3192366.3192420","mag":"2798801374"},"language":"en","primary_location":{"id":"doi:10.1145/3192366.3192420","is_oa":false,"landing_page_url":"https://doi.org/10.1145/3192366.3192420","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation","raw_type":"proceedings-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"green","oa_url":"https://ir.cwi.nl/pub/27846/pldi18main-p258-p.pdf","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5031921941","display_name":"Michael J. Steindorfer","orcid":null},"institutions":[{"id":"https://openalex.org/I98358874","display_name":"Delft University of Technology","ror":"https://ror.org/02e2c7k09","country_code":"NL","type":"education","lineage":["https://openalex.org/I98358874"]}],"countries":["NL"],"is_corresponding":true,"raw_author_name":"Michael J. Steindorfer","raw_affiliation_strings":["Delft University of Technology, Netherlands"],"affiliations":[{"raw_affiliation_string":"Delft University of Technology, Netherlands","institution_ids":["https://openalex.org/I98358874"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5074526787","display_name":"Jurgen Vinju","orcid":"https://orcid.org/0000-0002-2686-7409"},"institutions":[{"id":"https://openalex.org/I83019370","display_name":"Eindhoven University of Technology","ror":"https://ror.org/02c2kyt77","country_code":"NL","type":"education","lineage":["https://openalex.org/I83019370"]}],"countries":["NL"],"is_corresponding":false,"raw_author_name":"Jurgen J. Vinju","raw_affiliation_strings":["CWI, Netherlands / Eindhoven University of Technology, Netherlands"],"affiliations":[{"raw_affiliation_string":"CWI, Netherlands / Eindhoven University of Technology, Netherlands","institution_ids":["https://openalex.org/I83019370"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":2,"corresponding_author_ids":["https://openalex.org/A5031921941"],"corresponding_institution_ids":["https://openalex.org/I98358874"],"apc_list":null,"apc_paid":null,"fwci":0.2627,"has_fulltext":true,"cited_by_count":1,"citation_normalized_percentile":{"value":0.4928456,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":89,"max":94},"biblio":{"volume":null,"issue":null,"first_page":"283","last_page":"295"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9998999834060669,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9998999834060669,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10743","display_name":"Software Testing and Debugging Techniques","score":0.9990000128746033,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10772","display_name":"Distributed systems and fault tolerance","score":0.9990000128746033,"subfield":{"id":"https://openalex.org/subfields/1705","display_name":"Computer Networks and Communications"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8551226258277893},{"id":"https://openalex.org/keywords/garbage-collection","display_name":"Garbage collection","score":0.6869820952415466},{"id":"https://openalex.org/keywords/bottleneck","display_name":"Bottleneck","score":0.6816138029098511},{"id":"https://openalex.org/keywords/data-structure","display_name":"Data structure","score":0.6533589363098145},{"id":"https://openalex.org/keywords/hash-table","display_name":"Hash table","score":0.6208537817001343},{"id":"https://openalex.org/keywords/parallel-computing","display_name":"Parallel computing","score":0.5612789392471313},{"id":"https://openalex.org/keywords/hash-function","display_name":"Hash function","score":0.5189189910888672},{"id":"https://openalex.org/keywords/overhead","display_name":"Overhead (engineering)","score":0.5173132419586182},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.509501039981842},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.4161968231201172},{"id":"https://openalex.org/keywords/memory-management","display_name":"Memory management","score":0.4109785854816437},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.406327486038208},{"id":"https://openalex.org/keywords/distributed-computing","display_name":"Distributed computing","score":0.3422009348869324},{"id":"https://openalex.org/keywords/embedded-system","display_name":"Embedded system","score":0.147670716047287}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8551226258277893},{"id":"https://openalex.org/C105122174","wikidata":"https://www.wikidata.org/wiki/Q322202","display_name":"Garbage collection","level":3,"score":0.6869820952415466},{"id":"https://openalex.org/C2780513914","wikidata":"https://www.wikidata.org/wiki/Q18210350","display_name":"Bottleneck","level":2,"score":0.6816138029098511},{"id":"https://openalex.org/C162319229","wikidata":"https://www.wikidata.org/wiki/Q175263","display_name":"Data structure","level":2,"score":0.6533589363098145},{"id":"https://openalex.org/C67388219","wikidata":"https://www.wikidata.org/wiki/Q207440","display_name":"Hash table","level":3,"score":0.6208537817001343},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.5612789392471313},{"id":"https://openalex.org/C99138194","wikidata":"https://www.wikidata.org/wiki/Q183427","display_name":"Hash function","level":2,"score":0.5189189910888672},{"id":"https://openalex.org/C2779960059","wikidata":"https://www.wikidata.org/wiki/Q7113681","display_name":"Overhead (engineering)","level":2,"score":0.5173132419586182},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.509501039981842},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.4161968231201172},{"id":"https://openalex.org/C176649486","wikidata":"https://www.wikidata.org/wiki/Q2308807","display_name":"Memory management","level":3,"score":0.4109785854816437},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.406327486038208},{"id":"https://openalex.org/C120314980","wikidata":"https://www.wikidata.org/wiki/Q180634","display_name":"Distributed computing","level":1,"score":0.3422009348869324},{"id":"https://openalex.org/C149635348","wikidata":"https://www.wikidata.org/wiki/Q193040","display_name":"Embedded system","level":1,"score":0.147670716047287},{"id":"https://openalex.org/C75403996","wikidata":"https://www.wikidata.org/wiki/Q5521979","display_name":"Garbage","level":2,"score":0.0},{"id":"https://openalex.org/C136085584","wikidata":"https://www.wikidata.org/wiki/Q910289","display_name":"Overlay","level":2,"score":0.0}],"mesh":[],"locations_count":7,"locations":[{"id":"doi:10.1145/3192366.3192420","is_oa":false,"landing_page_url":"https://doi.org/10.1145/3192366.3192420","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation","raw_type":"proceedings-article"},{"id":"pmh:oai:cwi.nl:27846","is_oa":true,"landing_page_url":"https://ir.cwi.nl/pub/27846","pdf_url":"https://ir.cwi.nl/pub/27846/pldi18main-p258-p.pdf","source":{"id":"https://openalex.org/S7407055335","display_name":"Centrum Wiskunde & Informatica (CWI), the national research institute for mathematics and computer science in the Netherlands","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"info:eu-repo/semantics/conferenceObject"},{"id":"pmh:902000","is_oa":false,"landing_page_url":"http://library.tue.nl/csp/dare/LinkToRepository.csp?recordnumber=902000","pdf_url":null,"source":{"id":"https://openalex.org/S4406923046","display_name":"TU/e Research Portal (Eindhoven University of Technology)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":""},{"id":"pmh:oai:library.tue.nl:902000","is_oa":false,"landing_page_url":"http://repository.tue.nl/902000","pdf_url":null,"source":{"id":"https://openalex.org/S4406923046","display_name":"TU/e Research Portal (Eindhoven University of Technology)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":""},{"id":"pmh:oai:pure.tue.nl:openaire_cris_publications/6febf427-d85d-413c-94b7-0c4f0e44083a","is_oa":false,"landing_page_url":"http://www.scopus.com/inward/record.url?scp=85049600876&partnerID=8YFLogxK","pdf_url":null,"source":{"id":"https://openalex.org/S4406922641","display_name":"TU/e Research Portal","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"Steindorfer, M J & Vinju, J J 2018, To-many or to-one? all-in-one! efficient purely functional multi-maps with type-heterogeneous hash-tries. in PLDI 2018 - Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation. ACM SIGPLAN NOTICES, no. 4, vol. 53, Association for Computing Machinery, Inc., New York, pp. 283-295, 39th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2018, Philadelphia, United States, 18/06/18. https://doi.org/10.1145/3192366.3192420","raw_type":"info:eu-repo/semantics/publishedVersion"},{"id":"pmh:oai:pure.tue.nl:publications/6febf427-d85d-413c-94b7-0c4f0e44083a","is_oa":false,"landing_page_url":"https://research.tue.nl/en/publications/6febf427-d85d-413c-94b7-0c4f0e44083a","pdf_url":null,"source":{"id":"https://openalex.org/S4406922641","display_name":"TU/e Research Portal","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"Steindorfer, M J & Vinju, J J 2018, To-many or to-one? all-in-one! efficient purely functional multi-maps with type-heterogeneous hash-tries. in PLDI 2018 - Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation. ACM SIGPLAN NOTICES, no. 4, vol. 53, Association for Computing Machinery, Inc., New York, pp. 283-295, 39th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2018, Philadelphia, United States, 18/06/18. https://doi.org/10.1145/3192366.3192420","raw_type":"info:eu-repo/semantics/publishedVersion"},{"id":"pmh:tue:oai:pure.tue.nl:publications/6febf427-d85d-413c-94b7-0c4f0e44083a","is_oa":false,"landing_page_url":"https://research.tue.nl/nl/publications/6febf427-d85d-413c-94b7-0c4f0e44083a","pdf_url":null,"source":{"id":"https://openalex.org/S4306401843","display_name":"Data Archiving and Networked Services (DANS)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I1322597698","host_organization_name":"Royal Netherlands Academy of Arts and Sciences","host_organization_lineage":["https://openalex.org/I1322597698"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"PLDI 2018 - Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation, 283 - 295","raw_type":"info:eu-repo/semantics/conferencepaper"}],"best_oa_location":{"id":"pmh:oai:cwi.nl:27846","is_oa":true,"landing_page_url":"https://ir.cwi.nl/pub/27846","pdf_url":"https://ir.cwi.nl/pub/27846/pldi18main-p258-p.pdf","source":{"id":"https://openalex.org/S7407055335","display_name":"Centrum Wiskunde & Informatica (CWI), the national research institute for mathematics and computer science in the Netherlands","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"info:eu-repo/semantics/conferenceObject"},"sustainable_development_goals":[],"awards":[{"id":"https://openalex.org/G1683823317","display_name":null,"funder_award_id":"639.023.20","funder_id":"https://openalex.org/F4320321800","funder_display_name":"Nederlandse Organisatie voor Wetenschappelijk Onderzoek"},{"id":"https://openalex.org/G6376596738","display_name":null,"funder_award_id":"639.023.206","funder_id":"https://openalex.org/F4320321800","funder_display_name":"Nederlandse Organisatie voor Wetenschappelijk Onderzoek"}],"funders":[{"id":"https://openalex.org/F4320321800","display_name":"Nederlandse Organisatie voor Wetenschappelijk Onderzoek","ror":"https://ror.org/04jsz6e67"}],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W2798801374.pdf","grobid_xml":"https://content.openalex.org/works/W2798801374.grobid-xml"},"referenced_works_count":21,"referenced_works":["https://openalex.org/W321635797","https://openalex.org/W1491178396","https://openalex.org/W1526736056","https://openalex.org/W2004531690","https://openalex.org/W2011297770","https://openalex.org/W2013901208","https://openalex.org/W2016995838","https://openalex.org/W2030062409","https://openalex.org/W2036610497","https://openalex.org/W2056721518","https://openalex.org/W2061972420","https://openalex.org/W2075675735","https://openalex.org/W2096498462","https://openalex.org/W2105045857","https://openalex.org/W2111117034","https://openalex.org/W2135416495","https://openalex.org/W2142947709","https://openalex.org/W2149207009","https://openalex.org/W2337480916","https://openalex.org/W2510324744","https://openalex.org/W2536399098"],"related_works":["https://openalex.org/W2374437156","https://openalex.org/W2165063050","https://openalex.org/W3046276722","https://openalex.org/W2727062031","https://openalex.org/W2144265691","https://openalex.org/W4233902021","https://openalex.org/W2299660337","https://openalex.org/W2104098106","https://openalex.org/W266721043","https://openalex.org/W2104196725"],"abstract_inverted_index":{"An":[0],"immutable":[1],"multi-map":[2],"is":[3,19],"a":[4,65,88],"many-to-many":[5,26],"map":[6],"data":[7,17,44,77,83],"structure":[8,18,84],"with":[9,55],"expected":[10],"fast":[11],"insert":[12],"and":[13,59],"lookup":[14],"operations.":[15],"This":[16],"used":[20],"for":[21],"applications":[22],"processing":[23,74],"graphs":[24],"or":[25,36],"relations":[27],"as":[28],"applied":[29],"in":[30,37],"compilers,":[31],"runtimes":[32],"of":[33,40,53,81],"programming":[34],"languages,":[35],"static":[38],"analysis":[39],"object-oriented":[41],"systems.":[42],"Collection":[43],"structures":[45],"are":[46],"assumed":[47],"to":[48,61,68],"carefully":[49],"balance":[50],"execution":[51],"time":[52],"operations":[54],"memory":[56,89],"consumption":[57],"characteristics":[58],"need":[60],"scale":[62],"gracefully":[63],"from":[64],"few":[66],"elements":[67],"multiple":[69],"gigabytes":[70],"at":[71],"least.":[72],"When":[73],"larger":[75],"in-memory":[76],"sets":[78],"the":[79,82,93],"overhead":[80],"encoding":[85],"itself":[86],"becomes":[87],"usage":[90],"bottleneck,":[91],"dominating":[92],"overall":[94],"performance.":[95]},"counts_by_year":[{"year":2021,"cited_by_count":1}],"updated_date":"2026-04-21T08:09:41.155169","created_date":"2025-10-10T00:00:00"}
