Сортировка, группировка, поиск анаграм - 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);