Is this $list-based macro an efficient solution? Or more generally: Are there any general tips for improving efficiency?

In general, the $list widget itself does not “consume a lot of processing power”.

My “costly $list widget evaluation” comment in Delete all user define fields, was specifically referring to the nested $list widgets used in the delete-fields() procedure which checks all non-system fields in all non-system, non-shadow tiddlers.

Your current use-case (i.e., filter="[<__var__>!is[blank]]") is actually very low-cost, since it is simply checking to see if a single specified variable is blank.

So… don’t worry (be happy!)

-e