Оптимизация кода: мониторинг пропускной способности в проблемах c # - PullRequest
0 голосов
/ 19 февраля 2012

мой вопрос в основном об оптимизации кода (на данный момент) Я создал сетевой монитор, который контролирует различные соединения на ПК. Я сделал анализ пакетов на 3-м уровне стека (на сетевом уровне), после захвата пакета я должен создать объект на Пользовательский интерфейс для каждого соединения, то, что я делаю в данный момент, смотрит на общую потребляемую пропускную способность и общее количество данных, отправляемых каждую секунду, когда запускается программа. вот эта часть кода:

    temp= packet_rtxt.TextLength;
        tempdr = temp / 1024;
        dr_txt.Text=tempdr.ToString();
        totaldata = totaldata + temp;
        totaldatadisp = totaldata;
        packet_rtxt.Text = "";
        //unit
        if (totaldata < 10485760)
        {
            if (totaldata < 10240)
                unit.Text = "bytes";
            else
            {
                totaldatadisp = totaldatadisp / 1024;
                unit.Text = "KBs";
            }
        }
        else
        {
            totaldata = totaldatadisp / 1048576;
            unit.Text = "MBs";
        }
        test.Text = totaldatadisp.ToString();
        tds.Enabled = true;
    }

Итак, что я делаю, так это записываю захваченные пакеты в поле расширенного текста, беря длину этого rtxt и добавляя его к счетчику для общих данных, беря длину и используя ее в качестве скорости передачи данных, затем очистка RTX для следующих битов данных. часть, получающая общее количество данных, работает нормально, однако секция BPs отлично работает для небольших объемов данных, а затем сходит с ума, если скорость передачи данных превышает 10 Кбит / с (на моем компьютере) я должен попытаться оптимизировать весь код, или есть какой-то другой метод (имейте в виду, мне нужно контролировать каждое отдельное соединение), или мне нужно использовать различные элементы управления пользовательского интерфейса? я должен сосредоточиться на оптимизации или использовать новые способы?

спасибо заранее

1 Ответ

0 голосов
/ 19 февраля 2012

Стандартные элементы управления не предназначены для такой нагрузки. Вам необходимо отделить регистрацию данных от отображения данных.

Я бы показывал последние 10 килобайт текста только один раз в секунду. Вы все еще можете хранить все записи журнала в некоторой структуре данных. Но вам не нужно подталкивать их всех в пользовательский интерфейс.

В качестве альтернативы вы можете написать свой собственный элемент управления отображением текста, но это будет намного больше работы.

...