ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* directsetup vs setups
@ 2021-11-15  5:24 Rik Kabel via ntg-context
  2021-11-15  8:21 ` Denis Maier via ntg-context
  2021-11-15  9:38 ` Hans Hagen via ntg-context
  0 siblings, 2 replies; 7+ messages in thread
From: Rik Kabel via ntg-context @ 2021-11-15  5:24 UTC (permalink / raw)
  To: mailing list for ConTeXt users; +Cc: Rik Kabel

Hello list,

Can anyone provide a description of, or a point to a description of, the 
differences between setups= and directsetup= for including setups? I 
searched the list archive and the documents and found nothing. (That may 
indicate my level of search foo, but nonetheless I am in need of help 
with this.)

-- 
Rik

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: directsetup vs setups
  2021-11-15  5:24 directsetup vs setups Rik Kabel via ntg-context
@ 2021-11-15  8:21 ` Denis Maier via ntg-context
  2021-11-15  9:38 ` Hans Hagen via ntg-context
  1 sibling, 0 replies; 7+ messages in thread
From: Denis Maier via ntg-context @ 2021-11-15  8:21 UTC (permalink / raw)
  To: ntg-context; +Cc: denis.maier

Oh yeah, I'd like to know more about this as well. Also, what about \fastsetup?

Denis

> -----Ursprüngliche Nachricht-----
> Von: ntg-context <ntg-context-bounces@ntg.nl> Im Auftrag von Rik Kabel
> via ntg-context
> Gesendet: Montag, 15. November 2021 06:24
> An: mailing list for ConTeXt users <ntg-context@ntg.nl>
> Cc: Rik Kabel <ConTeXt@rik.users.panix.com>
> Betreff: [NTG-context] directsetup vs setups
> 
> Hello list,
> 
> Can anyone provide a description of, or a point to a description of, the
> differences between setups= and directsetup= for including setups? I
> searched the list archive and the documents and found nothing. (That may
> indicate my level of search foo, but nonetheless I am in need of help with
> this.)
> 
> --
> Rik
> 
> __________________________________________________________
> _________________________
> If your question is of interest to others as well, please add an entry to the
> Wiki!
> 
> maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-
> context
> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
> archive  : https://bitbucket.org/phg/context-mirror/commits/
> wiki     : http://contextgarden.net
> __________________________________________________________
> _________________________
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: directsetup vs setups
  2021-11-15  5:24 directsetup vs setups Rik Kabel via ntg-context
  2021-11-15  8:21 ` Denis Maier via ntg-context
@ 2021-11-15  9:38 ` Hans Hagen via ntg-context
  2021-11-15 18:06   ` Rik Kabel via ntg-context
  1 sibling, 1 reply; 7+ messages in thread
From: Hans Hagen via ntg-context @ 2021-11-15  9:38 UTC (permalink / raw)
  To: Rik Kabel via ntg-context; +Cc: Hans Hagen

On 11/15/2021 6:24 AM, Rik Kabel via ntg-context wrote:
> Hello list,
> 
> Can anyone provide a description of, or a point to a description of, the 
> differences between setups= and directsetup= for including setups? I 
> searched the list archive and the documents and found nothing. (That may 
> indicate my level of search foo, but nonetheless I am in need of help 
> with this.)
\setup      : takes a list ({...} or [...])
\directsetup: supports gridsnapping, only one setup
\fastsetup  : the fastest, only one setup

concerning performance, i wonder if you'll notice it

\starttext
     \startsetups test
     \stopsetups

     \testfeatureonce{100000}{\setup      {test}} \elapsedtime \par
     \testfeatureonce{100000}{\setup      [test]} \elapsedtime \par
     \testfeatureonce{100000}{\directsetup{test}} \elapsedtime \par
     \testfeatureonce{100000}{\fastsetup  {test}} \elapsedtime \par
\stoptext

because often what's done in the setup is taking the time, just test

     \startsetups test
         {\bf}
     \stopsetups

you can volunteer to wikify it

Hans


-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: directsetup vs setups
  2021-11-15  9:38 ` Hans Hagen via ntg-context
