I am looking at ways to quickly decompose finite group representations into irreducibles. I am following Serre's book "Linear Representations of Finite Groups". He gives a formula for computing the canonical decomposition (that is, if we have $\rho : G \to GL(V)$, the decomposition of $V$ into $\oplus_i V_i$ where each $V_i$ is a direct sum of isomorphic representations). This is given as a formula for a projection $p_i : V \to V_i$:
$$p_i = \frac{n_i}{|G|} \sum_{t \in G} \chi_i(t)^* \rho(t)$$
($n_i$ is the degree of the irrep we are considering, $\chi_i$ the character)
If the group is very large, this is very tedious to do. I think there must be a way to speed this up by taking advantage of the fact that $\chi_i$ is the same on conjugacy classes.
For example, you can split up the sum by conjugacy class, for each $t$ a representative of a conjugacy class, you have $\sum_{s \in t^G}\chi_i(s)^* \rho(s)$. Now I can pull out the character since it's a class function to get $\chi_i(t)^* \sum_{s \in t^G} \rho(s)$.
But this doesn't really help, since the big part of the calculation is still to be done: adding up hundreds of matrices $\rho(s)$.
Is there some trick I can do to avoid summing over the group?