No done thisway is perfectly ok*. Done with mel is slow yes.**
*in fact theres a curious undocumented behaviour of particle expressions, if you ask for values of another particle node you get the value for the same id for the other node. Which means that a dynamic expression node is JUST like a expression node with the exception thet its wihin a for loop, and each particle value is unpacked one at time into the same expression diving context as otherwise. Since obviously theres no dirtying problems with thsi behaviour it will work as afast as anything else.
** it is pretty easy to make a node to connect the values trough too if you wish.