public override void LoadTurtle(string filepath, bool useBuffer) { DateTime tt0 = DateTime.Now; Close(); Open(false); if (useBuffer) { TurtleInt.LoadByGraphsBuffer(filepath, otriples, dtriples_sp, this); } else { TurtleInt.LoadTriplets(filepath, otriples, dtriples_sp, this); } Console.WriteLine("Load ok. Duration={0} sec.", (DateTime.Now - tt0).Ticks / 10000000L); tt0 = DateTime.Now; PrepareArrays(); Console.WriteLine("PrepareArrays ok. Duration={0} sec.", (DateTime.Now - tt0).Ticks / 10000000L); tt0 = DateTime.Now; // Упорядочивание otriples по s-p-o otriples.Root.SortByKey(rec => new SubjPredObjInt(rec), new SPOComparer()); Console.WriteLine("otriples.Root.Sort ok. Duration={0} sec.", (DateTime.Now - tt0).Ticks / 10000000L); tt0 = DateTime.Now; //SPOComparer spo_compare = new SPOComparer(); SPComparer sp_compare = new SPComparer(); // Упорядочивание otriples_op по o-p otriples_op.Root.SortByKey(rec => { object[] r = (object[])rec; return(new SubjPredInt() { pred = (int)r[1], subj = (int)r[2] }); }, sp_compare); Console.WriteLine("otriples_op Sort ok. Duration={0} sec.", (DateTime.Now - tt0).Ticks / 10000000L); tt0 = DateTime.Now; // Упорядочивание dtriples_sp по s-p dtriples_sp.Root.SortByKey(rec => { object[] r = (object[])rec; return(new SubjPredInt() { pred = (int)r[1], subj = (int)r[0] }); }, sp_compare); Console.WriteLine("dtriples_sp.Root.Sort ok. Duration={0} sec.", (DateTime.Now - tt0).Ticks / 10000000L); tt0 = DateTime.Now; Scale.WriteScale(otriples); Console.WriteLine("CreateScale ok. Duration={0} sec.", (DateTime.Now - tt0).Ticks / 10000000L); tt0 = DateTime.Now; // Создание "широкой" таблицы ewt.Load(new[] { new DiapasonScanner <int>(otriples, ent => (int)((object[])ent.Get())[0]), new DiapasonScanner <int>(otriples_op, ent => (int)((object[])ent.Get())[2]), new DiapasonScanner <int>(dtriples_sp, ent => (int)((object[])ent.Get())[0]) }); Console.WriteLine("ewt.Load() ok. Duration={0} sec.", (DateTime.Now - tt0).Ticks / 10000000L); tt0 = DateTime.Now; // Вычисление кеша. Это можно не делать, все равно - кеш в оперативной памяти //ewtHash.Load(); // Console.WriteLine("ewtHash.Load() ok. Duration={0} sec.", (DateTime.Now - tt0).Ticks / 10000000L); tt0 = DateTime.Now; Close(); RemoveColumns(); Console.WriteLine("RemoveColumns() ok. Duration={0} sec.", (DateTime.Now - tt0).Ticks / 10000000L); tt0 = DateTime.Now; Open(true); }