To control complex systems with limited resources, critical nodes need to be identified for protection or removal. Loss of critical nodes decreases or minimizes a system's ability to diffuse entities such as information, goods, or diseases. We design three metrics to assess system homogeneity, diffusion speed, and diffusion scale, and investigate their performance over complex systems. Six algorithms using the three metrics to identify critical nodes are examined. The three nonpolynomial-time algorithms identify the most critical nodes (global optimum). The three polynomial-time algorithms identify critical nodes step by step (local optima), but do not guarantee the global optimum. The three polynomial-time algorithms are compared to other critical nodes identification algorithms and have better performance; they may be applied to practical problems to efficiently identify critical nodes in complex systems.