Оптимальный размер буфера для ответного потока HttpWebResponse

Если я правильно понимаю вашу проблему, вы можете отобразить ее в цикле for с 1 по 256.

newData1 = load('Sub21.mat')

for n=1:256
plot(newdata(n,:,1)) %Plotting n of 256, all 150000 and 1st of the 11 lines
hold on;
plot(newdata(n,:,2))
hold on;
plot(newdata(n,:,3))
hold on;
.
.
.
plot(newdata(n,:,11))
hold on;
xlabel('milisec')
ylabel('voltage')
legend('name1','name2', .... , 'name11')
end
% or maybe two for loops
for n=1:256
for m=1:11
    plot(newdata(n,:,m)) %Plotting n of 256, all 150000 and m of the 11 lines
    hold on;
end 
end

Вы можете использовать подзаговор, чтобы не получить 256 цифр.

Можете ли вы отправить некоторые данные?

10
задан Fung 23 April 2009 в 04:28
поделиться

2 ответа

Действительно, это не имеет большого значения.

Конечно, если вы используете действительно маленькие буферы, вам, возможно, придется сделать несколько дополнительных вызовов через слои, чтобы получить байты ( хотя поток, вероятно, выполняет хотя бы некоторую буферизацию - я не знаю, каковы его значения по умолчанию). И конечно, если вы используете действительно большие буферы, вы потратите немного памяти и внесете некоторую фрагментацию. Поскольку вы, очевидно, здесь делаете IO, каждый раз, когда вы получаете выгоду от настройки буферов, будет доминировать время IO.

Как правило, я иду с степенью двойки между 2048 (2k) и 8192 ( 8k). Просто убедитесь, что вы знаете, что делаете, если у вас есть буфер, равный или превышающий 85 000 байт (тогда это «большой объект» и подчиняется другим правилам GC ).

Фактически , важнее, чем размер буфера, как долго вы его держите. Для объектов вне кучи больших объектов GC очень хорошо справляется с очень недолговечными объектами (коллекции Gen 0 быстрыми) или очень долгоживущими объектами (Gen 2). Объекты, которые живут достаточно долго, чтобы добраться до Быт 1 или 2 перед освобождением, сравнительно более дорогостоящи и, как правило, стоят гораздо больше времени, чем беспокойство, чем размер буфера.

И последнее замечание: если вы считаете, что у вас есть производительность проблема из-за размера используемых вами буферов, test it. Это маловероятно, но кто знает, может быть, у вас есть странное слияние версии ОС, сетевого оборудования и выпуска драйверов, что имеет некоторую странную проблему с буферами определенного размера.

GC очень хорошо справляется с очень недолговечными объектами (коллекции Gen 0 быстры) или очень долгоживущими объектами (Gen 2). Объекты, которые живут достаточно долго, чтобы добраться до Быт 1 или 2 перед освобождением, сравнительно более дороги и, как правило, стоят гораздо больше времени, чем беспокойство, чем размер буфера.

И последнее замечание: если вы считаете, что у вас есть производительность проблема из-за размера используемых вами буферов, test it. Это маловероятно, но кто знает, может быть, у вас есть странное слияние версии ОС, сетевого оборудования и выпуска драйверов, что имеет некоторую странную проблему с буферами определенного размера.

GC очень хорошо справляется с очень недолговечными объектами (коллекции Gen 0 быстры) или очень долгоживущими объектами (Gen 2). Объекты, которые живут достаточно долго, чтобы добраться до Быт 1 или 2 перед освобождением, сравнительно более дороги и, как правило, стоят гораздо больше времени, чем беспокойство, чем размер буфера.

И последнее замечание: если вы считаете, что у вас есть производительность проблема из-за размера используемых вами буферов, test it. Это маловероятно, но кто знает, может быть, у вас есть странное слияние версии ОС, сетевого оборудования и выпуска драйверов, что имеет некоторую странную проблему с буферами определенного размера.

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

И последнее замечание: если вы думаете, что у вас проблемы с производительностью из-за размера используемых вами буферов, протестируйте . Это маловероятно, но кто знает, может быть, у вас есть странное слияние версии ОС, сетевого оборудования и выпуска драйверов, что имеет некоторую странную проблему с буферами определенного размера.

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

И последнее замечание: если вы считаете, что у вас проблемы с производительностью из-за размера используемых вами буферов, протестируйте . Это маловероятно, но кто знает, может быть, у вас есть странное слияние версии ОС, сетевого оборудования и выпуска драйверов, что имеет некоторую странную проблему с буферами определенного размера.

7
ответ дан 4 December 2019 в 00:27
поделиться

Мой анекдотический опыт заключался в том, что это действительно зависит от того, что вы делаете, но обычно все, что находится в диапазоне 1024-4096 байт (1-4KB, то есть степень двойки), даст мне сравнимый результат. производительность (с 4KB «лучшим» числом, которое я видел).

По сути, вы хотите, чтобы буфер был достаточно большим, чтобы вы не бесполезно читали данные из потока, но не настолько велики, чтобы уменьшить отдачу. Если ваш буфер слишком велик (~ МБ), то вы увеличите потери в кеше памяти, что может привести к снижению производительности. Конечно, это сильно варьируется в зависимости от фактического H / W (скорость шины, размер кэша и т. Д.), Но мне кажется, что случаи, когда буфер 4 МБ был медленнее, чем буфер 4 КБ (оба случая имели длительный срок службы, поэтому GC не был проблема).

Как отмечает Джонатан,

3
ответ дан 4 December 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: