[comp.ai.shells] Performance tests

dowless@sae.sae.com (Alan Dowless) (01/09/91)

	
	Scott,
		I'm sending you the comparable knowledge base that I
		ran with KES 3.0 on a SUN Sparc 1.  This knowledge
  		base simply fires "init rule" 30000 in 23 seconds.
		This calculates to: 78260 rule firings per minute.
		If you haven't talked to Tamara Huebschman, call her
		and she will be happy to send you out an evaluation
 		copy of KES 3.0.

					Thanks, Alan
attributes:

f:int.
y:int [default: 30000].

%
rules:

init rule:
if true then
reassert f=1.
endif.

%

actions:

   while y # 0 do 
     obtain f.
     erase f.
     reassert y= y-1.
   endwhile.
 
%

acha@CS.CMU.EDU (Anurag Acharya) (01/11/91)

In article <7441@uklirb.informatik.uni-kl.de> dowless@sae.sae.com (Alan Dowless) writes:
> I'm sending you the comparable knowledge base that I
> I ran with KES 3.0 on a SUN Sparc 1.  This knowledge
> base simply fires "init rule" 30000 in 23 seconds.
> This calculates to: 78260 rule firings per minute.
> Thanks, Alan
>  attributes:
>  f:int.
>  y:int [default: 30000].
>  %
>  rules:
>  init rule:
>  if true then
>  reassert f=1.
>  endif.
>   %
>   actions:
>      while y # 0 do 
>	obtain f.
>	erase f.
>	reassert y= y-1.
>      endwhile.
>   %

This particular benchmark means almost nothing. The task is so simple 
that it can be coded in languages with a wide range of expressiveness.
And it bears no similarity to the sort of programs that will eventually
be written/run on the system. The primary characteristic of production
system languages (call them shell languages if you will) is their 
pattern matching power. This benchmark makes no attempt to exercise it
in any way.

In this case, the comparison is between a single rule firing 30000 times 
(from the original post on CLIPS) and a single rule causing a C-like loop 
to be executed 30000 times (in this example). 

There are a set of production system languages (like the one used in the 
example), whose working memory consists of a set of variables declared at 
the top of the program and the match conditions consist of C-like predicate 
tests on the values of these variables. The pattern-matching power of such 
languages is puny compared to that of OPS5, OPS83, CLIPS and similar languages.
Such languages are little more than syntactically sugared versions of C-like 
languages. 

anurag

timm@runx.oz.au (Tim Menzies) (01/20/91)

In article <7463@uklirb.informatik.uni-kl.de> acha@CS.CMU.EDU (Anurag Acharya) writes:
>In article <7441@uklirb.informatik.uni-kl.de> dowless@sae.sae.com (Alan Dowless) writes:

[stuff deleted re rule-based performance tests]

I think that having some way of comparing different rule systems is a good
idea. May I suggest that the comparision be based on that old
favourite, the missionary & cannibal problem?

--
 _--_|\  Tim Menzies (timm@runxtsa.oz)        
/      \ HiSoft Expert Systems Group,	     
\_.--._/ 2-6 Orion Rd, Lane Cove, NSW, 2066 
         61 2 9297729(voice),61 2 4280200(fax) 

mikeb@wdl31.wdl.loral.com (Michael H Bender) (01/24/91)

In article <7478@uklirb.informatik.uni-kl.de> timm@runx.oz.au (Tim Menzies) writes:

   I think that having some way of comparing different rule systems is a good
   idea. May I suggest that the comparision be based on that old
   favourite, the missionary & cannibal problem?

I am very doubtful about the idea of having a single benchmark for
comparing different rule systems. What would the results mean? That the
shell was very good for solving the Missionary and Cannibal Problem? In all
my years of programming, I have never once been asked to write a fast
program to solve that particular problem.

The only time that benchmarks have value is when you have a whole series of
different benchmarks (such as the Gabriel Benchmarks) that each measure
different characteristics of the system, or the same characteristic under
different conditions. Otherwise, it seems like a pointless activity.

Mike Bender