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

inotoxic

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

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

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

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

one

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

inotoxic

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

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

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

Sergodjan

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

inotoxic

Client
Регистрация
20.04.2015
Сообщения
354
Благодарностей
164
Баллы
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

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