git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1580 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
		
			
				
	
	
		
			61 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| =================================================================
 | |
| 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.
 |