Number: 1519

Date: 27-Jun-84 14':39':04

Submitter: Sannella.PA

Source: MASINTER.PA

Subject: RECORDACCESS is too slow

Lisp Version: 

Description: '
Date': 24 Jun 84 23':34 PDT'
From': Shrager.pa'
Subject': Lisp': RecordAccess is *REAL* slow'
To': LispSupport.pa'
cc': masinter'
'
Lisp System Date': 19-Jun-84 14':48':49'
Machine': Dorado (Shrager)'
Microcode version': 24,4'
Memory size': 10000'
Frequency': Always'
Impact': Serious'
'
[Larry, there isn''t any such thing as a "type" field on this AR form, so I leave it to Sannella to make an "AR of type Performance" out of this mail message as per your request.]'
'
I''ve computed some timings for RECORDACCESS versus FETCH and FFETCH.  All figures are for N=3 and have a standard deviation of <0.05.  These were collected from the "CPU Time" field of TIMEALL''s output.'
'
For the function':'
'
(LAMBDA NIL '
  (PROG ((I 0) TESTRECORD) '
	(RECORD FOO (BAR)) '
	(SETQ TESTRECORD (create FOO BAR ← 5)) '
   LOOP '
	(COND ((EQ 10000 (SETQ I '
					(IPLUS <*** Fetch Expr ***> '
							I)))'
		     (RETURN (QUOTE DONE))) '
		    (T (GO LOOP)))))'
'
'
With <*** Fetch Expr ***> ='
'
	5'
'
		Uncompiled = 1.87'
		Compiled = 0.05'
'
	(RECORDACCESS ''BAR TESTRECORD)'
'
		Uncompiled = 21.8 sec'
		Compiled = 19.1 '
'
	(RECORDACCESS ''(FOO BAR) TESTRECORD)'
'
		Uncompiled = 20.0 sec'
		Compiled = 17.2'
'
	(FETCH BAR TESTRECORD)'
'
		Uncompiled = 2.2 '
		Compiled = 0.01'
'
	(FFETCH BAR TESTRECORD)'
'
		Uncompiled = 2.2'
		Compiled = 0.01'
'
	(EVAL (COND ''FFETCH ''(BAR TESTRECORD)))'
'
		Uncompiled = ~ 47 secs (SD>0.5)'
		Compiled = ~46 sec (SD>0.5)'
		'
I''d say that the manual was right on the mark about recordaccess': It''s better than EVAL-CONS but not a whole helluva lot.  I guess I just don''t understand what it has to do that''s all that complex such that an uncompiled FETCH is 10 times as fast.'
'
-- Jeff'


Workaround: 

Test Case: 

Edit-By: 

Edit-Date: 27-Jun-84 14':34':02

Attn: Masinter

Assigned To: 

In/By: 

Disposition: 

System: Programming Environment

Subsystem: Record Package

Machine: 

Disk: 

Microcode Version: 

Memory Size: 

File Server: 

Server Software Version: 

Difficulty: Hard

Frequency: Everytime

Impact: Moderate

Priority: Perhaps

Status: Open

Problem Type: Performance

Source Files: