In machinery fault diagnosis, it is common that one kind of fault may correspond to several conditions, these conditions may contain different loads, different speeds and so on. When using conventional intelligent machinery fault diagnosis methods on diagnosing this kind of faults, if only one condition among all of these conditions was trained, when using this trained classifier for diagnosing fault which containing all conditions, it would obtain a classification result with higher error, it is the problem of robustness; but if we train all these data in each condition, the robustness can be improved a lot, but the time would be wasted. In order to balance these two aspects of fault diagnosis which seem contradict with each other, someone proposed a new method which based on shift-invariant sparse coding (SISC) method, this method can learn features from each condition of the same fault, and these features are adaptive to other conditions, which solve the first problem, but time efficiency of this algorithm is lower, in this paper, by improving the efficiency of shift-invariant sparse coding, we can reduce a lot of time on learning features. Through the experiment testing, it showed that this new method proposed in this paper produced better performance than SISC algorithm.