Тормозит функция, но причину найти не могу - 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д