Настройка правил ACL(Access Control List) занимает много времени, когда в каталоге много файлов
Я пытаюсь изменить разрешения для каталога с огромным количеством файлов журнала (в моем случае это может увеличиться до 1 миллиона файлов журнала), но в итоге я столкнулся с огромной проблемой производительности. Я пытался измерить производительность с различными нет. файлов журналов в каталоге и придумал несколько цифр, которые показывают с увеличением в нет. файлов журнала в каталоге время, необходимое для установки контроля доступа в каталоге, резко увеличивается.
Фрагмент кода:
public void SetAccessControl()
{
ReaderWriterLockSlim rwlock = new ReaderWriterLockSlim();
using (rwlock.Write())
{
var directorySecurity = m_DirectoryInfo.GetAccessControl();
//Adds Security rules to this Folder, Subfolders and Files
directorySecurity.AddAccessRule(new FileSystemAccessRule(m_Identity, FileSystemRights.Write | FileSystemRights.Read,
InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit,
PropagationFlags.InheritOnly,
AccessControlType.Allow));
directorySecurity.AddAccessRule(new FileSystemAccessRule(m_Identity, FileSystemRights.Write | FileSystemRights.Read,
AccessControlType.Allow));
m_DirectoryInfo.SetAccessControl(directorySecurity);
}
}
Ниже приведены результаты производительности:
1000 файлов, время заняло: 683 мс
10000 файлов, время: 5264.19мс
100000 файлов, время: 52082.04мс
Есть ли способ справиться с этой проблемой производительности?