Say I want to multiply a reasonably large list of symbolic matrices.

tab = 
 Partition[#,4]&amp;/@
  Table[
   Symbol[CharacterRange["a","z"][[nm]]&lt;&gt;ToString[nn]],{nn,1,12},{nm,1,16}];

tab[[3]]



{{a3,b3,c3,d3},{e3,f3,g3,h3},{i3,j3,k3,l3},{m3,n3,o3,p3}}*)



Applying Dot directly on the list is pretty slow.

Dot@@tab // AbsoluteTiming // First



2.761965



However, because of associativity I can split the multiplication in a way that Dot is always called with a small number of arguments.

FDot=
 Dot@@
  Nest[
   (Dot@@@(Partition[#,Divisors[Length@#][[2]]]))&amp;,
   #,
   Total[Last/@FactorInteger@Length@#]]&amp;;

FDot@tab // AbsoluteTiming // First



 0.002115



This is $3$ orders of magnitude faster.

So, can anybody explain to me why Mathematica computes
$$
((a \cdot b) \cdot (c \cdot d)) \cdot ((e \cdot f) \cdot (g \cdot h))
$$
faster than
$$
a \cdot b \cdot c \cdot d \cdot e \cdot f \cdot g \cdot h \quad?
$$

This is a follow-up on this question.


Question: How do I deal with a compromised server?
Answer: You could try chmod on them if you have su access. They may be disabled for your users permissions. If you chmod 777 it will give permission for all users then you could try rm them. If this does not work i would suggest refreshing the systems if it is not too much messing about as they may be hiding deeper in the filesystem. You could also try a chkrootkit to see if there is any underlying files still left but i would rather be safe than sorry. Hope this helps