ChainComplex() runs 24 times slower than homology()
I load a list of matrices bdrs
representing a chain complex, their dimensions are
{1, 21, 210, 1330, 5985, 20349, 54264, 116280, 203490, 293930, 352716, 352716, 293930, 203490, 116280, 54264, 20349, 5985, 1330, 210, 21, 1}, and the largest has density 3.91*10^-6. In total they take up 50MB of disk space. This finishes in 63sec.
When I run chcx=ChainComplex(bdrs,base_ring=GF(2))
, it takes 7hrs20min, but chcx.homology()
finishes in only 18min. Why does it take so long to just store a few matrices? At first I thought that ChainComplex()
also does some simplifications/reductions, but [chcx.free_module_rank(i) for i in range(0,21)]
shows the original dimensions of matrices :/.
Is there a faster way to compute the homology of a chain complex (over $\mathbb{Z}$ or $\mathbb{Z}_p$)?