Efficient dynamic dispatching, with type slicing

被引:4
|
作者
Yossi Gil, Joseph [1 ]
Zibin, Yoav [1 ]
机构
[1] Technion Israel Inst Technol, IL-32000 Haifa, Israel
来源
ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS | 2008年 / 30卷 / 01期
关键词
algorithms; design; measurement; performance; theory; CT (compact dispatch tables); dispatch; dynamic-typing; hierarchy; incremental; message; subtyping; type slicing;
D O I
10.1145/1290520.1290525
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
A fundamental problem in the implementation of object-oriented languages is that of a frugal implementation of dynamic dispatching, that is, a small footprint data structure that supports quick response to runtime dispatching queries of the following format: which method should be executed in response to a certain message sent to a given object. Previous theoretical algorithms for this problem tend to be impractical due to their conceptual complexity and large hidden constants. In contrast, successful practical heuristics lack theoretical support. The contribution of this article is in a novel type slicing technique, which results in two dispatching schemes: TS and CTd. We make the case for these schemes both practically and theoretically. The empirical findings on a corpus of 35 hierarchies totaling some 64 thousand types from eight different languages, demonstrate improvement over previous results in terms of the space required for the representation, and the time required for computing it. The theoretical analysis is with respect to iota, the best possible compression factor of the dispatching matrix. The results are expressed as a function of a parameter kappa, which can be thought of as a metric of the complexity of the topology of a multiple inheritance hierarchy. In single inheritance hierarchies kappa = 1, but although kappa can be in the order of the size of the hierarchy, it is typically a small constant in actual use of inheritance; in our corpus, the median value of kappa is 5, while its average is 6.4. The TS scheme generalizes the famous interval containment technique to multiple inheritance. TS achieves a compression factor of iota/kappa, that is, our generalization comes with an increase to the space requirement by a small factor of kappa. The pay is in the dispatching time, which is no longer constant as in a naive matrix implementation, but logarithmic in the number of different method implementations. In practice, dispatching uses one indirect branch and, on average, only 2.5 binary branches. The CT schemes are a sequence of algorithms CT1, CT2, CT3,..., where CTd uses d memory dereferencing operations during dispatch, and achieves a compression factor of 1/d iota(1-1/d) in a single inheritance setting. A generalization of these algorithms to a multiple inheritance setting, increases the space by a factor of (2 kappa)(1-1/d). This trade-off represents the first bounds on the compression ratio of constant-time dispatching algorithms. We also present an incremental variant of the CTd suited for languages such as Java.
引用
收藏
页数:53
相关论文
共 50 条
  • [21] Multicontextual dispatching rules for job shops with dynamic job arrival
    Lu, M. -S.
    Romanowski, R.
    INTERNATIONAL JOURNAL OF ADVANCED MANUFACTURING TECHNOLOGY, 2013, 67 (1-4) : 19 - 33
  • [22] Dynamic Slicing of Time Petri Net Based on MTL Property
    Chariyathitipong, P.
    Vatanawood, W.
    IEEE ACCESS, 2022, 10 : 45207 - 45218
  • [23] Scheduling heterogeneous train traffic on double tracks with efficient dispatching rules
    Xu, Xiaoming
    Li, Keping
    Yang, Lixing
    TRANSPORTATION RESEARCH PART B-METHODOLOGICAL, 2015, 78 : 364 - 384
  • [24] Dynamic dispatching for interbay material handling by using modified Hungarian algorithm and fuzzy-logic-based control
    Qin, Wei
    Zhang, Jie
    Sun, Yinbin
    INTERNATIONAL JOURNAL OF ADVANCED MANUFACTURING TECHNOLOGY, 2013, 67 (1-4) : 295 - 309
  • [25] Efficient Shared Memory Orchestration Towards Demand Driven Memory Slicing
    Zhang, Qi
    Liu, Ling
    Pu, Calton
    Cao, Wenqi
    Sahin, Semih
    2018 IEEE 38TH INTERNATIONAL CONFERENCE ON DISTRIBUTED COMPUTING SYSTEMS (ICDCS), 2018, : 1212 - 1223
  • [26] Structural Synthesis of Dispatching Rules for Dynamic Dial-a-Ride Problems
    Vonolfen, Stefan
    Beham, Andreas
    Kommenda, Michael
    Affenzeller, Michael
    COMPUTER AIDED SYSTEMS THEORY, PT 1, 2013, 8111 : 276 - 283
  • [27] Dynamic dispatching and repositioning policies for fast-response service networks
    Drent, Collin
    Keizer, Minou Olde
    van Houtum, Geert-Jan
    EUROPEAN JOURNAL OF OPERATIONAL RESEARCH, 2020, 285 (02) : 583 - 598
  • [28] Power Regulation With Predictive Dynamic Quantizer in Power Packet Dispatching System
    Takahashi, Ryo
    Azuma, Shun-ichi
    Hikihara, Takashi
    IEEE TRANSACTIONS ON INDUSTRIAL ELECTRONICS, 2016, 63 (12) : 7653 - 7661
  • [29] Trace-based Just-in-Time Type Specialization for Dynamic Languages
    Gal, Andreas
    Eich, Brendan
    Shaver, Mike
    Anderson, David
    Mandelin, David
    Haghighat, Mohammad R.
    Kaplan, Blake
    Hoare, Graydon
    Zbarsky, Boris
    Orendorff, Jason
    Ruderman, Jesse
    Smith, Edwin
    Reitmaier, Rick
    Bebenita, Michael
    Chang, Mason
    Franz, Michael
    ACM SIGPLAN NOTICES, 2009, 44 (06) : 465 - 478
  • [30] Dynamic and Efficient Key Management for Access Hierarchies
    Atallah, Mikhail J.
    Blanton, Marina
    Fazio, Nelly
    Frikken, Keith B.
    ACM TRANSACTIONS ON INFORMATION AND SYSTEM SECURITY, 2009, 12 (03)