Russian Qt Forum
Ноябрь 24, 2024, 11:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Remaining time в SQLite  (Прочитано 4762 раз)
asrael
Гость
« : Январь 06, 2011, 16:24 »

всем доброго времени..
проблема..
обрабатываю данные и добавляю их в БД. это все занимает довольно-таки длительное время.. как можно рассчитать оставшееся время?
пытался рассчитывать среднее время за одну операцию, а потом умножать на количество оставшихся, но, если процесс идет неравномерный, то погрешность большая очень выходит..
Записан
twp
Гость
« Ответ #1 : Январь 06, 2011, 17:14 »

имхо не реально. А зачем это нужно?
Записан
asrael
Гость
« Ответ #2 : Январь 06, 2011, 17:22 »

да почему нереально? реально.. кода с собой сейчас нет, буду вечером дома - выложу..
зачем? ну, а зачем делают таймер оставшегося времени? чтоб знать, сколько нам осталось..) знать, успеешь кофе выпить и покурить, пока база обновляется или нет.. лично у меня спортивный интерес..
Записан
Ayanami_Rey
Гость
« Ответ #3 : Январь 06, 2011, 17:26 »

как вариант считать не по одной операции, а среднее время допустим за все предыдущие операции и умножать на оставшиеся...
и того получим не конкретное оставшееся время, а среднестатистическое (мб чуть выше реального, а мб и чуть ниже)
« Последнее редактирование: Январь 06, 2011, 17:27 от Ayanami_Rey » Записан
asrael
Гость
« Ответ #4 : Январь 06, 2011, 17:53 »

так в любом случае получится приблизительно, ведь скорость выполнения зависит от многих параметров, доступность ресурсов ПК, например..
как вариант считать не по одной операции, а среднее время допустим за все предыдущие операции и умножать на оставшиеся...
и того получим не конкретное оставшееся время, а среднестатистическое (мб чуть выше реального, а мб и чуть ниже)
ну, я примерно так и делал.. не помню уже, сегодня ночью сочинял..)
Записан
twp
Гость
« Ответ #5 : Январь 06, 2011, 17:59 »

ну в таких случаях лучше повесить прогрессбар, и наглядно и не нужно вычислять сколько времени еще осталось
Записан
asrael
Гость
« Ответ #6 : Январь 06, 2011, 18:10 »

прогрессбар повешен и работает - с ним проблем не было.. но процент выполнения - это одно, а оставшееся время - это совсем другое..
Записан
Ayanami_Rey
Гость
« Ответ #7 : Январь 06, 2011, 18:21 »

гы. тогда посоветую пользоваться алгоритмами расчета погоды. и точность уже будет зависеть от кол-ва накопленных данных и вычислительной мощности компьютера.
имхо 100% точно рассчитать оставшееся время выполнения операции при обращении к бд невозможно.
Записан
asrael
Гость
« Ответ #8 : Январь 06, 2011, 18:31 »

так я на точность и не настаиваю.. мне нужно приблизительное значение.. а изобретать заново велосипед не хочется, ибо это далеко не самая главная функция моей программы и рядовой пользователь вряд ли её вообще когда-то увидит и оценит..)
повторяюсь, это всего лишь спортивный интерес..
Записан
Ayanami_Rey
Гость
« Ответ #9 : Январь 06, 2011, 20:04 »

тогда не вижу причины, по которой не удовлетворяет среднее время выполнения всех предыдущих операций*на кол-во оставшихся.
Записан
asrael
Гость
« Ответ #10 : Январь 06, 2011, 23:05 »

вот, собственно, мой велосипед - это то, что происходит в Timer'e. интервал, понятно - секунда:
Код:
void Open_form::update()
{
    time++; //общее количество прошедших секунд
    //row_count - количество записей для обработки
    //cur_row - текущая запись
    double sec_val = row_count*time/cur_row - time;
    double min_val = sec_val/60;
    sec_val = ceil(sec_val);
    min_val = ceil(min_val);

    sec_val = 59 + sec_val - min_val*60;

    time_rem.setHMS(0,min_val-1,sec_val,0);
    label_rem_time->setText(tr("Time remaining: ")+time_rem.toString("HH:mm:ss"));
}
Ayanami_Rey, кто сказал, что меня что-то не устраивает? я просто ищу более оптимальные способы решения данной задачи, вот и всё..)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.235 секунд. Запросов: 21.