[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Help with eql specializers
- To: Daniel A Haug <email@example.com>
- Subject: Re: Help with eql specializers
- From: kanderso@DINO.BBN.COM
- Date: Mon, 24 Jul 89 09:17:25 -0400
- Cc: commonloops.pa@Xerox.COM, firstname.lastname@example.org
- In-reply-to: Your message of Sun, 23 Jul 89 21:43:57 -0500. <8907240243.AA14221@shrike.Austin.Lockheed.COM>
- Redistributed: commonloops.pa
Date: Sun, 23 Jul 89 21:43:57 CDT
From: Daniel A Haug <email@example.com>
Subject: Help with eql specializers
I've hit upon a major performance problem with PCL, and I don't know what
caused it. The only thing I know for sure is that it happened when I
began using eql specializers on a certain generic function. My typical
runtime on this function jumped from around .03 seconds to about 6 seconds.
I ran the symbolics Metering Interface over the form, and found that
almost all of the time is spent in PCL:NOTICE-METHODS-CHANGE-1. Inside
of NOTICE-METHODS-CHANGE-1, the run-time is split between
COMPUTE-COMBINED-METHODS and UPDATE-DISCRIMINATOR-CODE of STANDARD-GENERIC-
FUNCTION. In fact, I placed a break loop in NOTICE-METHODS-CHANGE-1, and
saw that it was getting called a zillion (excuse me) times.
Can you extract a short example we can play with? Off hand, i'd say
that notice-methods-change... is only called when a generic function
is invalidated. It turns out that lots of unnecessary invalidation
occurs when classes are defined. However, i'm suprised that this
happens when everything is loaded, and you are running a program.
SHould I be avoiding EQL specializers? Can I expect to always pay this
kind of performance penalty for using them? Or is there a problem? The
generic function in question here as a total of four methods defined on
it, three of which have EQL specializers.
Eql specializers were not optimized well in the previous PCL's, and
i'm not sure what happens now.
Any help is really appreciated. I'm going nuts over this, because it
is tied in with menu clicks, and my users are waiting over 6 seconds now
between clicking on a window, and getting a response.