Good!

Based on that I'd vote for the "table function" as a compromise over efficiency, version-independance, generality and ease of coding.

(I suppose the remaining question is, how well do the various methods work for 10'000 rows . . . ?)