Тормозит функция, но причину найти не могу - C#
Формулировка задачи:
Я почти понял, но... Я провел проверку, что в системе работает дольше всего. Выдало Mcode(). Смотрите рисунок, там долго инициализируется массив и очень много раз вызываются функции Mcode() и scrambler(). При этом я-то предполагаю, что scrambler вызывается 1 раз, и это меня задело - я ошибаюсь в чем-то.
Строчка Как можно оптимизировать?
string B_sc = scrambler(BinData[itmr - 1]); показывает, что на scrambler(), по-идее, приходит сразу строка, ведь itmr-1 - это такт циклической работы программы, у меня всего прошло только 2 таких такта. А на рисунке можете видеть сумасшедшие числа: 43200.
Код:
////////////////Генерация М-последовательности для любого информационного бита////////////////
bool[] Mcode()
{
bool[] x = { false, false, false, false, false, false, false, true, false, true, false, true, false, false, true }; // начальная комбинация
bool[] Mcod = new bool[NProc * NbitIn1OFDM]; // если 4*450, то будет 1800
for (int ii = 0; ii < NProc * NbitIn1OFDM; ii++)
{
Mcod[ii] = x[14];
bool buf = x[13] ^ x[14]; //Циклический сдвиг на 1 бит вправо
for (int i = 14; i > 0; i--) { x[i] = x[i - 1]; }
x[0] = buf;
}
return Mcod;
}
///////////////////////////////////////Скремблер////////////////////////////////////////////
string scrambler(string X)
{
bool[] Mcod = new bool[NProc * NbitIn1OFDM]; string Y = "";
for (int i = 0; i < X.Length; i++)
{
Mcod = Mcode();
int bin_mes_cur = int.Parse(X[i].ToString());
int Mcod_cur = Convert.ToInt16(Mcod[i]);
int Bsc_cur = bin_mes_cur ^ Mcod_cur;
Y += Bsc_cur.ToString();
list.Add(i, X[i]);
listSC.Add(i, Bsc_cur);
}
return Y;
}Решение задачи: «Тормозит функция, но причину найти не могу»
textual
Листинг программы
Y += Bsc_cur.ToString();