|
From: | Sam Liddicott |
Subject: | Re: [Texmacs-dev] How texmacs is so slow for my macro |
Date: | Thu, 07 Apr 2011 09:47:48 +0100 |
User-agent: | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17pre) Gecko/20110406 Lanikai/3.1.10pre |
I'm supposing that the reason the whole document is "re-processed" when I insert a list item- even when it is the last use of that counter - is the way texmacs tries to optimise, I'm guessing that it tracks which macros change which global data.
As I use a single macro for all of my chunks (each having a counter) my macro gets marked as touching each of these counters, and so anything else that also uses those counters has to gen "re-processed" if the counter changes.
If I follow the texmacs style of defining a new command for each of my named chunks, I suppose that will also solve my problem. It would work along the lines of the new-list macro - and in fact it would work like a list macro with a custom counter that is not with'd to zero.
Please will a wizard confirm if this is likely to be so; for - and here is the problem - I don't want to have a different macro for each named code thread, I want the name to be a parameter.
If I am correct, will I still get the advantage with a wrapper like this: <assign|nf-chunk|<\macro|name|body> <compound|<merge|nf-chunk-|<arg|name>>> </macro>>Would texmacs be able to realise that nf-chunk was not the macro touching all the counters, but the inner macro?
This whole thing is based on speculation, and I'll try it of course... but I really hope for some dialog with one who knows...
Sam On 06/04/11 15:50, Sam Liddicott wrote:
In my case I fixed the slowness with this at the end of my environment:<if|<nf-last-chunklet?|<value|nf-name>>|<assign|<merge|code-line-|<value|nf-name>|-nr>|0>>nf-last-chunklet? uses some hackery to know if it is the last instance of the environment (for a particular nf-name) in the document by looking to see if there is a label defined based on the chunklet counter with 1 added to it.If it is the last chunklet, then the line counter does not need preserving, and zero-ing it keeps things quick.Sam On 06/04/11 14:11, Sam Liddicott wrote:I've simplified the whole deal with a new definition of list that does not reset item-nr to 0:<assign|list|<macro|item-render|item-transform|body|<with|current-item|<arg|item-render>|transform-item|<arg|item-transform>|<render-list|<arg|body>>>>><\enumerate> <item>one <item>two <item> <item>three <item>four </enumerate> hello joe <value|item-nr>the enumerate and "hello joe" line can be repeated a few thousand times to bring the same problem.I guess it is because the texmacs document is a program. When a change is made, it has to be re-executed in it's entirety unless it that can be optimised out.In some cases for me, though, the counter is never re-used again after the environment instance in which the new line is being inserted, so it could be optimised out...So I need to talk to someone on the nature of these optimisations (if I am right).Sam _______________________________________________ Texmacs-dev mailing list address@hidden http://lists.gnu.org/mailman/listinfo/texmacs-dev
--[FSF Associate Member #2325] <http://www.fsf.org/register_form?referrer=2325>
<http://www.openrightsgroup.org/>
[Prev in Thread] | Current Thread | [Next in Thread] |