In the paper, it is argued that even though traditional profilers help in the identification of where a program spends most of its resources, they do not in any way provide information why the program spends the resources or how a change in resource consumption would be achieved by different programs (Zaparanuks & Hauswirth p 67). Arguably, in a bid to understand and optimize their code performance, developers are forced to rely on traditional profilers. This is despite the fact that a traditional profiler does not put the developer in a position to predict how the program could scale to larger inputs, and that it gives only limited information for the reasons of the observed resource consumption that may not be of benefit to the developer in his or her operations (Jazayeri et al p 140). The need to overcome the limitations accompanying traditional profilers has prompted the authors to come up with a solution: algorithmic profiling. It is seen that with algorithmic profiling, there is a provision of cost function that relates program input to algorithmic steps, and this is in contrast to a traditional profiler that provide a single number representing the cost of a given run (Joux p132).
The contribution of the authors to the above solution is evident. First, they introduce Algorithmic Profiling, which is an approach that automatically infers approximations of the anticipated algorithmic cost functions of algorithm implementations (Ross et al p 2). The authors note that unlike traditional profilers, no human interventions or code annotations are required when a developer uses the algorithmic profiler (Forth 64). Second, the authors give a discussion of the different approaches that help in the automatic determination of the input of an algorithm and its size, approaches that are applied when using an algorithmic profiler. Third, the authors contribute to the solution by discussing the different approaches that help in the automatic determination of the cost of an algorithm, an objective that is accomplished through algorithmic profiling. Also, they present an approach to automatically partition a program into multiple algorithms and describe AlgoProf, which is a prototype implementation of Algorithmic Profilers, particularly for Java programs.[Approach]
The authors introduced an efficient profiling algorithm, AlgoProf, which is an algorithmic profiler for Java programs. AlgoProf is used to measure the programs cost for any given input, and infers an empirical cost function, and thus, automatically determines a program’s inputs (Leshik and Jane 107). The main idea of the algorithm is to use dynamic binary instrumentation to instrument constructs in the application code including loop entry and loop exit, loop back edges, method entries and exits, array and reference instance field accesses, and object allocations (Hildebrandt and Katja p 160).
The authors’ results show that algorithmic profiling compared to traditional profiling admits multiple possible cost models. In addition, the results of the algorithmic profiling approach as highlighted by the authors determine which data structures or external files the algorithm accesses. It is also shown that the measurement of input size by an algorithmic profiler necessitates the traversing of the recursive data structure, counting on the array’s elements, or measuring the size of the external file (Maros p 303).
The authors point out a few limitations of algorithmic profiling for further improvements. They argue that the way AlgoProf groups repetitions into algorithms does not function well for array-based systems (De Vries 73). They suggest that the limitation can be overcome with data flow analysis that could help determine which loops increment is used by the indices in the array accesses. The authors add that another limitation of AlgoProf is that it can only infer a cost function for algorithms that are operational on data structures (Moret 1015). They also state that AlgoProf’s shortcoming is its overhead, both in terms of space and time. Moreover, despite its effectiveness as seen in the results, AlgoProf produces a repetition tree for each thread, and this leads to it ignoring any communication existing between the threads. Another key limitation of AlgoProf is that its correctness in what it deems an algorithm is doubtable since all it can do is match the intuition of a human developer.
De Vries, Katja. “Identity, profiling algorithms and a world of ambient intelligence.” Ethics and information technology 12.1 (2010): 71-85.
Forth, Shaun. Recent Advances in Algorithmic Differentiation. , 2012. Internet resource.
Hildebrandt, Mireille, and Katja De Vries. Privacy, Due Process and the Computational Turn: The Philosophy of Law Meets the Philosophy of Technology. Routledge, 2013.
Jazayeri, Mehdi, R Loos, and David R. Musser. Generic Programming: International Seminar on Generic Programming, Dagstuhl Castle, Germany, April 21-May 1 1998 : Selected Papers. Berlin: Springer, 2000. Print.
Joux, Antoine. Algorithmic cryptanalysis. CRC Press, 2009.
Leshik, Edward A, and Jane Cralle. An Introduction to Algorithmic Trading: Basic to Advanced Strategies. Chichester, West Sussex, UK: Wiley, 2011. Print.
Maros, István. Computational Techniques of the Simplex Method. Boston [u.a.: Kluwer Academic Publ, 2003. Print.
Moret, Bernard ME, David A. Bader, and Tandy Warnow. “High-Performance Algorithmic Engineering for Computationa Phylogenetics.” Computational Science-ICCS 2001. Springer Berlin Heidelberg, 2001. 1012-1021.
Ross, Greg, Alistair Morrison, and Matthew Chalmers. “Coordinating views for data visualisation and algorithmic profiling.” Coordinated and Multiple Views in Exploratory Visualization, 2004. Proceedings. Second International Conference on. IEEE, 2004.
Zaparanuks, Dmitrijs., & Hauswirth, Matthias. “Algorithmic profiling.” Journal of Software Engineering and Development 23.3 (2012): 67-76.