Data prefetching aims to improve access times to data storage systems by predicting data records that are likely to be accessed by subsequent requests and retrieving them into a memory cache before they are needed. In...
详细信息
Data prefetching aims to improve access times to data storage systems by predicting data records that are likely to be accessed by subsequent requests and retrieving them into a memory cache before they are needed. In the case of Persistent object Stores, previous approaches to prefetching have been based on predictions made through analysis of the store's schema, which generates rigid predictions, or monitoring access patterns to the store while applications are executed, which introduces memory and/or computation overhead. In this paper, we present CAPre, a novel prefetching system for Persistent object Stores based on static code analysis of object-oriented applications. CAPre generates the predictions at compile-time and does not introduce any overhead to the application execution. Moreover, CAPre is able to predict large amounts of objects that will be accessed in the near future, thus enabling the object store to perform parallel prefetching if the objects are distributed, in a much more aggressive way than in schema-based prediction algorithms. We integrate CAPre into a distributed Persistent object Store and run a series of experiments that show that it can reduce the execution time of applications from 9% to over 50%, depending on the nature of the application and its persistent data model. (C) 2019 Elsevier B.V. All rights reserved.
The difficulties encountered while resolving the programming models of object-oriented and procedure-orientedlanguages are discussed. As a concrete example, the integration of Emerald—an object-oriented, distributed...
详细信息
The difficulties encountered while resolving the programming models of object-oriented and procedure-orientedlanguages are discussed. As a concrete example, the integration of Emerald—an object-oriented, distributed programming language—into the MLP system for mixed-language programming is described. This integration allows Emerald objects to invoke procedures written in other supported languages, and allows procedures written in the other languages to invoke operations on Emerald objects. Two different aspects of this integration are highlighted. First, the issues involved in bridging the distance between the programming model supported by Emerald and the programming model supported by MLP are discussed; specific problems include reconciling the object-oriented nature of Emerald with the procedure-oriented model of MLP, and accommodating Emerald's concurrency within the previously sequential MLP system. Second, the implementation of this design is described.
By encapsulating aspects of language semantics within a set of default classes and allowing the programmer to derive new versions, object-orientedlanguages whose semantics can be tailored to the needs of individual p...
详细信息
By encapsulating aspects of language semantics within a set of default classes and allowing the programmer to derive new versions, object-orientedlanguages whose semantics can be tailored to the needs of individual programmers have been provided, The degree to which such languages are simultaneously flexible and efficient is an open question, We describe our experience with using this technique to incorporate transparent support for persistence into the Common Lisp object System via its' metaobject protocol, an open implementation based on reflection, For many aspects of our implementation the metaobject protocol was perfectly suitable, In other cases we had to choose among extending the protocol, requiring the application programmer to employ special idioms, and tolerating a large performance penalty. Based on our experience we evaluate the metaobject protocol, propose some improvements and extensions, and present performance measurements that reveal the need for improved language implementation techniques.
In this paper we introduce a formal model of the object-orientedprogramming language SMALLTALK-80. The model can be useful for different applications in the framework of language design and implementation like compil...
详细信息
In this paper we introduce a formal model of the object-orientedprogramming language SMALLTALK-80. The model can be useful for different applications in the framework of language design and implementation like compiler or interpreter generation, correctness proofs of the implementations, and standardization of the language.
Accurately predicting object lifetimes is important for improving memory management systems. Current garbage collectors make relatively coarse-grained predictions ( e. g., "short-lived" versus "long-liv...
详细信息
Accurately predicting object lifetimes is important for improving memory management systems. Current garbage collectors make relatively coarse-grained predictions ( e. g., "short-lived" versus "long-lived") and rely on application- independent heuristics related to the local characteristics of an allocation. This paper introduces a prediction method which is fully precise and makes its predictions based on application- specific training rather than application- independent heuristics. By "fully precise" we mean that the granularity of predictions is equal to the smallest unit of allocation. The method described here is the first to combine high precision and efficiency in a single lifetime predictor. Fully precise prediction enables us, for the first time, to study zero-lifetime objects. The paper reports results showing that zero-lifetime objects comprise a significant fraction of object allocations in benchmark programs for the Java programming language and that they are correlated with their allocation context ( the call stack and allocation site). Beyond zero-lifetime objects, the paper reports results on predicting longer lived objects, where, in some cases, it is possible to predict the lifetime of objects based on their allocation context ( the call stack and allocation site) well. For the SPEC benchmark programs, the number of dynamically allocated objects whose call sites have accurate predictors ranges from 0.2 percent to 61 percent. This method could potentially improve the performance of garbage collectors. The paper proposes a death- ordered collector (DOC) and analyzes its implementation overheads and its best possible performance. The study shows how memory performance could be enhanced using the extra information provided by fully precise prediction.
Covariant types are a powerful language feature for improving type-safety. However, covariant types complicate type-checking when combined with polymorphism. We propose two new language features that can improve type-...
详细信息
Covariant types are a powerful language feature for improving type-safety. However, covariant types complicate type-checking when combined with polymorphism. We propose two new language features that can improve type-checking in a language with polymorphism and covariant typing, and also have the potential to improve efficiency as well. Published by Elsevier Ltd.
The use of automatic error detection and compensation techniques for testing the class cBigNumber written in C++ is discussed;this class is designed for performing operations on unbounded integer numbers. It implement...
详细信息
The use of automatic error detection and compensation techniques for testing the class cBigNumber written in C++ is discussed;this class is designed for performing operations on unbounded integer numbers. It implements the standard operations of C++, square rooting, binary exponentiation, and Miller-Rabin primality test. The class is tested in the automatic mode. The reliability of computations is ensured using the built-in error control and compensation tools.
Software reliability and error handling are concepts that any programmer knows and deals with on a daily basis. Even so, studies suggest that the current approach to exception handling raises fundamental incompatibili...
详细信息
Software reliability and error handling are concepts that any programmer knows and deals with on a daily basis. Even so, studies suggest that the current approach to exception handling raises fundamental incompatibilities with object-oriented concepts, being a major cause for the lack of quality on error handling code. In this paper, we propose an exception handling model that makes the runtime environment responsible for automatically dealing with abnormal situations. The platform provides a number of benign recovery actions that are able to deal automatically with most common exception types. Whenever an exception is raised, and a benign recovery method can be found, code is re-executed from a clean transactional state. In this approach try blocks not only represent a nesting level where a fault can occur but also a block that can be re-executed transactionally as a clean slate. For validating the approach two case studies were performed. One involved providing automatic exception handling for Glassfish's Java Messaging System implementation and the other for the Hipergate CRM application. Both showed that increased robustness is possible while freeing the programmer from manually writing extensive error-handling code. (C) 2010 Elsevier Ltd. All rights reserved.
The article discusses computer emulating systems, providing examples of how even a relatively primitive system such as the TRS-80 can prove to have unexpected subtleties and complications which make an exact simulatio...
详细信息
The article discusses computer emulating systems, providing examples of how even a relatively primitive system such as the TRS-80 can prove to have unexpected subtleties and complications which make an exact simulation difficult to achieve. A comparison is drawn to the Java Virtual Machine, which is said to embody related concepts in a more forward-looking context. The code needed to create a correct emulation of a diagonal line is analyzed by way of example, which involves floating-point numbers, central processing unit cycles, and cycle-wasting subroutines.
暂无评论