Efficiency of difference-list programming
- The difference-list technique is described in literature as effective method for extending lists to the right without using calls of append/3. There exist some proposals for automatic transformation of list programs into differencelist programs. However, we are interested in construction of difference-list programs by the programmer, avoiding the need of a transformation step. In [GG09] it was demonstrated, how left-recursive procedures with a dangling call of append/3 can be transformed into right-recursion using the unfolding technique. For simplification of writing difference-list programs using a new cons/2 procedure was introduced. In the present paper, we investigate how efficieny is influenced using cons/2. We measure the efficiency of procedures using accumulator technique, cons/2, DCG’s, and difference lists and compute the resulting speedup in respect to the simple procedure definition using append/3. Four Prolog systems were investigated and we found different behaviour concerning the speedup by difference lists. A resultThe difference-list technique is described in literature as effective method for extending lists to the right without using calls of append/3. There exist some proposals for automatic transformation of list programs into differencelist programs. However, we are interested in construction of difference-list programs by the programmer, avoiding the need of a transformation step. In [GG09] it was demonstrated, how left-recursive procedures with a dangling call of append/3 can be transformed into right-recursion using the unfolding technique. For simplification of writing difference-list programs using a new cons/2 procedure was introduced. In the present paper, we investigate how efficieny is influenced using cons/2. We measure the efficiency of procedures using accumulator technique, cons/2, DCG’s, and difference lists and compute the resulting speedup in respect to the simple procedure definition using append/3. Four Prolog systems were investigated and we found different behaviour concerning the speedup by difference lists. A result of our investigations is, that an often advice given in the literature for avoiding calls append/3 could not be confirmed in this strong formulation.…
Author details: | Ulrich Geske, Hans-Joachim Goltz |
---|---|
URN: | urn:nbn:de:kobv:517-opus-41563 |
Publication type: | Conference Proceeding |
Language: | English |
Publication year: | 2010 |
Publishing institution: | Universität Potsdam |
Contributing corporation: | Gesellschaft für Logische Programmierung e.V. |
Release date: | 2010/03/04 |
Source: | Proceedings of the 23rd Workshop on (Constraint) Logic Programming 2009 / Geske, Ulrich; Wolf, Armin (Hrsg.). - Potsdam : Universitätsverlag, 2010. - S. 177 - 186 |
Organizational units: | Mathematisch-Naturwissenschaftliche Fakultät / Institut für Informatik und Computational Science |
DDC classification: | 0 Informatik, Informationswissenschaft, allgemeine Werke / 00 Informatik, Wissen, Systeme / 004 Datenverarbeitung; Informatik |
Collection(s): | Universität Potsdam / Tagungsbände/Proceedings (nicht fortlaufend) / Proceedings of the 23rd Workshop on (Constraint) Logic Programming 2009 / Practice of Logic Programming |
License (German): | Keine öffentliche Lizenz: Unter Urheberrechtsschutz |