Linear (and nonlinear) Schrödinger equations in the semiclassical (small dispersion) regime pose a significant challenge to numerical analysis and scientific computing, mainly due to the fact that they propagate high frequency spatial and temporal oscillations. At first we prove using Wigner measure techniques that finite difference discretisations in general require a disproportionate amount of computational resources, since underlying numerical meshes need to be fine enough to resolve all oscillations of the solution accurately, even if only accurate observables are required. This can be mitigated by using a spectral (in space) discretisation, combined with appropriate time splitting. Such discretisations are time-transverse invariant and allow for much coarser meshes than finite difference discretisations. In many physical applications highly oscillatory periodic potentials occur in Schrödinger equations, still aggrevating the oscillatory solution structure. For such problems we present a numerical method based on the Bloch decomposition of the wave function.