Ya the killer renders times are the volumetric shader.

But maybe you don't need as many particles or vertexes to work with. There is a huge amount of overlap going on.

The file you sent had the matrix generating the matrix only and that produced no render (for me at least). I set the matrix to produce thinking particles, deleted the matrix's material and then linked the particle geometry and the matrix attribute to the same TP group.

That worked but again slow.

BUT

I'm not sure you need true volume from each particle. The sheer number of vertexes in the object is the volume you are really interested in (I think). What about using mograph to map a disk or sphere to each vertex of your object, then putting a circular grad in the transparency or alpha channel on each disk iteration with a base full blast luma channel so that each disk glows with a fall off, and have each disk point at camera. This would give you the puffs that would build up the density and would cut the render time down significantly because no pyrocluster is needed. You could also have an effector make the disks toward the center of the object scale larger than the ones at the edge to increase the "volume" density at the core of the object. You could then glow or blur the whole thing in post to "blob" them together if you are still getting gaps. The disks could overlap their neighbors by a huge amount to smooth things out. You may get some intersection artifacts from this. There is a way to fix this too.

All the math that's going on for pyro is to get the volume tracer figuring out where the edge of each puff's envelope is, and that's proc intensive. But is that needed?

I'm sure your tube is just to test with but you should make it editable so you get the right number of vertexes you are expecting from the matrix or the cloner. Otherwise you get the default number from the "render perfect" version of the primitive.

Like this?:

12537_12534testwithdisks.c4d.zip