Сортировка, группировка, поиск анаграм - C#
Формулировка задачи:
Здравствуйте, есть такой код:
Файл большой(2 Гб примерно), по 500млн строк одинаковых слов(одно слово в одной строке), поэтому при запуске приложение съедает до 1,6 Гб оперативы, потом вылетает OutMemoryException в mscorlib. Есть ли способы оптимизировать работу приложения(чтобы съедал 200-300 мб) для подобных задач типа поиска анаграм/группировки/сортировки? С memorymappedfile связывать мне кажется провально, уже пытался...
using System; using System.Collections.Generic; using System.IO; using System.IO.MemoryMappedFiles; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Demo { class Program { static void Main(string[] args) { var groups = Methods.CreateObject.ReadInput().GroupBy(x => x.Length); foreach (var group in groups) { Console.WriteLine("Количество слов длиной: {0}", group.Key); foreach (var word in group) { Console.WriteLine(" {0}", word); } } } } public class Methods { protected Methods() { } private static Methods mtds = new Methods(); public static Methods CreateObject { get { return mtds; } } public IEnumerable<string> ReadInput() { using (var file = File.OpenText(@"C:\Dictionary.txt")) { while (!file.EndOfStream) { yield return file.ReadLine(); } } } } }
Решение задачи: «Сортировка, группировка, поиск анаграм»
textual
Листинг программы
var groups = File.ReadLines(@"C:/Dictionary.txt").GroupBy(x => x.Length);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д