home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / comp / object / 3318 < prev    next >
Encoding:
Internet Message Format  |  1992-08-25  |  3.1 KB

  1. Xref: sparky comp.object:3318 comp.lang.clos:727
  2. Path: sparky!uunet!haven.umd.edu!darwin.sura.net!mips!sdd.hp.com!uakari.primate.wisc.edu!ames!ads.com!saturn!doug
  3. From: doug@monet.ads.com (Doug Morgan)
  4. Newsgroups: comp.object,comp.lang.clos
  5. Subject: Re: Beginner's Question - CLOS
  6. Message-ID: <DOUG.92Aug25095415@monet.ads.com>
  7. Date: 25 Aug 92 17:54:15 GMT
  8. References: <16u2tpINN9ad@early-bird.think.com>
  9.     <1992Aug19.213818.21709@tfs.com>
  10.     <DCMARTIN.92Aug19151550@fascet.msi.com>
  11.     <170fu1INNmfh@early-bird.think.com>
  12.     <PCG.92Aug21005641@aberdb.aber.ac.uk>
  13.     <DAVIS.92Aug24110309@reaumur.ilog.fr> <DOUG.92Aug24104842@monet.ads
  14. Sender: usenet@ads.com (USENET News)
  15. Organization: Advanced Decision Systems, Mountain View, CA 94043, +1 (415)
  16.     960-7300
  17. Lines: 40
  18. In-Reply-To: davis@reaumur.ilog.fr's message of 25 Aug 92 08:32:47 GMT
  19.  
  20. In article <DAVIS.92Aug25103247@reaumur.ilog.fr> davis@reaumur.ilog.fr (Harley Davis) writes:
  21.  
  22.    The interesting optimization that was originally mentioned was
  23.    *statically* resolving generic function calls, not optimizing dynamic
  24.    dispatch.  To do this, you have to guarantee that the class hierarchy
  25.    is fixed and that all the methods attached to the generic function are
  26.    known.  Then, in some cases, you could resolve dispatch at
  27.    compile-time.  I suspect that most implementations already do a fairly
  28.    good job of optimizing dynamic dispatch in the ways you mention.
  29.  
  30. I never mentioned "dynamic dispatch."  I said "I suspect the CL spec,
  31. as is, allows for an automatic system building tool with dispatch
  32. optimizations that are based on the entire type graph and are capable
  33. of being *dynamically* maintained in the face of class graph changes."
  34. ("Dynamic" never modified dispatch.  Rather, "dynamically" applied to
  35. the *maintenance* of whatever collection of dispatch mechanisms you
  36. use.)  The dispatch optimization with the biggest bang is precisely
  37. statically resolving generic function calls (especially to the point
  38. of inlining small methods) and that is precisely what I was trying to
  39. say that the CL spec allows.  I was, for instance, arguing that CL
  40. supports compiling static resolution of dispatch at one time, noticing
  41. that the class graph later changes, and then recompiling the user code
  42. that previously compiled into static dispatch to now do dynamic
  43. dispatch.  Another possible dispatch optimization (dynamic this time)
  44. would be to generate method dispatch tables (shades of C++) for
  45. generic functions that currently only effectively specialize on one
  46. argument.
  47.  
  48. I do agree that this would only make CL bigger, more complicated, and
  49. even subject to more strange run-time behaviors.  It goes against your
  50. reasonable desire for "small" lisps.  However, some people might go
  51. for the possibility of truly blazing speed combined with the full
  52. run-time flexibility of standard CL/CLOS.
  53.  
  54. doug
  55. --------------------------------------------------------------------
  56. Doug Morgan, doug@ads.com, (415) 960-7300
  57. Advanced Decision Systems (a division of Booz-Allen & Hamilton Inc.)
  58. 1500 Plymouth St., Mountain View, CA 94043-1230
  59. --------------------------------------------------------------------
  60.