I didn't know Roman's trick with `SparseArray`. Here's another trick: use `Method->"Arnoldi"`, asking for only the eigenvector corresponding to the smallest magnitude eigenvalue (approx. zero) using `-1`, which is the stationary distribution. ``` evNull=First[NullSpace[N[transit]-IdentityMatrix[4000,SparseArray]]];//AbsoluteTiming (* 15.6608 -- I must need a faster computer! *) evArnoldi=Eigenvectors[N@transit-IdentityMatrix[4000,SparseArray],-1,Method->{"Arnoldi"}][[1]];//AbsoluteTiming (* 0.092582 *) ``` So there's another couple of orders-of-magnitude speedup for you. I'm not patient enough to wait for `StationaryDistribution` to finish! The eigenvectors look the same when plotted BTW.