Here are some things you can do to increase the performance
(reduce the runtime) of a ZivaVFX simulation.
In all cases, there is a trade-off between runtime and some other desirable quality,
so always consider these guidelines in the context of your needs.

The biggest thing influencing the runtime of a simulation is the number of vertices
in the tissue tet meshes and the cloth triangle meshes.
These simulation mesh vertices are the degrees of freedom that the solver
needs to figure out how to move over time.
Doubling the number of simulation mesh vertices in the simulation more than doubles the runtime.
The “ziva -info” MEL command will print the number of tet-mesh and tri-mesh vertices
to the Script Editor.

To make a sim run faster, reduce the number of tets on the sim
by increasing zTet.tetSize.
Increasing zTet.tetSize 2x generally decreases the number of tet mesh
vertices by approximately 8x for tissues that have large filled interior sections;
or by approximately 4x for tissues that are shell-like.
One can keep the resolution high just where needed by painting the
zTet.weights and using surface refinement
as described in the Tetrahedal Meshes section.

Enabling collisions approximately doubles the runtime of Ziva VFX simulations.
If you do not need collisions, turn them off on the zSolver node.

If only some bodies need to participate in collisions,
disable the collisions or selfCollisions attribute on the
zCloth, zTissue, or zBone nodes
that do not need collisions
(but keep the collisions option turned on in zSolver).
This completely removes the cost of their collisions.

Collision detection is done directly with the triangles meshes used to construct
the tissues, cloth, and bones in a Ziva VFX simulation.
This gets slower when there are more vertices in these triangle meshes.
To keep collisions fast, prefer triangle meshes that are as coarse as possible
without compromising the accuracy of the shapes.

For tissues, one can use a Collision Mesh (found in the Menus)
to set a different mesh for collisions than for tet-meshing, materials, and attachments.
This can be used to set a low resolution collision mesh
without compromising other aspects of the simulation.

Note that collision accuracy will be lower with large triangles than with small triangles.
Accuracy can be recovered by setting zSolver.collisionPointSpacing to a small distance.
This achieves similar accuracy to using triangles of that diameter
by adding more collision points inside the triangles,
but it is faster than directly using small triangles of that size.
That said, avoid setting zSolver.collisionPointSpacing to very small values
as this will create an unnecessarily large number of collision points.

Every timestep, the simulation needs to do some work.
A timestep is always done at least once per frame.
For stability and quality, increasing zSolver.substeps
will make the solver do multiple timesteps per Maya frame.
Each step has approximately the same cost,
so increasing substeps very directly increases the runtime.

One way to mitigate the cost of using multiple substeps is
to reduce zSolver.maxNewtonIterations.
This attribute limits the maximum amount of work done per substep.
Lowering this down to 1 can sometimes significantly decrease the runtime.
The downside is that it can make simulations more jittery,
more damped, less stable, and prone to other weird stiffening artifacts.

Ziva VFX has several ways to preserve volume,
described in the Volume Preservation section.
Setting zMaterial.volumeConservation to anything
other than zero causes simulations to slow down.
For faster runtimes, prefer to use zTissue.compressionResistance when possible.

If Inertial Damping and Volume Conservation are both disabled
(zTissue.inertialDamping=0 and zMaterial.volumeConservation=0),
then the solver may use a faster algorithm.
If either term is enabled anywhere in the scene, a slower algorithm is used.

When possible, do not set stiffness to very large numbers.
The visible difference between an attachment stiffness of 10^8 and 10^12 may be minimal,
but that higher stiffness can cause the simulation to be ill-conditioned and take longer to solve.
Whether or not this will affect the runtime speed is impossible to predict.
It is not guaranteed to have any affect at all and
smoothly changing stiffnesses will not smoothly change runtime speed.