unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Zack Weinberg <zack@codesourcery.com>
Cc: emacs-devel@gnu.org
Subject: Re: byte-opt.el addition - optimize list of compile-time constants
Date: Wed, 08 Dec 2004 20:55:34 -0800	[thread overview]
Message-ID: <87is7coyt5.fsf@codesourcery.com> (raw)
In-Reply-To: <87brd4qeoq.fsf-monnier+emacs@gnu.org> (Stefan Monnier's message of "Wed, 08 Dec 2004 23:35:01 -0500")

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> which is what (function ...) is for, right?  I am quite confused by
>> what the manual says about function vs. bare lambda expressions.
>
> No.  `function' is s special form, like `quote' and `while'.  But we're
> talking about sub-elements inside a quoted expression, i.e. random data
> which we have no clue whether it'll ever be used as code or not.  In such
> a context, neither `quote', nor `while' have any special meaning:
> they're only symbols.

See the other thread of the discussion.

> By the way: getting back to your original example:
>
> (when (require 'mmm-auto nil t)
>   (mmm-add-classes
>    '((md-embedded-c
>       :submode c-mode
>       :front "^{"
>       :back "^}"
>       :include-front t
>       :include-back t
>       ;; If the 'back' } is on a line by itself, include the carriage
>       ;; return too; this makes the submode background highlight look
>       ;; less strange.
>       :back-offset #'(lambda () (when (eq (following-char) ?\n)
>                                   (forward-char 1)))
>       )))
>
> How often is this code executed?  It doesn't smell like code you're using
> inside a loop, so efficiency is really completely irrelevant: the extra
> byte-codes and consing you get with backquotes is really a total non-issue.

The outer code is executed only once when the library is loaded.  The
embedded lambda *is* executed in a loop, which is why I care about it
getting compiled.  As I said in the original message, it is easy to
come up with cases where the extra byte-codes and consing from
backquotes *are* performance-relevant, but given how badly it breaks
things to enable that optimization, I'm prepared to drop that (unless
someone wants to help me debug weird byte-compiler crashes).

zw

  reply	other threads:[~2004-12-09  4:55 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-08  9:21 byte-opt.el addition - optimize list of compile-time constants Zack Weinberg
2004-12-08 16:56 ` Stefan Monnier
2004-12-08 18:59   ` Zack Weinberg
2004-12-08 19:27     ` Stefan Monnier
2004-12-08 19:45       ` Zack Weinberg
2004-12-08 19:56         ` Stefan Monnier
2004-12-08 20:14           ` Nick Roberts
2004-12-08 22:47       ` Zack Weinberg
2004-12-08 23:40         ` Stefan Monnier
2004-12-09  1:20           ` Zack Weinberg
2004-12-09  2:11             ` Stefan Monnier
2004-12-09  2:33               ` Zack Weinberg
2004-12-09  2:46                 ` Miles Bader
2004-12-09  3:08                   ` Zack Weinberg
2004-12-09  3:28                     ` Miles Bader
2004-12-09  3:48                       ` Zack Weinberg
2004-12-09  4:04                         ` Miles Bader
2004-12-09  4:41                           ` Zack Weinberg
2004-12-09  4:52                             ` Stefan Monnier
2004-12-09  5:33                               ` Zack Weinberg
2004-12-09  5:39                                 ` Miles Bader
2004-12-09  6:49                                   ` Zack Weinberg
2004-12-09 15:22                                     ` Thien-Thi Nguyen
2004-12-10  5:50                                       ` Richard Stallman
2004-12-09  9:22                                 ` David Kastrup
2004-12-09  4:54                             ` Miles Bader
2004-12-09  9:20                             ` David Kastrup
2004-12-09  4:35                 ` Stefan Monnier
2004-12-09  4:55                   ` Zack Weinberg [this message]
2004-12-09  5:13                     ` Stefan Monnier
2004-12-09  9:10           ` David Kastrup
2004-12-08 19:33     ` Paul Pogonyshev
2004-12-09 10:34       ` Andreas Schwab

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87is7coyt5.fsf@codesourcery.com \
    --to=zack@codesourcery.com \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).