Thanks Saq, that view is super useful and I never knew it existed!

Armed with that information, I spent most of this evening tinkering on 
improving some of the other things that have been slowing my wiki down, 
including adding an Idea tag so I don't have to define it as the negation 
of a dozen other tags and replacing TiddlyTables with a similar HTML table 
that needs fewer filters, macros, and transclusions in the most critical 
paths. (More work needs to be done to bring the rest of the Reference 
Explorer in line and refactor it to catch it up with a bunch of other 
changes I've made recently.)

The tabs filter discussed above was and remains the #1 contributor to 
filter processing time when clicking around the wiki, often something like 
30% of the total time, so I'm still interested in suggestions others may 
have for improving that. I didn't want to publish the wiki in its present 
state previously since it was so slow it would be difficult for people to 
use, but I've ameliorated that enough that I am now comfortable 
republishing it. As mentioned in my previous post, you can start looking at 
$:/sib/refexplorer/ReferenceExplorer, but now it is a working example 
rather than something you would have to tweak into a working example by 
yourself.

On Tuesday, July 20, 2021 at 9:29:49 AM UTC-5 saq.i...@gmail.com wrote:

> @Soren I recommend enabling performance instrumentation and checking to 
> see which filter runs are the culprits.
>
>
> https://tiddlywiki.com/#%24%3A%2Fconfig%2FPerformance%2FInstrumentation:%24%3A%2Fconfig%2FPerformance%2FInstrumentation%20%5B%5BPerformance%20Instrumentation%5D%5D
>
> Note that you need to enable it by setting the config tiddler to "yes", 
> then save and reload.
>
> Also suggest posting a public wiki where the issue (and the condition 
> filters) can be seen to facilitate debugging.
> On Tuesday, July 20, 2021 at 4:05:15 PM UTC+2 Soren Bjornstad wrote:
>
>> Important note, the condition fields aren't defined in the current public 
>> version, so you'd have to add them in to get a working test.
>>
>> On Tuesday, July 20, 2021 at 9:03:42 AM UTC-5 Soren Bjornstad wrote:
>>
>>> Tones,
>>>
>>> :filter was my first thought, but I couldn't figure out how the data 
>>> would flow through it. Perhaps I was missing something, looking forward to 
>>> seeing your version.
>>>
>>> If it helps to see the context, have a peek at 
>>> https://zettelkasten.sorenbjornstad.com/#%24%3A%2Fsib%2Frefexplorer%2FReferenceExplorer.
>>>  
>>> The snippet above (or a replacement) would go inside the ref-explorer macro 
>>> definition.
>>>
>>>
>>> On Tuesday, July 20, 2021 at 8:07:09 AM UTC-5 TW Tones wrote:
>>>
>>>> Soren,
>>>>
>>>> Its late here but I have done something similar in the past without a 
>>>> performance hit, and will try and create a solution tomorrow, However I 
>>>> think the answer best answer may be through the use of a filter run as in 
>>>> 5.3.23+ however I am sure I succeeded in something similar a few versions 
>>>> ago.
>>>>
>>>> No need for reduce and accumulators I think.
>>>>
>>>> Regards
>>>> Tones
>>>>
>>>> On Tuesday, 20 July 2021 at 13:09:18 UTC+10 Soren Bjornstad wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> I want to determine what tabs of the Reference Explorer in my 
>>>>> Zettelkasten to show on a template, such that if there aren't any results 
>>>>> on that tab, the tab doesn't appear at all. The results of the tab are 
>>>>> produced based on a filter (of course), so I figured I would also 
>>>>> determine 
>>>>> whether the tab appears by running a filter. The filter is stored in a 
>>>>> field in the tab tiddler.
>>>>>
>>>>> That is, I have a series of tiddlers with a certain tag (say *Tab*), 
>>>>> and each of these tiddlers contains a filter in some field (say 
>>>>> *condition*). For each Tiddler tagged Tab, if and only if the filter 
>>>>> Tiddler!!condition, run with the current tiddler as input, has more than 
>>>>> zero results, I want to display the tab.
>>>>>
>>>>> I came up with the following:
>>>>>
>>>>> <$set name="tabList" value={{{ [tag[Tab]] 
>>>>> :reduce[<storyTiddler>subfilter{!!condition}then<currentTiddler>addprefix[
>>>>>  
>>>>> ]addprefix<accumulator>] }}}>
>>>>>     <$macrocall $name="tabs" tabsList=<<tabList>>/>
>>>>> </$set>
>>>>>
>>>>> This produces the correct result (well, as long as there are no spaces 
>>>>> in the titles of the tiddlers tagged *Tab*; I'm OK assuming that 
>>>>> since there indeed aren't any). The problem is that it is horrendously 
>>>>> slow 
>>>>> to run all these filters. On my dev machine it is tolerable, but this is 
>>>>> a 
>>>>> machine specced for serious processing power. On my MacBook Air it now 
>>>>> takes 1–2 seconds to open a new tiddler, even without anything currently 
>>>>> open!
>>>>>
>>>>> Probably I am just asking TW to do too much on the fly here, but 
>>>>> before I start rethinking the project too hard, can anyone think of 
>>>>> obvious 
>>>>> optimizations I might be missing here? The filters involved are 
>>>>> moderately 
>>>>> complex (the basic pattern for each is to gather together links[], 
>>>>> backlinks[], and tagging[] for the story tiddler, then filter some things 
>>>>> out of that using + and !*operator*[]'s).
>>>>>
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/356dd195-70b5-4ff6-889f-57d2d5bc5068n%40googlegroups.com.

Reply via email to