@ 2021-11-15 18:06   ` Rik Kabel via ntg-context
  2021-11-15 18:54     ` Wolfgang Schuster via ntg-context
  2021-11-15 21:33     ` Hans Hagen via ntg-context
  0 siblings, 2 replies; 7+ messages in thread
From: Rik Kabel via ntg-context @ 2021-11-15 18:06 UTC (permalink / raw)
  To: Hans Hagen via ntg-context; +Cc: Rik Kabel


[-- Attachment #1.1: Type: text/plain, Size: 2592 bytes --]


On 2021-11-15 04:38, Hans Hagen via ntg-context wrote:
> On 11/15/2021 6:24 AM, Rik Kabel via ntg-context wrote:
>> Hello list,
>>
>> Can anyone provide a description of, or a point to a description of, 
>> the differences between setups= and directsetup= for including 
>> setups? I searched the list archive and the documents and found 
>> nothing. (That may indicate my level of search foo, but nonetheless I 
>> am in need of help with this.)
> \setup      : takes a list ({...} or [...])
> \directsetup: supports gridsnapping, only one setup
> \fastsetup  : the fastest, only one setup
>
> concerning performance, i wonder if you'll notice it
>
> \starttext
>     \startsetups test
>     \stopsetups
>
>     \testfeatureonce{100000}{\setup      {test}} \elapsedtime \par
>     \testfeatureonce{100000}{\setup      [test]} \elapsedtime \par
>     \testfeatureonce{100000}{\directsetup{test}} \elapsedtime \par
>     \testfeatureonce{100000}{\fastsetup  {test}} \elapsedtime \par
> \stoptext
>
> because often what's done in the setup is taking the time, just test
>
>     \startsetups test
>         {\bf}
>     \stopsetups
>
> you can volunteer to wikify it
>
> Hans
Happy to wikify once I understand it.

On your empty performance test, I get around 0.10, .11, .08 for direct, 
and 0.4 for fast. With the grouped styling, those balloon to 0.50, 0.56, 
0.48, and 0.44.

So, some follow-up questions:

 1. What do you mean by "only one setup" in the description of
    directsetup and fastsetup? I have examples of using two different
    directsetup in one after key, so it does not seem to mean that.
 2. What is meant by saying that directsetup supports gridsnapping? Do
    you mean that fastsetup does not? (If that is the case, should a
    module writer not use fastsetup because it might be used in a
    document that requires a grid?)
 3. Is the support for {} and [] in setup simply to maintain legacy
    support for {}, or are there reasons to choose one over the other? I
    do see consistently faster times with the curlies.
 4. Are there operations that are supported in directsetup that are not
    supported in setup or fastsetup? Are there operations supported in
    fastsetup that are not supported in setup or directsetup?
 5. Is it fair to say that setup can do the most, directsetup a bit
    less, and fastsetup is the most restrictive? Except for the most
    performance-constrained documents, setup is a safe choice, but when
    constructing modules or performance tuning, the others might be tested?

-- 
Rik

[-- Attachment #1.2: Type: text/html, Size: 3563 bytes --]

[-- Attachment #2: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: directsetup vs setups
  2021-11-15 18:06   ` Rik Kabel via ntg-context
