示例#1
0
        public static void Main(string[] args)
        {
            GCSettings.LatencyMode = GCLatencyMode.SustainedLowLatency;
            //GCSettings.LatencyMode = GCLatencyMode.LowLatency;
            Console.WriteLine("Is server GC: " + GCSettings.IsServerGC);
            Console.WriteLine("Latency Mode: " + GCSettings.LatencyMode);

            var dataFilePath = "/tmp/data/data.zip";
            var optionsPath  = "/tmp/data/options.txt";
            var extractPath  = "zip";
            var retriever    = new FileReader();

            var dataLoader        = new DataLoader();
            var accountsFileCount = retriever.ReadAccountFilesCount(dataFilePath);
            var accountsCount     = (int)(accountsFileCount * 10000) + 22000;

            var inMemory = new InMemoryRepository(accountsCount);

            Holder.Instance.InMemory = inMemory;

            var updater = new RepositoryUpdater(inMemory);

            Holder.Instance.Updater = updater;
            dataLoader.Load(dataFilePath, extractPath, optionsPath, inMemory, updater, retriever);

            Holder.Instance.Filter           = new Filter(inMemory);
            Holder.Instance.Group            = new Group(inMemory, new GroupFactory(inMemory));
            Holder.Instance.GroupQueryParser = new GroupQueryParser();
            Holder.Instance.Recommend        = new Recommend(inMemory);
            Holder.Instance.Suggest          = new Suggest(inMemory);

            var sw = new Stopwatch();

            sw.Start();
            inMemory.CreateMainIndexes(false, sw);
            sw.Stop();

            TotalMemoryHelper.Show();

            GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
            GC.Collect();
            GC.WaitForFullGCComplete();

            TotalMemoryHelper.Show();

            CreateWebHostBuilder(args).Build().Run();
        }