English: In PostProcessorRegistrationDelegate invokeBeanFactoryPostProcessors method, after the first phase of the spring BeanFactoryPostProcessor, appeared with orderedPostProcessorNames and PostProcessorName nonOrderedPostProcessorNames records, After iterating to get its BeanFactoryPostProcessor, a total of 4 LIst result sets and 2 loops can be used to process it with 2 LIst result sets to improve performance!

Chinese: 在PostProcessorRegistrationDelegate的invokeBeanFactoryPostProcessors方法中,执行完第一阶段的BeanFactoryPostProcessor,出现了用orderedPostProcessorNames和nonOrderedPostProcessorNames记录PostProcessorName,后面遍历获取其BeanFactoryPostProcessor,总共用了4个LIst结果集和2次循环,可以使用2次List结果集对其进行处理,提高性能!

Specific code: ```java code List priorityOrderedPostProcessors = new ArrayList<>(); List orderedPostProcessorNames = new ArrayList<>(); List nonOrderedPostProcessorNames = new ArrayList<>(); for (String ppName : postProcessorNames) { if (processedBeans.contains(ppName)) { // skip - already processed in first phase above } else if (beanFactory.isTypeMatch(ppName, PriorityOrdered.class)) { priorityOrderedPostProcessors.add(beanFactory.getBean(ppName, BeanFactoryPostProcessor.class)); } else if (beanFactory.isTypeMatch(ppName, Ordered.class)) { orderedPostProcessorNames.add(ppName); } else { nonOrderedPostProcessorNames.add(ppName); } }

    // First, invoke the BeanFactoryPostProcessors that implement PriorityOrdered.
    sortPostProcessors(priorityOrderedPostProcessors, beanFactory);
    invokeBeanFactoryPostProcessors(priorityOrderedPostProcessors, beanFactory);

    // Next, invoke the BeanFactoryPostProcessors that implement Ordered.
           // first loop
    List<BeanFactoryPostProcessor> orderedPostProcessors = new ArrayList<>(orderedPostProcessorNames.size());
    for (String postProcessorName : orderedPostProcessorNames) {
        orderedPostProcessors.add(beanFactory.getBean(postProcessorName, BeanFactoryPostProcessor.class));
    }
    sortPostProcessors(orderedPostProcessors, beanFactory);
    invokeBeanFactoryPostProcessors(orderedPostProcessors, beanFactory);

    // Finally, invoke all other BeanFactoryPostProcessors.
           // second loop
    List<BeanFactoryPostProcessor> nonOrderedPostProcessors = new ArrayList<>(nonOrderedPostProcessorNames.size());
    for (String postProcessorName : nonOrderedPostProcessorNames) {
        nonOrderedPostProcessors.add(beanFactory.getBean(postProcessorName, BeanFactoryPostProcessor.class));
    }
    invokeBeanFactoryPostProcessors(nonOrderedPostProcessors, beanFactory);

```