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