Quantcast
Channel: Linux.org.ru: Форум (тех. форум)
Viewing all articles
Browse latest Browse all 74659

C++. Структура данных эффективнее heap. Для очереди с приоритетом.

$
0
0

Есть 1000 задач, которые повторяются с переменным интервалом. Когда очередная выполняется, то следующий раз она выполнится, ей придумывается следущее время исполнения через рандомное время, например rand()%0xfff миллисекунд.

Реализовано так: есть heap (std::vector + pop_heap, push_heap). Число задач в долгосрочном периоде постоянно, поэтому ресайз вектора крайне редок.

Засыпаю до времени, которое имеет задача на вершине хипа. Просыпаюсь и делаю некоторое число задач, которые имеют текущее время (или меньше). Выполняя каждую задачу, делаю её pop из хипа, придумываю ей новое время выполнения и сразу push её в heap. Когда на вершине оказывается задача с временем «не сейчас», то засыпаю до этого времени.

Что я делаю с точки зрения производительности хуже, чем можно было бы?

 


Viewing all articles
Browse latest Browse all 74659

Latest Images

Trending Articles