Abstract
Byte-code representation has been used to implement several programming languages such as Lisp, ML, Prolog, or Java. In this work, we discuss the impact of several emulator optimisations for the Prolog system YAP. YAP obtains performance comparable or exceeding well-known Prolog systems by applying several different styles of optimisations, such as improving the emulation mechanism, exploiting the characteristics of the underlying hardware, and improving the abstract machine itself. We give throughout a detailed performance analysis, demonstrating that low-level optimisations can have a very significant impact on the whole system and across a range of architectures.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Andersson, J., Andersson, S., Boortz, K., Carlsson, M., Nilsson, H., Sjoland, T., Widén, J.: SICStus Prolog User’s Manual. Technical report, Swedish Institute of Computer Science, SICS Technical Report T93-01 (November 1997)
Arnold, K., Gosling, J.: The Java Programming Language. Addison Wesley, Reading (1996)
Bell, J.R.: Threaded code. Communications of the ACM 16(6), 370–372 (1973)
Bueno, F.,, M.G.: Effectiveness of Abstract Interpretation in Automatic Parallelization: A Case Study in Logic Programming. ACM TOPLAS (1998)
Carlsson, M.: On the efficiency of optimised shallow backtracking in Compiled Prolog. In: Proceedings of the Sixth International Conference on Logic Programming, pp. 3–15. MIT Press, Cambridge (1989)
Carlsson, M.: Design and Implementation of an OR-Parallel Prolog Engine. SICS Dissertation Series 02, The Royal Institute of Technology (1990)
Codognet, P., Diaz, D.: wamcc: Compiling Prolog to C. In: 12th International Conference on Logic Programming. The MIT Press, Cambridge (1995)
Damas, L., Santos Costa, V., Reis, R., Azevedo, R.: YAP User’s Guide and Reference Manual (1998), http://www.ncc.up.pt/vsc/Yap
Debaere, E.H., Van Campenhout, J.M.: Interpretation and Instruction Path Coprocessing. The MIT Press, Cambridge (1990)
Ertl, M.A.: Stack caching for interpreters. In: SIGPLAN 1995 Conference on Programming Language Design and Implementation, pp. 315–327 (1995)
Gabriel, R.P.: Performance and evaluation of Lisp systems. MIT Press, Cambridge (1985)
Haygood, R.C.: Native code compilation in SICStus Prolog. In: Hentenryck, P.V. (ed.) Proceedings of the Eleventh International Conference on Logic Programming, MIT Press, Cambridge (1994)
Hermenegildo, M., Puebla, G., Marriott, K., Stuckey, P.: Incremental Analysis of Logic Programs. In: International Conference on Logic Programming, pp. 797–811. MIT Press, Cambridge (1995)
Klint, P.: Interpretation techniques. Software Practice and Experience 11, 963–973 (1981)
Le Charlier, B., Van Hentenryck, P.: Experimental evaluation of a generic abstract interpretation algorithm for PROLOG. ACM TOPLAS 16(1), 35–101 (1994)
Magnusson, P.S., Larsson, F., Moestedt, A., Werner, B., Dahlgren, F., Karlsson, M., Lundholm, F., Nilsson, J., Stenström, P., Grahn, H.: SimICS/sun4m: A virtual workstation. In: Proceedings of the USENIX 1998 Annual Technical Conference, Berkeley, USA, June 15-19, pp. 119–130 USENIX Association (1998)
Milner, R., Tofte, M., Harper, R.: The Definition of Standard ML. MIT Press, Cambridge (1990)
Jones, S.L.P., Nordin, T., Oliva, D.: C–: A Portable Assembly Language. In: Clack, C., Hammond, K., Davie, T. (eds.) IFL 1997. LNCS, vol. 1467, p. 1. Springer, Heidelberg (1998)
Proebsting, T.A.: Optimizing an ANSI C interpreter with superoperators. In: Principles of Programming Languages (POPL 1995), pp. 322–332 (1995)
Romer, T.H., Lee, D., Voelker, G.M., Wolman, A., Wong, W.A., Baer, J.-L., Bershad, B.N., Levy, H.M.: The structure and performance of interpreters. In: Architectural Support for Programming Languages and Operating Systems (ASPLOS-VII), pp.150–159 (1996)
Rosenblum, M., Herrod, S.A., Witchel, E., Gupta, A.: Complete computer system simulation: The SimOS approach. IEEE parallel and distributed technology: systems and applications 3(4), 34–43 (Winter 1995)
Santos Costa, V.: ImplementaĂ§Ă£o de Prolog. In: Provas de aptidĂ£o pedagĂ³gica e capacidade cientĂfica. Universidade do Porto, Dezembro (1988)
Stallman, R.M.: Using and porting gcc. Technical report, The Free Software Foundation (1993)
Sterling, L., Shapiro, E.: The Art of Prolog. MIT Press, Cambridge (1994)
Sussman, G.J., Steele Jr., G.L., Gabriel, R.P.: A brief introduction to Lisp. ACM SIGPLAN Notices 28(3), 361–362 (1993)
Tarau, P., De Bosschere, K., Demoen, B.: Partial Translation: Towards a Portable and Efficient Prolog Implementation Technology. Journal of Logic Programming 29(1–3), 65–83 (1996)
Taylor, A.: Parma–bridging the performance gap between imperative and logic programming. The Journal of Logic Programming, 1–3 (October 1996)
Van Roy, P.: Can Logic Programming Execute as Fast as Imperative Programming? PhD thesis, University of California at Berkeley (November 1990)
Van Roy, P.: 1983-1993: The Wonder Years of Sequential Prolog Implementation. The Journal of Logic Programming, 19–20 (May/July 1994)
Warren, D.H.D.: An Abstract Prolog Instruction Set. Technical Note 309, SRI International (1983)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Costa, V.S. (1999). Optimising Bytecode Emulation for Prolog. In: Nadathur, G. (eds) Principles and Practice of Declarative Programming. PPDP 1999. Lecture Notes in Computer Science, vol 1702. Springer, Berlin, Heidelberg. https://doi.org/10.1007/10704567_16
Download citation
DOI: https://doi.org/10.1007/10704567_16
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-66540-3
Online ISBN: 978-3-540-48164-5
eBook Packages: Springer Book Archive