Производительность добавления и удаления значений из HashSet <T>по сравнению с проверкой флага в словаре <T, bool> - PullRequest
0 голосов
/ 24 февраля 2012

В моем коде я хочу проверить, выполняется ли задание (в другом потоке) или нет.

Я думал об использовании Dictionary<String, bool> и проверке логического значения. Однако, поскольку я не знаю всех возможных задач при запуске, мне придется заполнять этот словарь на лету, когда задача запускается в первый раз, и запрашивать его следующим образом:

Boolean status;
if (_tasks.TryGetValue(lockName, out  status))
{
    return status;
}
return false;

Поскольку вместо этого bool само существование записи может быть информативным, я рассматриваю возможность использования Hashset<String> и добавления / удаления значений вместо установки флага.

return _tasks.Contains(name)

Мне интересно, какой из этих двух подходов даст лучшие результаты. Я ожидаю примерно того же числа операций записи, что и операций чтения.

1 Ответ

1 голос
/ 24 февраля 2012

Не будет существенной разницы.

Оба используют поиск хеша для проверки ключа, близкого к операции O (1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...