История изменений
Исправление a--, (текущая версия) :
в котором действительными будут лишь первый и последний элементы?
Ответ зависит от типа твоих таймеров. После срабатывания таймер может удаляться сразу (если на нем легкий процессинг, типа порвать соединение и положить мессадж в очередь, это Тип 1) или ждать пока он станет никому не нужен, т.е. обнулится его рефкаунтер (если на нем тяжелый процессинг, это Тип 2).
Дизайн хрюнделя khrundel мягко говоря, странный. Я предложу похожий свой без голых указателей, годящийся для обоих вариантов таймеров.
Берем ordered_map (который в плюсах назвали map) на основе B-tree. В качестве ключа используем время таймера (с миллисекундами, никаких целых timer_id). Вставка в середину быстрая, удаление сработавших таймеров с конца еще быстрее (если у тебя Тип 1), удаление сработавших таймеров по порядку из середины тоже быстрое (если у тебя Тип 2).
Если ты таймеры двигаешь по времени, то будет некоторый оверхед, но все равно поиск-удаление-поиск-вставка в B-tree быстрые. Не думаю что от прошивки таймеров насквозь указателями этот оверхед уменьшится. Скорее наоборот, увеличится.
UPDATE: можно B+, можно В-
В плюсах между ними разница невелика. Но вот в расте, если ты это дерево реализуешь — лишний указатель это лишние заботы как минимум.
Исправление a--, :
в котором действительными будут лишь первый и последний элементы?
Ответ зависит от типа твоих таймеров. После срабатывания таймер может удаляться сразу (если на нем легкий процессинг, типа порвать соединение и положить мессадж в очередь, это Тип 1) или ждать пока он станет никому не нужен, т.е. обнулится его рефкаунтер (если на нем тяжелый процессинг, это Тип 2).
Дизайн хрюнделя khrundel мягко говоря, странный. Я предложу похожий свой без голых указателей, годящийся для обоих вариантов таймеров.
Берем ordered_map (который в плюсах назвали map) на основе B-tree. В качестве ключа используем время таймера (с миллисекундами, никаких целых timer_id). Вставка в середину быстрая, удаление сработавших таймеров с конца еще быстрее (если у тебя Тип 1), удаление сработавших таймеров по порядку из середины тоже быстрое (если у тебя Тип 2).
Если ты таймеры двигаешь по времени, то будет некоторый оверхед, но все равно поиск-удаление-поиск-вставка в B-tree быстрые. Не думаю что от прошивки таймеров насквозь указателями этот оверхед уменьшится. Скорее наоборот, увеличится.
Исправление a--, :
в котором действительными будут лишь первый и последний элементы?
Ответ зависит от типа твоих таймеров. После срабатывания таймер может удаляться сразу (если на нем легкий процессинг, типа порвать соединение и положить мессадж в очередь, это Тип 1) или ждать пока он станет никому не нужен, т.е. обнулится его рефкаунтер (если на нем тяжелый процессинг, это Тип 2).
Дизайн хрюнделя khrundel мягко говоря, странный. Я предложу похожий свой без голых указателей, годящийся для обоих вариантов таймеров.
Берем ordered_map (который в плюсах назвали map) на основе B+tree. В качестве ключа используем время таймера (с миллисекундами, никаких целых timer_id). Вставка в середину быстрая, удаление сработавших таймеров с конца еще быстрее (если у тебя Тип 1), удаление сработавших таймеров по порядку из середины тоже быстрое (если у тебя Тип 2).
Если ты таймеры двигаешь по времени, то будет некоторый оверхед, но все равно поиск-удаление-поиск-вставка в B+tree быстрые. Не думаю что от прошивки таймеров насквозь указателями этот оверхед уменьшится. Скорее наоборот, увеличится.
Исправление a--, :
в котором действительными будут лишь первый и последний элементы?
Ответ зависит от типа твоих таймеров. После срабатывания таймер может удаляться сразу (если на нем легкий процессинг, типа порвать соединение и положить мессадж в очередь, это Тип 1) или ждать пока он станет никому не нужен, т.е. обнулится его рефкаунтер (если не нем тяжелый процессинг, это Тип 2).
Дизайн хрюнделя khrundel мягко говоря, странный. Я предложу похожий свой без голых указателей, годящийся для обоих вариантов таймеров.
Берем ordered_map (который в плюсах назвали map) на основе B+tree. В качестве ключа используем время таймера (с миллисекундами, никаких целых timer_id). Вставка в середину быстрая, удаление сработавших таймеров с конца еще быстрее (если у тебя Тип 1), удаление сработавших таймеров по порядку из середины тоже быстрое (если у тебя Тип 2).
Если ты таймеры двигаешь по времени, то будет некоторый оверхед, но все равно поиск-удаление-поиск-вставка в B+tree быстрые. Не думаю что от прошивки таймеров насквозь указателями этот оверхед уменьшится. Скорее наоборот, увеличится.
Исправление a--, :
в котором действительными будут лишь первый и последний элементы?
Ответ зависит от типа твоих таймеров. После срабатывания таймер может удаляться сразу (и видимо класть мессаги в очереди, это Тип 1) или ждать пока он станет никому не нужен, т.е. обнулится его рефкаунтер (Тип 2).
Дизайн хрюнделя khrundel мягко говоря, странный. Я предложу похожий свой без голых указателей, годящийся для обоих вариантов таймеров.
Берем ordered_map (который в плюсах назвали map) на основе B+tree. В качестве ключа используем время таймера (с миллисекундами, никаких целых timer_id). Вставка в середину быстрая, удаление сработавших таймеров с конца еще быстрее (если у тебя Тип 1), удаление сработавших таймеров по порядку из середины тоже быстрое (если у тебя Тип 2).
Если ты таймеры двигаешь по времени, то будет некоторый оверхед, но все равно поиск-удаление-поиск-вставка в B+tree быстрые. Не думаю что от прошивки таймеров насквозь указателями этот оверхед уменьшится. Скорее наоборот, увеличится.
Исправление a--, :
в котором действительными будут лишь первый и последний элементы?
Ответ зависит от типа твоих таймеров. После срабатывания таймер может удаляться сразу (и видимо класть мессаги в очереди?, это Тип 1) или ждать пока он станет никому не нужен, т.е. обнулится его рефкаунтер (Тип 2).
Дизайн хрюнделя khrundel мягко говоря, странный. Я предложу похожий свой без голых указателей, годящийся для обоих вариантов таймеров.
Берем ordered_map (который в плюсах назвали map) на основе B+tree. В качестве ключа используем время таймера (с миллисекундами, никаких целых timer_id). Вставка в середину быстрая, удаление сработавших таймеров с конца еще быстрее (если у тебя Тип 1), удаление сработавших таймеров по порядку из середины тоже быстрое (если у тебя Тип 2).
Если ты таймеры двигаешь по времени, то будет некоторый оверхед, но все равно поиск-удаление-поиск-вставка в B+tree быстрые. Не думаю что от прошивки таймеров насквозь указателями этот оверхед уменьшится. Скорее наоборот, увеличится.
Исправление a--, :
в котором действительными будут лишь первый и последний элементы?
Ответ зависит от типа твоих таймеров. После срабатывания таймер может удаляться сразу (и видимо класть мессаги в очереди?, это Тип 1) или ждать пока он станет никому не нужен, т.е. обнулится его рефкаунтер (Тип 2).
Дизайн хрюнделя khrundel мягко говоря, странный. Я предложу похожий свой без голых указателей, годящийся для обоих вариантов таймеров.
Берем ordered_map (который в плюсах назвали map) на основе B+tree. В качестве ключа используем время таймера (с миллисекундами, никаких целых timer_id). Вставка в середину быстрая, удаление сработавших таймеров с конца еще быстрее (если у тебя Тип 1), удаление сработавших таймеров по порядку из середины тоже быстрое (если у тебя Тип 2).
Если ты таймеры двигаешь по времени, то будет некоторый оверхед, но не думаю что от прошивки таймеров насквозь указателями этот оверхед уменьшится. Скорее наоборот, увеличится.
Исправление a--, :
в котором действительными будут лишь первый и последний элементы?
Ответ зависит от твоих таймеров. Они могут быть разные. После срабатывания они могут удаляться сразу (и видимо класть мессаги в очереди?, это Тип 1) или ждать пока они станут никому не нужны, т.е. обнулится их рефкаунтер (Тип 2).
Дизайн хрюнделя khrundel мягко говоря, странный. Я предложу похожий свой без голых указателей, годящийся для обоих вариантов таймеров.
Берем ordered_map (который в плюсах назвали map) на основе B+tree. В качестве ключа используем время таймера (с миллисекундами, никаких целых timer_id). Вставка в середину быстрая, удаление сработавших таймеров с конца еще быстрее (если у тебя Тип 1), удаление сработавших таймеров по порядку из середины тоже быстрое (если у тебя Тип 2).
Если ты таймеры двигаешь по времени, то будет некоторый оверхед, но не думаю что от прошивки таймеров насквозь указателями этот оверхед уменьшится. Скорее наоборот, увеличится.
Исходная версия a--, :
в котором действительными будут лишь первый и последний элементы?
Ответ зависит от твоих таймеров. Они могут быть разные. После срабатывания они могут удаляться сразу (и видимо класть мессаги в очереди?, это Тип 1) или ждать пока они станут никому не нужны, т.е. обнулится их рефкаунтер (Тип 2).
Дизайн хрюнделя khrundel мягко говоря, странный. Я предложу похожий свой без голых указателей, годящийся для обоих вариантов таймеров.
Берем ordered_map (который в плюсах назвали map) на основе B+tree. В качестве ключа используем время таймера (с миллисекундами, никаких целых timer_id). Вставка в середину быстрая, удаление с концов еще быстрее (если у тебя Тип 1), удаление по порядку из середины тоже быстрое (если у тебя Тип 2).
Если ты таймеры двигаешь по времени, то будет некоторый оверхед, но не думаю что от прошивки таймеров насквозь указателями этот оверхед уменьшится. Скорее наоборот, увеличится.