Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2015, 14:35   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию 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;
        }
Как можно оптимизировать?
Изображения
Тип файла: jpg Безымянный.jpg (17.7 Кб, 132 просмотров)

Последний раз редактировалось Krasi; 09.12.2015 в 14:37.
Krasi вне форума Ответить с цитированием
Старый 09.12.2015, 16:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Mcod = Mcode();
А что он внутри цикла делает? Может его нужно перед циклом ставить? Не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.12.2015, 17:11   #3
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Гениально. Тема закрыта перемещением функции за пределы цикла:D
Krasi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему может не работать внутреняя тень inset??? ололошенько HTML и CSS 5 11.01.2013 12:47
Почему программа может не работать? Kas_Am Общие вопросы C/C++ 6 18.12.2012 21:42
Почему может не работать аплоад файлов на сервер? Revival001 PHP 14 09.04.2012 00:31
Почему не работает код, где может быть ошибка sweyle Microsoft Office Excel 9 11.01.2012 21:11
кто может объяснить,почему на моем компе программа работает на других нет?код в Delphi Symba Общие вопросы Delphi 1 24.03.2011 01:03