Обращение через индекс Dictionary или IndexOf, что быстрее / производительнее? - C#
Формулировка задачи:
Смотрите есть строка:
мне приходит символ (или есть второй вариант, изначально dic разбить на список Dictionary<char, int>, короче так:
этот collection будет сохранен как свойство, т.е. на надо будет каждый раз повторять эту "конвертацию".
а потом просто:
как будет быстрее и производительнее?
Работы будет много, по этому это важно.
string dic = "abcdefghijklmnopqrstuvwxyz";
char
) и мне надо выяснить положение этого символа в строке, у меня есть 2 варианта, первое искать при помощиIndexOf
:int pos = dic.IndexOf(MyChar);
Dictionary<char, int> collection = new Dictionary<char, int>(); for (int i = 0; i < dic.Length; i++) collection.Add(dic[i], i);
int pos = collection[MyChar];
PS
я может туплю, просто в последнее время занимался РНР, а там есть способ так обращаться и оно работает быстрее чем поиск по массиву, вот и спрашиваю.// проверка присутствует ли в массиве значение
if ( isset($array['page1']) ) {
// ....
}
вроде как когда я через индекс обращаюсь, там все равно поиск осуществляется перебором.
Решение задачи: «Обращение через индекс Dictionary или IndexOf, что быстрее / производительнее?»
textual
Листинг программы
static string GetNew(string Old, string dic = "0123456789") // 0123456789abcdefghijklmnopqrstuvwxyz
{
char[] temp = Old.ToCharArray();
for (int i = temp.Length - 1; i >= 0; i--)
{
if (temp[i] == dic[dic.Length - 1])
{
temp[i] = dic[0];
continue;
}
else
{
int now = dic.IndexOf(temp[i]);
temp[i] = dic[now + 1];
break;
}
}
return new string(temp);
}