@ 2021-11-15 18:54     ` Wolfgang Schuster via ntg-context
       [not found]       ` <c4306f2b-3555-cb6f-787b-fafb98fe2c79@rik.users.panix.com>
  2021-11-15 21:33     ` Hans Hagen via ntg-context
  1 sibling, 1 reply; 7+ messages in thread
From: Wolfgang Schuster via ntg-context @ 2021-11-15 18:54 UTC (permalink / raw)
  To: mailing list for ConTeXt users, Rik Kabel via ntg-context
  Cc: Wolfgang Schuster, Rik Kabel


[-- Attachment #1.1: Type: text/plain, Size: 2962 bytes --]

Rik Kabel via ntg-context schrieb am 15.11.2021 um 19:06:
> So, some follow-up questions:
>
> 1. What do you mean by "only one setup" in the description of 
> directsetup and fastsetup? I have examples of using two different 
> directsetup in one after key, so it does not seem to mean that.

With \directsetup, \fastsetup and \setup (I'm correcting Hans here) you 
can pass only the name of a single setups-environment as argument, e.g.

     \directsetup{my_fancy_setup}

while \setups allows you to pass a list of names, e.g.

     \setups[custom_setup_a,custom_setup_b,...]

> 2. What is meant by saying that directsetup supports gridsnapping? Do 
> you mean that fastsetup does not? (If that is the case, should a 
> module writer not use fastsetup because it might be used in a document 
> that requires a grid?)

The \startsetups environment has a optional argument which accepts (at 
the moment) the "grid" keyword to set values which are only used when 
grid snapping (\setuplayout[grid=yes]) is enabled, e.g.

\startsetups [grid] [my_fancy_setup]
     % settings which are used when grid mode is enabled
\stopsetups

\startsetups [my_fancy_setup]
     % settings which are used when grid mode is disabled
     % or when no grid related setups with the same name exist
\stopsetups

When you now use \directsetup{my_fancy_setup} (or \setup[...]) ConTeXt 
checks if grid mode is enabled and selects the right settings but 
\fastsetup never performs this check and always uses the non grid 
settings. The \fastsetup command is even more basic because it doesn't 
even check if there is a setups environment with the given name which is 
done by the other commands.

> 3. Is the support for {} and [] in setup simply to maintain legacy 
> support for {}, or are there reasons to choose one over the other? I 
> do see consistently faster times with the curlies.

You can run Hans example with MkIV and the differences should be even 
bigger because the check for [] is slower here while in LMTX it's a 
engine feature. The main difference in LMTX is a extra expansion for 
\setup compared to \directsetup.

> 4. Are there operations that are supported in directsetup that are not 
> supported in setup or fastsetup? Are there operations supported in 
> fastsetup that are not supported in setup or directsetup?

There is no difference between \setup and \directsetup but \fastsetup 
should only be used when you can ensure the requested environment exists.

> 5. Is it fair to say that setup can do the most, directsetup a bit 
> less, and fastsetup is the most restrictive? Except for the most 
> performance-constrained documents, setup is a safe choice, but when 
> constructing modules or performance tuning, the others might be tested?
>

As I already wrote before there is no difference between \setup and 
\directsetup. When you care about performance \directsetup is the wrong 
start because you won't notice a difference.

Wolfgang


[-- Attachment #1.2: Type: text/html, Size: 4033 bytes --]

[-- Attachment #2: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: directsetup vs setups
  2021-11-15 18:06   ` Rik Kabel via ntg-context
  2021-11-15 18:54     ` Wolfgang Schuster via ntg-context
@ 2021-11-15 21:33     ` Hans Hagen via ntg-context
  1 sibling, 0 replies; 7+ messages in thread
From: Hans Hagen via ntg-context @ 2021-11-15 21:33 UTC (permalink / raw)
  To: Rik Kabel via ntg-context; +Cc: Hans Hagen

On 11/15/2021 7:06 PM, Rik Kabel via ntg-context wrote:

> On your empty performance test, I get around 0.10, .11, .08 for direct, 
> and 0.4 for fast. With the grouped styling, those balloon to 0.50, 0.56, 
> 0.48, and 0.44.
just for the record, here with lmtx i get (on a 2013 laptop):

0.128 0.130 0.114 0.057
0.686 0.674 0.660 0.602

while mkiv does:

0.211 0.224 0.131 0.055
0.763 0.767 0.677 0.597

(normally one will use at least a million tests because th elast digot 
is kind of meaningless; also the used compiler matters)

but i bet that on an average job our machines don't perform too 
different (simple tests like these are happily using the cpu cache)

it's not that easy to make tex jobs run faster but also not that hard to 
make them run slower, which i try to avoid -)

Hans

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: directsetup vs setups
       [not found]       ` <c4306f2b-3555-cb6f-787b-fafb98fe2c79@rik.users.panix.com>
@ 2021-11-15 22:48         ` Wolfgang Schuster via ntg-context
  0 siblings, 0 replies; 7+ messages in thread
From: Wolfgang Schuster via ntg-context @ 2021-11-15 22:48 UTC (permalink / raw)
  To: Rik Kabel; +Cc: Wolfgang Schuster, mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 3333 bytes --]



