The high level optimizations are becoming more and more sophisticated, the importance of low level optimizations should not be underestimated. Due to the changes in the inner architecture of modern processors, some op...
详细信息
The high level optimizations are becoming more and more sophisticated, the importance of low level optimizations should not be underestimated. Due to the changes in the inner architecture of modern processors, some optimization techniques may become more or less effective. Existing techniques need, from time to time, to be reconsidered, and new techniques, targeting these modern architectures, may emerge. Due to the growing instruction pipeline of modern processors, recovering after branch mis-predictions is becoming more expensive, and so avoiding that is becoming more critical. In this paper we introduce a novel approach to branch elimination using conditional move operations, namely the CMOVcc instruction group. The inappropriate use of these instructions may result in sensible performance regression, but in many cases they outperform the sequence of a conditional jump and an unconditional move instruction. Our goal is to analyze the usage of CMOVcc in different contexts on modern processors, and based on these results, propose a technique to automatically decide whether the conditional move or the sequence of a conditional jump and an unconditional move should be performed in a given situation.
Insoftware development, there are various problems for which union types are a suitable solution. In \mathbf{C}, and in the earlier \mathrm{C}++ versions only untagged unions were available. \mathbf{C}++17 introduced ...
详细信息
Resolving symbol references is an important part of many application areas from development environments to various static analyser tools, especially when it is used for code comprehension purposes. Different occurren...
详细信息
Memory profilers are essential tools to understand the dynamic behaviour of complex modern programs. They help to reveal memory handling details: the wheres, the whens and the whats of memory allocations. Most heap pr...
详细信息
Template metaprogramming is an emerging new direction in C++ programming for executing algorithms in compilation time. Despite all of its already proven benefits and numerous successful applications, it is yet to be a...
详细信息
Encapsulation is one of the most important features of object-oriented programming. Reducing the interface where software components can communicate with each other increases software quality, security and decreases d...
详细信息
ISBN:
(纸本)9789634639251
Encapsulation is one of the most important features of object-oriented programming. Reducing the interface where software components can communicate with each other increases software quality, security and decreases development cost. Compile time or runtime visibility and access control checking that support encapsulation is the key part of modern languages and runtime environments. They enforce responsibility separation, implementation and security policies. Most modern programminglanguages like C++, C# and Java do not have sophisticated access control mechanisms only introduce a subset or combination of the following access modifiers: public, private, protected, internal, and friend while Eiffel defines sophisticated selective access control called selective export. In this paper first we describe the existing access control features of C++, C#, Java, Eiffel and other popular programminglanguages. After that we show an example where the current access control features of C# (and most object-oriented languages) are insufficient. We introduce a method level access control checking mechanism to C# 3.0 using extension methods which is able to enforce Eiffel-like selective export in runtime. Our implementation does not require the modification of the compiler and the caller, only the callee, and introduces minimal syntactic and performance overhead. It can be a practical solution for modular systems where runtime security is important.
Effective runtime trace generation is vital for understanding, analyzing, and maintaining large-scale applications. In this paper an effective detailed runtime trace generation method is introduced for the .NET platfo...
详细信息
ISBN:
(纸本)9789634639251
Effective runtime trace generation is vital for understanding, analyzing, and maintaining large-scale applications. In this paper an effective detailed runtime trace generation method is introduced for the .NET platform. The non-intrusive method is based on the .NET Profiler;consequently, neither additional development tools, nor the .NET Framework SDK is required to be installed on the target system. The method is applied to a test set of real-size executables and compared by performance and applicability to the original program.
Template metaprogramming (TMP) is an emerging new direction in C++ programming for executing algorithms in compilation time. Despite all of its already proven benefits, and numerous successful applications, TMP is yet...
详细信息
ISBN:
(纸本)9789634639251
Template metaprogramming (TMP) is an emerging new direction in C++ programming for executing algorithms in compilation time. Despite all of its already proven benefits, and numerous successful applications, TMP is yet to become an accepted technique in industrial projects. One reason is the lack of professional software tools supporting the development of template metaprograms. On the other hand, a strong analogue between traditional runtime programs and compile-time metaprograms presents the possibility for creating development tools similar to those already used when writing runtime programs. This paper presents two methods for metaprogram profiling. Firstly, Templight, a debugging and profiling framework is introduced. The framework reveals the steps executed by the compiler during the compilation of C++ programs with templates. Thus Templight is capable of adding times-tamps to template instantiations, and measuring their times. The second method uses compiler modification acquiring instantiation profiling data from the compiler itself.
作者:
Porkoláb, ZoltánEötvös Loránd University
Faculty of Informatics Dept. of Programming Languages and Compilers Pazmany Peter setany 1/C H-1117 Budapest Hungary
Template metaprogramming is an emerging new direction of generative programming. With the clever definitions of templates we can force the C++ compiler to execute algorithms at compilation time. Among the application ...
详细信息
暂无评论