Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Я думаю тебе надо разделить на пачки типа у тебя 1 250 000 ты берешь первые 1000 ну и т.д
Мне помог такой метод когда я импорт с 1С делал на сайт , беру все махом висит беру кусками в лет
Попробуйте работать с каждой строкой отдельно - 2 000 000 строк отрабатывать должно быстрее.
Пример кода вместе с измерениями моделирующий поставленную Вами задачу отрабатывает за 6 секунд, и это можно ещё ускорить если проводить обработку в многопоточном режиме.
C#:
List<string> in_data = new List<string>(); // Создали список
string[] temp = new[]{"+++domain.com---","+++site.com---","+++www.com---","+++wap.com---"}; // Случайный список значений
System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch(); // Создали таймер
timer.Start(); //Запустили отсчёт
for(int i=0;i<2000000; i++) in_data.AddRange(temp.OrderBy(x=>Guid.NewGuid()).Take(1).ToArray()); // Заполнили список случайными значениями
timer.Stop(); // Остановили таймер
string message = string.Format("Количество строк вход: {1} {0:mm}:{0:ss}.{0:ff}", timer.Elapsed, in_data.Count); // Привели значение к желаемому виду
project.SendInfoToLog(message); // Вывели на экран
timer.Restart(); // Начали измерение времени сначала
List<string> out_data = new List<string>(); // Создали список для результата
for(int i=0;i<in_data.Count; i++) {
string temp_line =in_data[i]; // Сохранили строчку во временную переменную
if(!string.IsNullOrEmpty(temp_line)) { // Убедились что строка не пустая, чтобы не тратить на нее время
string temp_data = Regex.Match(temp_line, @".*domain.com.*").Value; // Получили значение регуляркой
if(!string.IsNullOrEmpty(temp_data)) out_data.Add(temp_data); // Добавили результат в список
}
}
timer.Stop(); // Остановили таймер
message = string.Format("Количество строк выход: {1} {0:mm}:{0:ss}.{0:ff}", timer.Elapsed, out_data.Count); // Привели значение к желаемому виду
project.SendInfoToLog(message); // Вывели на экран
Применяем многопоток для обработки данных - и видим, что тех самых 2 000 000 строчек мы уже проходим не за 6 секунд, а за 2.
C#:
List<string> in_data = new List<string>(); // Создали список
string[] temp = new[]{"+++domain.com---","+++site.com---","+++www.com---","+++wap.com---"}; // Случайный список значений
System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch(); // Создали таймер
timer.Start(); //Запустили отсчёт
for(int i=0;i<2000000; i++) in_data.AddRange(temp.OrderBy(x=>Guid.NewGuid()).Take(1).ToArray()); // Заполнили список случайными значениями
timer.Stop(); // Остановили таймер
string message = string.Format("Количество строк вход: {1} {0:mm}:{0:ss}.{0:ff}", timer.Elapsed, in_data.Count); // Привели значение к желаемому виду
project.SendInfoToLog(message); // Вывели на экран
timer.Restart();
List<string> out_data = new List<string>(); // Создали список
out_data.AddRange(in_data.AsParallel().Select(y => Regex.Match(y, @".*domain.com.*").Value).Where(x =>!string.IsNullOrEmpty(x))); // Параллельная обработка
timer.Stop(); // Остановили таймер
message = string.Format("Количество строк выход: {1} {0:mm}:{0:ss}.{0:ff}", timer.Elapsed, out_data.Count); // Привели значение к желаемому виду
project.SendInfoToLog(message); // Вывели на экран
Попробуйте работать с каждой строкой отдельно - 2 000 000 строк отрабатывать должно быстрее.
Пример кода вместе с измерениями моделирующий поставленную Вами задачу отрабатывает за 6 секунд, и это можно ещё ускорить если проводить обработку в многопоточном режиме.
C#:
List<string> in_data = new List<string>(); // Создали список
string[] temp = new[]{"+++domain.com---","+++site.com---","+++www.com---","+++wap.com---"}; // Случайный список значений
System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch(); // Создали таймер
timer.Start(); //Запустили отсчёт
for(int i=0;i<2000000; i++) in_data.AddRange(temp.OrderBy(x=>Guid.NewGuid()).Take(1).ToArray()); // Заполнили список случайными значениями
timer.Stop(); // Остановили таймер
string message = string.Format("Количество строк вход: {1} {0:mm}:{0:ss}.{0:ff}", timer.Elapsed, in_data.Count); // Привели значение к желаемому виду
project.SendInfoToLog(message); // Вывели на экран
timer.Restart(); // Начали измерение времени сначала
List<string> out_data = new List<string>(); // Создали список для результата
for(int i=0;i<in_data.Count; i++) {
string temp_line =in_data[i]; // Сохранили строчку во временную переменную
if(!string.IsNullOrEmpty(temp_line)) { // Убедились что строка не пустая, чтобы не тратить на нее время
string temp_data = Regex.Match(temp_line, @".*domain.com.*").Value; // Получили значение регуляркой
if(!string.IsNullOrEmpty(temp_data)) out_data.Add(temp_data); // Добавили результат в список
}
}
timer.Stop(); // Остановили таймер
message = string.Format("Количество строк выход: {1} {0:mm}:{0:ss}.{0:ff}", timer.Elapsed, out_data.Count); // Привели значение к желаемому виду
project.SendInfoToLog(message); // Вывели на экран