The problem is not with the tree list model but that the “GtkTreeListModelCreateModelFunc” function is designed without thinking about the performance.
The problem is that it is also called when testing if an expander icon needs to be drawn. Even if the item is never expanded, the list model will be created and deleted immediately. Because there is no way for the user code to know if it is just a test or an expand it will always populate the returned list model with values, this can be a very expensive operation. It is, lots of allocations are happening.
So we need to find a way to peek at the data without that.