mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-26 03:27:18 +00:00
Slightly speed up [all[shadows+tiddlers]] filters (#7702)
The `all` filter operator has shortcuts to optimise common patterns like `[all[shadows+tiddlers]]` or `[all[tiddlers]]`. In those cases, the filter operator function returns early and never uses the `result` linked list that was created, so it's immediately garbage-collected. Let's delay creating it until we know it's actually going to be used.
This commit is contained in:
parent
526e997aa4
commit
780e5d33a4
@ -28,12 +28,8 @@ function getAllFilterOperators() {
|
|||||||
Export our filter function
|
Export our filter function
|
||||||
*/
|
*/
|
||||||
exports.all = function(source,operator,options) {
|
exports.all = function(source,operator,options) {
|
||||||
// Get our suboperators
|
|
||||||
var allFilterOperators = getAllFilterOperators();
|
|
||||||
// Cycle through the suboperators accumulating their results
|
|
||||||
var results = new $tw.utils.LinkedList(),
|
|
||||||
subops = operator.operand.split("+");
|
|
||||||
// Check for common optimisations
|
// Check for common optimisations
|
||||||
|
var subops = operator.operand.split("+");
|
||||||
if(subops.length === 1 && subops[0] === "") {
|
if(subops.length === 1 && subops[0] === "") {
|
||||||
return source;
|
return source;
|
||||||
} else if(subops.length === 1 && subops[0] === "tiddlers") {
|
} else if(subops.length === 1 && subops[0] === "tiddlers") {
|
||||||
@ -46,6 +42,10 @@ exports.all = function(source,operator,options) {
|
|||||||
return options.wiki.eachShadowPlusTiddlers;
|
return options.wiki.eachShadowPlusTiddlers;
|
||||||
}
|
}
|
||||||
// Do it the hard way
|
// Do it the hard way
|
||||||
|
// Get our suboperators
|
||||||
|
var allFilterOperators = getAllFilterOperators();
|
||||||
|
// Cycle through the suboperators accumulating their results
|
||||||
|
var results = new $tw.utils.LinkedList();
|
||||||
for(var t=0; t<subops.length; t++) {
|
for(var t=0; t<subops.length; t++) {
|
||||||
var subop = allFilterOperators[subops[t]];
|
var subop = allFilterOperators[subops[t]];
|
||||||
if(subop) {
|
if(subop) {
|
||||||
|
Loading…
Reference in New Issue
Block a user