Я бы взял Reflector и взглянул на метод ApplyResources, чтобы увидеть, что он на самом деле делает.
Я бы также порекомендовал профилирование с помощью JetBrains dotTrace 4 (в настоящее время в EAP, но могут быть загружены пробные версии), поскольку оно также может показывать время, проведенное внутри системных классов. Это делает его намного более прозрачным, когда время фактически потрачено. Например, вы можете узнать, тратится ли время на поиск ключей в словаре, доступ к файлам и т. Д.
Вы также можете сделать микро-тест и измерить время, необходимое для поиска X-ключей в словаре строк Y-размера, где X - это количество локализованных ресурсов в конкретной форме, а Y - общий пул ресурсов. Это, по крайней мере, даст вам представление о том, как быстро вы сможете искать ресурсы, если будете кэшировать их в словаре, что может помочь вам решить, стоит ли писать свой собственный поставщик ресурсов.