Practical Aspects of Declarative Languages

Despite a lot of recent interest in purely functional data structures, for example [Ada93, Oka95, BO96, Oka96, OB97, Erw97], few have been benchmarked. Of these, even fewer have their performance qualified by how they are used. But how a data structure is used can significantly affect performance. This paper makes three original contributions. (1) We present an algorithm for generating a benchmark according to a given use of data structure. (2) We compare use of an automated tool based on this algorithm, with the traditional technique of hand-picked benchmarks, by benchmarking six implementations of random-access list using both methods. (3) We use the results of this benchmarking to present a decision tree for the choice of random-access list implementation, according to how the list will be used.

[1]  Wamberto Weber Vasconcelos,et al.  An Adaptation of Dynamic Slicing Techniques for Logic Programming , 1998, SBIA.

[2]  Ricardo Bianchini,et al.  Algorithms for categorizing multiprocessor communication under invalidate and update-based coherence protocols , 1995, Proceedings of Simulation Symposium.

[3]  Wamberto Weber VasconcelosyDept A Method of Extracting Prolog Programming Techniques , 1994 .

[4]  David Stuart Robertson,et al.  A Simple Prolog Techniques Editor for Novice Users , 1991, ALPUK.

[5]  Ricardo Bianchini,et al.  Optimising Parallel Logic Programming Systems for Scalable Machines , 1998, Euro-Par.

[6]  Norbert E. Fuchs,et al.  Prolog Program Development via Enhanced Schema-based Transformations , 1995, LPE.

[7]  Evan Tick,et al.  Memory performance of Prolog architectures , 1987, The Kluwer international series in engineering and computer science.

[8]  Anoop Gupta,et al.  The directory-based cache coherence protocol for the DASH multiprocessor , 1990, ISCA '90.

[9]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[10]  Inês de Castro Dutra,et al.  Distributing and- and or-work in the Andorra-I parallel logic programming system , 1995 .

[11]  David H. D. Warren,et al.  Flexible scheduling of or-parallelism is Aurora: the Bristol scheduler , 1991 .

[12]  Rong Yang,et al.  Andorra I: a parallel Prolog system that transparently exploits both And-and or-parallelism , 1991, PPOPP '91.

[13]  Ricardo Bianchini,et al.  Evaluating the impact of coherence protocols on parallel logic programming systems , 1997, PDP.

[14]  Wamberto Weber Vasconcelos,et al.  Extracting, organising, designing and reusing Prolog programming techniques , 1995 .

[15]  Seif Haridi,et al.  An evaluation of Penny: a system for fine grain implicit parallelism , 1997, PASCO '97.

[16]  Chris Mellish,et al.  Abstract Interpretation of Prolog Programs , 1986, ICLP.

[17]  Inẽs de Castro Dutra,et al.  Strategies for scheduling and- and or- work in parallel logic programming systems , 1994, ICLP 1994.

[18]  Mireille Ducassé,et al.  A Backward Slicing Algorithm for Prolog , 1996, SAS.

[19]  Leon Sterling,et al.  The Art of Prolog - Advanced Programming Techniques , 1986 .

[20]  Anthony M. Sloane,et al.  Beyond traditional program slicing , 1996, ISSTA '96.

[21]  Thomas W. Reps,et al.  Speeding up slicing , 1994, SIGSOFT '94.

[22]  Livio Ricciulli,et al.  The detection and elimination of useless misses in multiprocessors , 1993, ISCA '93.

[23]  S Raina,et al.  Parallel Prolog on a scalable multiprocessor , 1992 .

[24]  Mark Weiser,et al.  Programmers use slices when debugging , 1982, CACM.

[25]  Anoop Gupta,et al.  The DASH Prototype: Logic Overhead and Performance , 1993, IEEE Trans. Parallel Distributed Syst..