Multiple inheritance and dynamic loading increase the overhead yielded by object-oriented mechanisms like late binding. This article provides an empirical assessment of the implementation technique that can be used in...
详细信息
Programmers who develop Web applications often use dynamic scripting languages such as Perl, PHP, Python, and Ruby. For general purpose scripting language usage, interpreter-based implementations are efficient and pop...
详细信息
ISBN:
(纸本)9781605589107
Programmers who develop Web applications often use dynamic scripting languages such as Perl, PHP, Python, and Ruby. For general purpose scripting language usage, interpreter-based implementations are efficient and popular but the server-side usage for Web application development implies an opportunity to significantly enhance Web server throughput. This paper summarizes a study of the optimization of PHP script processing. We developed a PHP processor, P9, by adapting an existing production-quality just-in-time ( JIT) compiler for a Java virtual machine, for which optimization technologies have been well-established, especially for server-side application. This paper describes and contrasts microbenchmarks and SPECweb2005 benchmark results for a well-tuned configuration of a traditional PHP interpreter and our JIT compiler-based implementation, P9. Experimental results with the microbenchmarks show 2.5-9.5x advantage with P9, and the SPECweb2005 measurements show 20-30% improvements. These results show that the acceleration of dynamic scripting language processing does matter in a realistic Web application server environment. CPU usage profiling shows our simple JIT compiler introduction reduces the PHP core runtime overhead from 45% to 13% for a SPECweb2005 scenario, implying that further improvements of dynamic compilers would provide little additional return unless other major overheads such as heavy memory copy between the language runtime and Web server frontend are reduced.
Some programminglanguages, especially dynamic programminglanguages, offer suitable mechanisms for the construction of internal domain-specific languages (DSL). Internal DSLs inherit the facilities of their host lang...
详细信息
ISBN:
(纸本)9781450301077
Some programminglanguages, especially dynamic programminglanguages, offer suitable mechanisms for the construction of internal domain-specific languages (DSL). Internal DSLs inherit the facilities of their host language such as the availability of libraries, frameworks, tool support, and other DSLs. When developing an internal DSL, there are two challenges. First, to cope with the host language's syntactic and semantic restrictions. Careful and thoughtful extensions and modifications of the host language are crucial to overcome these restrictions without reverting to poor languagedesign. Second, to support several design principles that are genuine for a DSL. Although there is an extensive body of knowledge about DSL design principles and desirable quality properties, it remains difficult to apply them, or to reason about whether a particular DSL exhibits specific desirable principles. Our objective is to put the two perspectives together. We research the most important design principles of a DSL and show how different patterns can be used to support these principles. This allows us to produce an extensive pattern catalog which is the foundation of principled approach for designing internal DSLs. The patterns can be used to assess the design quality of a DSL and structure its implementation. In particular, we show a complex DSL example illustrating each principle and the corresponding patterns. While we stick to Ruby for the explanation and application of the patterns, we also name known uses in Python, Scala, and Smalltalk. Patterns are explained with their context, problem, forces, solution, and consequences. We also explain the patterns with the classical structure of intent, motivation, forces, implementation and their consequences. Finally we reflect upon the pattern utilization by discussing their strengths and weaknesses.
With the rapid development of model-driven engineering (MDE), domain-specific modeling is becoming a popular software development technique. In MDE, a metamodel represents a schema definition of the syntax and static ...
详细信息
ISBN:
(纸本)9781450302401
With the rapid development of model-driven engineering (MDE), domain-specific modeling is becoming a popular software development technique. In MDE, a metamodel represents a schema definition of the syntax and static semantics in a similar manner to how a grammar defines a programminglanguage. In most cases, users need to modify a metamodel to incorporate new concerns resulting in failure of applying existing instances. The research described in this paper makes a contribution toward metamodel driven evolution.
Translation Lookaside Buffers (TLBs) are commonly employed in modern processor designs and have considerable impact on overall system performance. A number of past works have studied TLB designs to lower access times ...
详细信息
ISBN:
(纸本)9781605588391
Translation Lookaside Buffers (TLBs) are commonly employed in modern processor designs and have considerable impact on overall system performance. A number of past works have studied TLB designs to lower access times and miss rates, specifically for uniprocessors. With the growing dominance of chip multiprocessors (CMPs), it is necessary to examine TLB performance in the context of parallel workloads. This work is the first to present TLB prefetchers that exploit commonality in TLB miss patterns across cores in CMPs. We propose and evaluate two Inter-Core Cooperative (ICC) TLB prefetching mechanisms, assessing their effectiveness at eliminating TLB misses both individually and together. Our results show these approaches require at most modest hardware and can collectively eliminate 19% to 90% of data TLB (D-TLB) misses across the surveyed parallel workloads. We also compare performance improvements across a range of hardware and software implementation possibilities. We find that while a fully-hardware implementation results in average performance improvements of 8-46% for a range of TLB sizes, a hardware/software approach yields improvements of 4-32%. Overall, our work shows that TLB prefetchers exploiting inter-core correlations can effectively eliminate TLB misses.
programminglanguages exist to enable programmers to develop software effectively. But how efficiently programmers can write software depends on the usability of the languages and tools that they develop with. The aim...
详细信息
ISBN:
(纸本)9781450302401
programminglanguages exist to enable programmers to develop software effectively. But how efficiently programmers can write software depends on the usability of the languages and tools that they develop with. The aim of this workshop is to discuss methods, metrics and techniques for evaluating the usability of languages and language tools. The supposed benefits of such languages and tools cover a large space, including making programs easier to read, write, and maintain;allowing programmers to write more flexible and powerful programs;and restricting programs to make them more safe and secure. We plan to gather the intersection of researchers in the programminglanguage, programming tool, and human-computer interaction communities to share their research and discuss the future of evaluation and usability of programminglanguages and tools. We are also interested in the input of other members of the programming research community working on related areas, such as refactoring, design patterns, program analysis, program comprehension, software visualization, end-user programming, and other programminglanguage paradigms.
Aspect-oriented mechanisms are characterized by their join point models. A join point model has three components: join points, which are elements of language semantics;"a means of identifying join points";an...
详细信息
ISBN:
(纸本)9781605584942
Aspect-oriented mechanisms are characterized by their join point models. A join point model has three components: join points, which are elements of language semantics;"a means of identifying join points";and "a means of affecting the behaviour at those join points." A pointcut-advice model is a dynamic join point model in which join points are points in program execution. Pointcuts select a set of join points, and advice affects the behaviour of the selected join points. In this model, join points are typically selected and advised independently of each other. That is, the relationships between join points are not taken into account in join point selection and advice. In practice, join points are often not independent. Instead, they form part of a higher-level operation that implements the intent of the developer (e.g. managing a resource). There are natural situations in which join points should be selected only if they play a specific role in that operation. We propose a new join point model that takes join point interrelationships into account and allows the designation of more complex computations as join points. Based on the new model, we have designed an aspect-oriented construct called a transactional point-cut (transcut). Transcuts select sets of interrelated join points and reify them into higher-level join points that can be advised. They share much of the machinery and intuition of pointcuts, and can be viewed as their natural extension. We have implemented a transcuts prototype as an extension to the AspectJ language and integrated it into the abc compiler. We present an example where a transcut is applied to implement recommended resource handling practices in the presence of exceptions within method boundaries.
The proceedings contain 14 papers. The topics discussed include: invertible syntax descriptions: unifying parsing and pretty printing;the performance of the Haskell containers package;a generic deriving mechanism for ...
ISBN:
(纸本)9781450302524
The proceedings contain 14 papers. The topics discussed include: invertible syntax descriptions: unifying parsing and pretty printing;the performance of the Haskell containers package;a generic deriving mechanism for Haskell;exchanging sources between clean and Haskell: a double-edged front end for the clean compiler;experience report: using hackage to inform languagedesign;concurrent orchestration in Haskell;scalable I/O event handling for GHC;supercompilation by evaluation;an LLVM backend for GHC;Hoopl: a modular, reusable library for dataflow analysis and transformation;a systematic derivation of the STG machine verified in Coq;and Nikola: embedding compiled GPU functions in Haskell.
This poster presents our languagedesign called Pa¯n¯ini. It focuses on Pa¯n¯ini's asynchronous, typed event which reconciles the modularity goal promoted by the implicit invocation design styl...
详细信息
ISBN:
(纸本)9781450302401
This poster presents our languagedesign called Pa¯n¯ini. It focuses on Pa¯n¯ini's asynchronous, typed event which reconciles the modularity goal promoted by the implicit invocation design style with the scalability goal of exposing concurrency between the execution of subjects and observers.
Heterogeneous computing combines general purpose CPUs with accelerators to efficiently execute both sequential control-intensive and data-parallel phases of applications. Existing programming models for heterogeneous ...
详细信息
ISBN:
(纸本)9781605588391
Heterogeneous computing combines general purpose CPUs with accelerators to efficiently execute both sequential control-intensive and data-parallel phases of applications. Existing programming models for heterogeneous computing rely on programmers to explicitly manage data transfers between the CPU system memory and accelerator memory. This paper presents a new programming model for heterogeneous computing, called Asymmetric Distributed Shared Memory (ADSM), that maintains a shared logical memory space for CPUs to access objects in the accelerator physical memory but not vice versa. The asymmetry allows light-weight implementations that avoid common pitfalls of symmetrical distributed shared memory systems. ADSM allows programmers to assign data objects to performance critical methods. When a method is selected for accelerator execution, its associated data objects are allocated within the shared logical memory space, which is hosted in the accelerator physical memory and transparently accessible by the methods executed on CPUs. We argue that ADSM reduces programming efforts for heterogeneous computing systems and enhances application portability. We present a software implementation of ADSM, called GMAC, on top of CUDA in a GNU/Linux environment. We show that applications written in ADSM and running on top of GMAC achieve performance comparable to their counterparts using programmer-managed data transfers. This paper presents the GMAC system and evaluates different design choices. We further suggest additional architectural support that will likely allow GMAC to achieve higher application performance than the current CUDA model.
暂无评论