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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2015, 15:50   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию Почему тормозит такая функция

Расскажите как новичку в вопросах оптимизации и повышения быстродействия.
Код:
//////////////////Конвертируем - подробнее//////////////////////////////////
        double IQconv(int X)
        {
            double Y = (double)int.Parse(X.ToString());
            if (Y == 1) Y = -1;
            if (Y == 2) Y = -0.707;
            if (Y == 3) Y = 0;
            if (Y == 4) Y = 0.707;
            if (Y == 5) Y = 1;
            return Y;
        }

        float[] OFDM_spec(string XI, string XQ, int n, float[] fin)
        {
            ////////////////////////////////////////////////ОБПФ///////////////////////////////////////////////////////////

            ////////////////////////////////Формирование спектра ОФДМ №1////////////////////////////////////
            ///////////////////////////////Добавление нулевых поднесущих////////////////////////////////////
            for (int i = 0; i < n; i++)
            {
                fin[i * 2] = 0;                                                // I part of the Complex Number
                fin[i * 2 + 1] = 0;                                            // Q part of the Complex Number
            }
            //////////////////////////////Добавление поднесущих с данными////////////////////////////////// 
            var pilotsv = new List<int>() {  };     //Добавить сюда частоты, если на них нужны пилот-сигналы
            int ndatas = 75; int dat_and_pil = ndatas + pilotsv.ToArray().Length;
            int[] datas1 = new int[dat_and_pil]; for (int i = 0; i < dat_and_pil; i++) { datas1[i] = i + 1; }

            var datas = Enumerable.Range(1+24, dat_and_pil)      //datas формируется так, чтобы не включить в себя индексы pilotsv
                .Where(val => !pilotsv.Contains(val))               //datas - номера поднесущих
                .ToArray();

            int[] pilots = pilotsv.ToArray();

            float A1, A2, A3, A4;                                   //А здесь уже закладывается сама информация  
            for (int ii = 0; ii < datas.Length; ii++)
            {
                for (int i = 0; i < n; i++)
                {
                    A1 = (float)IQconv(XI[ii] - 48); A2 = (float)IQconv(XQ[ii] - 48);     //8-DPSK IQ информация
                    A3 = (float)IQconv(XI[ndatas + ii] - 48); A4 = (float)IQconv(XQ[ndatas + ii] - 48);
                    if (i == datas[ii]) { fin[i * 2] = A1; fin[i * 2 + 1] = A2; }       //Для положительной части спектра
                    if (i == (n - datas[ii])) { fin[i * 2] = A3; fin[i * 2 + 1] = A4; } //Для отрицательной части спектра
                }
            }
            //////////////////////////////Добавление пилот-сигналов///////////////////////////////////////
            for (int ii = 0; ii < pilots.Length; ii++)
            {
                for (int i = 0; i < n; i++)
                {
                    A1 = (float)10;
                    A2 = A1; A3 = A1; A4 = A1;
                    if (i == pilots[ii]) { fin[i * 2] = A1; fin[i * 2 + 1] = A2; }
                    if (i == (n - pilots[ii])) { fin[i * 2] = A3; fin[i * 2 + 1] = A4; }
                }
            }
            /////////////////////////////////Спектр на ОБПФ №1 сформирован!///////////////////////////////

            return fin;
        }
Пробовал закомментировать выполнение функции OFDM_spec - выдает результат в 3 раза быстрее. прямо миллисекунд на 300 быстрее. В чем может быть суть?
Krasi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему в языкастых книгах не рассмотрена такая возможность? taras-proger Свободное общение 28 19.09.2015 16:32
Почему тормозит *.xlsx? RISagitov Microsoft Office Excel 5 09.06.2014 18:01
Почему такая разница между Integer и LongInt? k1r1ch Общие вопросы Delphi 13 13.10.2009 09:01
Есть ли такая функция в Паскале?..... maljoha Помощь студентам 2 30.04.2008 13:09
почему такая бяка??? Sjava Свободное общение 17 13.11.2006 08:37