Я знаю, что это старая тема, но определенно придерживайтесь Session["key"] = null
- это намного быстрее! Я провел несколько тестов (в состоянии сеанса InProc), удалив 1000 элементов в строке (истекшее время составляет всего 1000 элементов, поэтому, если вы хотите среднее время для одного элемента, просто разделите его на 1000):
Удаление 1000 существующих предметов:
Session[key] = null; - 0.82380000000000009 ms
Session.Remove(key); - 59.960100000000004 ms
Удаление 1000 НЕ существующих предметов:
Session[key] = null; - 1.5368000000000002 ms
Session.Remove(key); - 0.6621 ms
Удаление 500 существующих и 500 несуществующих элементов:
Session[key] = null; - 1.0432000000000001 ms
Session.Remove(key); - 33.9502 ms
Вот фрагмент кода для первого теста:
Session.Clear();
for (int i = 0; i < 1000; i++)
Session[i.ToString()] = new object();
Stopwatch sw1 = Stopwatch.StartNew();
for (int i = 0; i < 1000; i++)
Session[i.ToString()] = null;
sw1.Stop();
Session.Clear();
for (int i = 0; i < 1000; i++)
Session[i.ToString()] = new object();
Stopwatch sw2 = Stopwatch.StartNew();
for (int i = 0; i < 1000; i++)
Session.Remove(i.ToString());
sw2.Stop();