优化不同模式下的调用