Rik Kabel schrieb am 15.11.2021 um 22:51:
>
> Wolfgang,
>
> Can you expand on the following statements from your reply?
>
>     You can run Hans example with MkIV and the differences should be
>     even bigger because the check for [] is slower here while in LMTX
>     it's a engine feature. The main difference in LMTX is a extra
>     expansion for \setup compared to \directsetup.
>
>     there is no difference between \setup and \directsetup
>
> Are you saying:
>
> 1. When [] are used with \setup, expansion of the contents is done 
> differently than when {} are used.

It doesn't matter which form you use for \setup.

What I'm trying to say is that \setup is slower (or better was slower in 
MkIV) than \directsetup because \setup has to check first if the name is 
passed within brackets or as normal argument in braces.

The code in MkIV would look similar to this:

\def\setup
   {\doifnextcharelse[
      \setup_brackets
      \setup_braces}

\def\setup_brackets[#1]%
   {\directsetup{#1}}

\def\setup_braces#1%
   {\directsetup{#1}}

> 2. There is no significant processing time difference between \setup 
> and \directsetup.
>

When I run the following example on my machine

\starttext

\startsetups [dummy]
\stopsetups

\testfeatureonce{100000}{\setup      {test}} \elapsedtime \par
\testfeatureonce{100000}{\directsetup{test}} \elapsedtime \par

\stoptext

I get these times.

# MkIV

\setup       : 0.136s
\directsetup : 0.079s

# LMTX

\setup       : 0.083 seconds
\directsetup : 0.071 seconds

Add additional stuff in the setup environment and the difference between 
\setup and \directsetup doesn't matter anymore.

> 3. There is additional expansion performed for \setup compared to 
> \directsetup.
>

Although this isn't completely true (but very close) the definition for 
\setup in LMTX is like this:

\def\setup#1{\directsetup{#1}}

> 4. Under LMTX, because {} and [] handling overhead is so similar, the 
> most visible processing time difference to users is from the 
> difference in  expansion between \setup and \directsetup.
>
> I think you are saying that 2, 3, and 4 are true, but that 1 is not true.
>
> If that is the case, can you provide an example that demonstrates the 
> difference in expansion between \setup and \directsetup?
>
> Also, as far as expansion, is \fastsetup like \setup or like \directsetup?
>

\setup and \directsetup are similar. \fastsetup is like the name implies 
a faster version which ignores grid mode and doesn't care whether the 
requested environment even exists.

> My simple testing shows no difference between setup, directsetup, and 
> fastsetup for namespace set and reset. Is it your understanding that 
> they all behave the same?
>

No, \fastsetup behaves different because it leaves \relax\empty in the 
input when you pass the name of a not existing environment.

It shouldn't matter in normal usage but below are two examples.


Example 1:

\starttext

\tex{directsetup}

\scratchcounter 12\directsetup{unknown_a}34

\the\scratchcounter

\tex{fastsetup}

\scratchcounter 12\fastsetup{unknown_b}34

\the\scratchcounter

\stoptext


Example 2:

\starttext

\normalexpanded{\noexpand\firstoftwoarguments\directsetup{unknown_a}xy}

\normalexpanded{\noexpand\firstoftwoarguments\fastsetup{unknown_b}xy}

\stoptext


Wolfgang


[-- Attachment #1.2: Type: text/html, Size: 4800 bytes --]

[-- Attachment #2: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-11-15 22:48 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-15  5:24 directsetup vs setups Rik Kabel via ntg-context
2021-11-15  8:21 ` Denis Maier via ntg-context
2021-11-15  9:38 ` Hans Hagen via ntg-context
2021-11-15 18:06   ` Rik Kabel via ntg-context
2021-11-15 18:54     ` Wolfgang Schuster via ntg-context
     [not found]       ` <c4306f2b-3555-cb6f-787b-fafb98fe2c79@rik.users.panix.com>
2021-11-15 22:48         ` Wolfgang Schuster via ntg-context
2021-11-15 21:33     ` Hans Hagen via ntg-context

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 NNTP newsgroup(s).