Как узнать сколько по времени будет выполняться шаблон?

inotoxic

Client
Регистрация
20.04.2015
Сообщения
354
Благодарностей
162
Баллы
43
Имеется проект по парсингу

Входные данные:

unixtime_1 начало работы потока
unixtime_2 окончания работы потока
Вычитая из unixtime_2 unixtime_1, получаем время работы потока
общее кол-во строк для обработки, к примеру 100,000
кол-во строк уже обработанных

Как узнать сколько (максимально точно) по времени займет обработка 100.000 строк?
На примере сторонних программ, запускается обработка и в низу программы заполняется прогрессбар: "Оставшееся время 03 часа 15 минут"
 

one

Client
Регистрация
22.09.2015
Сообщения
6 793
Благодарностей
1 264
Баллы
113
Как узнать сколько (максимально точно) по времени займет обработка 100.000 строк?
Никак, т.к. Вы не указали еще как минимум пару десятков параметров для более точного вычисления.
а примере сторонних программ, запускается обработка и в низу программы заполняется прогрессбар: "Оставшееся время 03 часа 15 минут"
Сколько Вы этих баров видели? Ни разу не заметили, что время указанное в них образное?
 
  • Спасибо
Реакции: Sergodjan

inotoxic

Client
Регистрация
20.04.2015
Сообщения
354
Благодарностей
162
Баллы
43
Никак, т.к. Вы не указали еще как минимум пару десятков параметров для более точного вычисления
О каких десятках параметров идет речь ?
Можете пример привести?

Да, мне и не нужно супер точное время, к томе же его не получить. так влияют различные факторы на получение и обработку данных (время получения ответа на запрос к серверу, количество данных на странице и т.д.)

Но ведь среднее(примерное) время можно же получить?
Из общего кол-ва строк, вычитаем обработанные = получаем оставшиеся, которые умножаем на время выполнения одного потока = получаем общее (примерное) время, которое потребуется для обработке.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 488
Благодарностей
8 693
Баллы
113
Как узнать сколько (максимально точно) по времени займет обработка 100.000 строк?
Как вариант: сделать обработку тестовой 1.000 строк, замерить время
и апроксимировать по ходу выполнения к любому кол-ву строк на входе.
Но как уже было сказано выше, все равно будет вилами по воде,
по кр. мере на разных конфигурациях машин и разном интернете.
 

inotoxic

Client
Регистрация
20.04.2015
Сообщения
354
Благодарностей
162
Баллы
43
Я прекрасно понимаю, что полученное время будет не точным.
При обработки БД в несколько миллионов строк, хотелось бы иметь представление, сколько приблизительно потребуется времени.

Как такую логику привести к С# снипету?
Данные вычисляются в рамках работы каждого потока

int a = unixtime // начало работы потока
int b = unixtime // окончания работы потока
int c = b-а //получили время работы одного потока
int d = "10.000" //общее кол-во строк для обработки
int e = "2500" //кол-во уже обработанных строк
int d = текущее кол-во потоков конкретного шаблона

Вычисляем
int ostatok_strok = d-e // сколько строк осталось обработать
int end_ostatok = (ostatok_strok*с)/60; //время в минутах, которое потребуется для обработки оставшихся строк
int end_time = end_ostatok/d // получаем примерное время в минутах, если шаблон работает в 100 потоков

end_time = привести к формату строки вида dd:HH:mm
 
Последнее редактирование:
  • Спасибо
Реакции: Hannes

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)