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

inotoxic

Client
Joined
Apr 20, 2015
Messages
354
Reaction score
164
Points
43
Имеется проект по парсингу

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

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

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

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
Как узнать сколько (максимально точно) по времени займет обработка 100.000 строк?
Никак, т.к. Вы не указали еще как минимум пару десятков параметров для более точного вычисления.
а примере сторонних программ, запускается обработка и в низу программы заполняется прогрессбар: "Оставшееся время 03 часа 15 минут"
Сколько Вы этих баров видели? Ни разу не заметили, что время указанное в них образное?
 
  • Thank you
Reactions: Sergodjan

inotoxic

Client
Joined
Apr 20, 2015
Messages
354
Reaction score
164
Points
43
Никак, т.к. Вы не указали еще как минимум пару десятков параметров для более точного вычисления
О каких десятках параметров идет речь ?
Можете пример привести?

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

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

Sergodjan

Administrator
Staff member
Joined
Sep 5, 2012
Messages
22,696
Reaction score
10,156
Points
113
Как узнать сколько (максимально точно) по времени займет обработка 100.000 строк?
Как вариант: сделать обработку тестовой 1.000 строк, замерить время
и апроксимировать по ходу выполнения к любому кол-ву строк на входе.
Но как уже было сказано выше, все равно будет вилами по воде,
по кр. мере на разных конфигурациях машин и разном интернете.
 

inotoxic

Client
Joined
Apr 20, 2015
Messages
354
Reaction score
164
Points
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
 
Last edited:
  • Thank you
Reactions: Hannes

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)