{"title":"Lower Bounds on the Amortized Time Complexity of Shared Objects","authors":"Hagit Attiya, Arie Fouren, Jeremy Ko","doi":"10.1007/s00224-024-10184-w","DOIUrl":null,"url":null,"abstract":"<p>The <i>amortized</i> step complexity of an implementation measures its performance as a whole, rather than the performance of individual operations. Specifically, the amortized step complexity of an implementation is the average number of steps performed by invoked operations, in the worst case, taken over all possible executions. The <i>point contention</i> of an execution, denoted by <span>\\(\\dot{c}\\)</span>, measures the maximal number of precesses simultaneously active in the execution. Ruppert (2016) showed that the amortized step complexity of known lock-free implementations for many shared data structures includes an additive factor linear in the point contention <span>\\(\\dot{c}\\)</span>. This paper shows that there is no lock-free implementation with <span>\\(o(\\min \\{\\dot{c}, \\sqrt{\\log \\log n}\\})\\)</span> amortized <i>RMR</i> complexity of queues, stacks or heaps from reads, writes, comparison primitives (such as <span>compare &swap</span>) and <span>LL/SC</span>, where <i>n</i> is the total number of the processes in the system. In addition, the paper shows a <span>\\(\\Omega (\\min \\{\\dot{c}, \\log \\log n\\})\\)</span> lower bound on the amortized <i>step</i> complexity for shared linked lists, skip lists, search trees and other pointer-based data structures. These lower bounds mean that the additive factor linear in <span>\\(\\dot{c}\\)</span> is inherent for these implementations, provided that the point contention is small compared to the number of processes in the system (i.e. <span>\\(\\dot{c}\\in O(\\sqrt{\\log \\log n})\\)</span> or <span>\\(\\dot{c}\\in O(\\log \\log n)\\)</span>).</p>","PeriodicalId":22832,"journal":{"name":"Theory of Computing Systems","volume":"48 1","pages":""},"PeriodicalIF":0.6000,"publicationDate":"2024-07-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Theory of Computing Systems","FirstCategoryId":"94","ListUrlMain":"https://doi.org/10.1007/s00224-024-10184-w","RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q4","JCRName":"COMPUTER SCIENCE, THEORY & METHODS","Score":null,"Total":0}
引用次数: 0
Abstract
The amortized step complexity of an implementation measures its performance as a whole, rather than the performance of individual operations. Specifically, the amortized step complexity of an implementation is the average number of steps performed by invoked operations, in the worst case, taken over all possible executions. The point contention of an execution, denoted by \(\dot{c}\), measures the maximal number of precesses simultaneously active in the execution. Ruppert (2016) showed that the amortized step complexity of known lock-free implementations for many shared data structures includes an additive factor linear in the point contention \(\dot{c}\). This paper shows that there is no lock-free implementation with \(o(\min \{\dot{c}, \sqrt{\log \log n}\})\) amortized RMR complexity of queues, stacks or heaps from reads, writes, comparison primitives (such as compare &swap) and LL/SC, where n is the total number of the processes in the system. In addition, the paper shows a \(\Omega (\min \{\dot{c}, \log \log n\})\) lower bound on the amortized step complexity for shared linked lists, skip lists, search trees and other pointer-based data structures. These lower bounds mean that the additive factor linear in \(\dot{c}\) is inherent for these implementations, provided that the point contention is small compared to the number of processes in the system (i.e. \(\dot{c}\in O(\sqrt{\log \log n})\) or \(\dot{c}\in O(\log \log n)\)).
期刊介绍:
TOCS is devoted to publishing original research from all areas of theoretical computer science, ranging from foundational areas such as computational complexity, to fundamental areas such as algorithms and data structures, to focused areas such as parallel and distributed algorithms and architectures.