File: NOTES

package info (click to toggle)
yap 5.1.1-3
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 16,124 kB
  • ctags: 14,650
  • sloc: ansic: 122,796; perl: 22,545; sh: 3,768; java: 1,277; makefile: 1,191; xml: 739; tcl: 624; lisp: 142; awk: 9
file content (60 lines) | stat: -rw-r--r-- 2,981 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
=================================================================
Logtalk - Object oriented extension to Prolog
Release 2.27.1

Copyright (c) 1998-2006 Paulo Moura.  All Rights Reserved.
=================================================================


To load this example and for sample queries, please see the SCRIPT file.

This folder provides simple benchmark tests for comparing Logtalk message 
sending performance with direct predicates calls in plain Prolog.
These benchmarks may also be used for comparing Logtalk message sending 
performance across Prolog compilers.

This example is made of five source files:

	benchmark.lgt
		contains the benchmark predicates
	plain.lgt
		contains a definition for a list length predicate and a predicate 
		for testing performance of the built-in predicates assertz/1 and 
		retract/1
	module.pl (not loaded by default; see below)
		contains the same definition of a list length predicate 
		encapsulated in a module
	object.lgt
		contains the same definition of a list length predicate 
		encapsulated in an object
	database.lgt
		contains predicates for testing the performance of the built-in 
		database methods assertz/1 and retract/1

You may have noticed above that the benchmark predicates and the predicates 
for plain Prolog testing are both encapsulated in Logtalk source files. The 
Logtalk compiler just copies the plain Prolog code to the generated Prolog 
files. The reason for using the .lgt extension for these files is just to 
make it possible to load all the example code using a single call to the 
logtalk_load/1 predicate.

By default, the benchmark tests on the SCRIPT file use a list of 30 elements 
as an argument to the list length predicates. Increasing the list length 
leads to decreasing performance differences between plain Prolog and Logtalk
as the list length computation time far outweighs the overhead of the message 
sending mechanism. Likewise, decreasing the list length leads to increasing 
performance differences between plain Prolog and Logtalk (up to the point you 
will be measuring the Logtalk message sending mechanism overhead compared to 
plain Prolog predicate calls). In real-life applications, only testing can 
give you a balanced view on the trade-offs between plain Prolog performance 
and Logtalk programming features.

By default, the loader.lgt file used to load the example code does not load 
the module.pl file. Edit this file if your Prolog compiler supports a module 
system and you want to run some comparative performance tests between plain 
Prolog, Prolog modules, and Logtalk objects. Note that you may need to edit 
the code on the module.pl file to make any necessary compatibility changes 
for your Prolog compiler module system. For most Prolog module systems, the 
performance of module calls is close or even identical to the performance of 
plain Prolog calls, specially when using imported predicates as opposed to 
using explicit module qualification.