Высокая загрузка ЦП на Raspberry PI при чтении сетевого потока с помощью .NETLinux

Ответить Пред. темаСлед. тема
Гость
 Высокая загрузка ЦП на Raspberry PI при чтении сетевого потока с помощью .NET

Сообщение Гость »


Я хочу прочитать сетевой поток в .NET 8.0 (консольное приложение ARM64) на Raspberry PI (модель 4 — 8 ГБ оперативной памяти). Поток поступает с IpCam и имеет скорость около 800 кБ/с. На моем компьютере с Windows все работает нормально, загрузка ЦП составляет около 0–2%.

Когда я запускаю его на Raspberry Pi, загрузка ЦП достигает 40%.


Изображение


Я знаю, что производительность Raspberry Pi не так уж и хороша. Но реалистично ли то, что загрузка процессора настолько высока даже при чтении нескольких байтов из сетевого потока?

Вот мой код:

static async Task Main(string[] args) { Боул isRunning = правда; Console.CancelKeyPress += (s, e) => { isRunning = ложь; е.Отмена = правда; }; Секундомер секундомер = Stopwatch.StartNew(); ИНТ TotalBytes = 0; HttpClientHandler httpClientHandler = новый HttpClientHandler(); SetDigestAuthenticationMode (httpClientHandler, новый Uri (uri), имя пользователя, пароль); используя (клиент HttpClient = новый HttpClient(httpClientHandler)) { client.BaseAddress = новый Uri(uri); HttpResponseMessage headerResponse = ждут client.GetAsync("", HttpCompletionOption.ResponseHeadersRead); используя (поток потока = ожидание headerResponse.Content.ReadAsStreamAsync()) { делать { intufferLength = 4000; байт [] буфер = новый байт [bufferLength]; int byteReads = ждут потока.ReadAsync(buffer, 0,ufferLength); TotalBytes + = byteReads; Console.WriteLine(byteReads); } пока (isRunning); } } секундомер.Стоп(); Console.WriteLine($"{(totalBytes / stopwatch.Elapsed.TotalSeconds) / 1000} кБ/с"); } Private static void SetDigestAuthenticationMode (обработчик HttpClientHandler, Uri uri, строковое имя пользователя, строковый пароль) { NetworkCredential networkCredential = новый NetworkCredential (имя пользователя, пароль); CredentialCache credentialCache = новый CredentialCache { { uri, "Дайджест", networkCredential } }; handler.Credentials = credentialCache; обработчик.PreAuthenticate = правда; } Секундомер предназначен только для устранения проблем. Сначала попробовал без него. Мой вопрос: что-то не так в моем коде или ожидается плохая производительность?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка чтения входного потока при чтении потока WinSCP Session.GetFile из другого потока
    Anonymous » » в форуме C#
    0 Ответы
    68 Просмотры
    Последнее сообщение Anonymous
  • От физического сетевого устройства до логического сетевого устройства
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • От физического сетевого устройства до логического сетевого устройства
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • От физического сетевого устройства до логического сетевого устройства [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Высокая загрузка процессора WMI при прослушивании событий
    Anonymous » » в форуме C++
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Linux»