У меня 63к записей, тормозит именно чтение целого лога. А Reverse именно прочитает всё и начнёт возвращать с конца. Доступ к отдельным записям по индексу быстрый.
Используйте Count и доступ по индексу.
Если хочется LINQ — вот, например, метод, перечисляющий записи с конца.
public static IEnumerable<EventLogEntry> EnumerateLatestLogEntries()
{
var entries = new EventLog("System").Entries;
for (var i = entries.Count-1; i>=0;i--)
{
yield return entries[i];
}
}
Но если нужен именно UI, отображающий события (список там или грид), то нужно думать о виртуализации данных. То есть, например, подгружать записи из лога по мере скроллирования.