SIESTA can use two methods to determine the electronic structure of the system. One is standard diagonalization, which works for all systems and has a cubic scaling with the size. The other is based on the direct minimization of a special functional over a set of localized functions. The latter scales in principle linearly with the size of the system (only if the size is larger than the radial cutoff for the local solution wave-functions), but is quite fragile and substantially more difficult to use, and only works for systems with clearly separated occupied and empty states. The default is to use diagonalization.
The calculation of the H and S matrix elements is always done with an O(N) method. The actual scaling is not linear for small systems, but it becomes O(N) when the system dimensions are larger than the scale of orbital r's.
The relative importance of both parts of the computation (matrix elements and solution) depends on the size and quality of the calculation. The mesh cutoff affects only the matrix-element calculation; orbital cutoff radii affect the matrix elements and the linear-scaling solver, but not the diagonalization; the need for k-point sampling affects the solvers only, and the number of basis orbitals affects them all.
In practice, the vast majority of users employ diagonalization for the calculation of the electronic structure. This is so because the vast majority of calculations would not benefit from the O(N) solver (most of the calculations done are for intermediate system sizes, for varied reasons e.g. the long time scales needed in MD simulations for growing system sizes).
Since it is used less often, bugs creeping into the O(N) solver have been more resilient than in more popular bits of the code. Work is ongoing to clean and automate the O(N) process, to make the solver more user-friendly and robust.
Default value: diagon