Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
 Аватар для GENDALF_ISTARI
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740

Выделяемый буфер максимальный и минимальный

16.03.2015, 07:18. Показов 4830. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C# Выделяемый буфер максимальный и минимальный
Вопрос на засыпку ?

вот код
C#
1
2
int BUFF=15000;
byte[] buffer=new byte[BUFF];
Вопрос
1) BUFF в байтах выделяется, то есть 15000 байт ?
2) Для Пк какой максимально допустимый парог, выделить буффер,
то есть сколько можно выделить, сколько нельзя ?

3) Как посчитать int BUFF=15000;
сколько я забрал буфера ?
а сколько есть ?

Добавлено через 1 час 5 минут
Как выделить необходимое количество буфера
для копирования файла используя BufferedStream


C#
1
BufferedStream BufferedStream_read = new BufferedStream(reader);
Не заданое количество буфера, а автоматическое необходимое

Скинте примерчик
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.03.2015, 07:18
Ответы с готовыми решениями:

Максимальный размер программ выделяемый C#
программам написанным на С выделяется максимальный размер 4 гбайта. Этот размер можно изменить но для этого нужны дополнительные действия ...

Максимальный размер прог выделяемый .NET
программам написанным на С++ выделяется максимальный размер 4 гбайта. Этот размер можно изменить но для этого нужны дополнительные действия...

Максимальный размер оперативки выделяемый под службу WCF
Создать double в обычной проге или в потоке вполне реально, а вот в службе с этим проблемы. Есть идеи как это можно обойти?

5
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
16.03.2015, 09:36
https://msdn.microsoft.com/ru-... .110).aspx

Там и примеры есть). Удачи.
1
 Аватар для GENDALF_ISTARI
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
16.03.2015, 23:49  [ТС]
Спасибо я понял
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using(StreamReader reader= new StreamReader ("Video.avi",FileMode.Open))
{
 
      using(StreamReader write= new StreamReader ("Video.avi",FileMode.Creat))
            {
               BufferedStream BufferedStream_read = new BufferedStream(reader); // читаем поток
               BufferedStream BufferedStream_write = new BufferedStream(write); // пишем потоком
               int BUFF=BufferedStream_read.Length; // само берет оптимальный буфер
               byte[] but=new byte[BUFF]; // запихаем буфер 
               
               /*
               КОД
               */
                // основной код 
                int readed = BufferedStream_read.Read(buffer, 0, (int) BUFF); // читаем
               BufferedStream_write .Write(buffer, 0, readed ); // пишем в файл считаные readed 
                   
            }
         
}
Перспектива максимальное копирование , и без указания буфера

Добавлено через 1 час 10 минут
Проблема использования BufferedStream
это огромное количество файлов , и большие размеры их, где прийдеться испоьзовать буфер в ручную
и меньшими значениями

Добавлено через 4 минуты
По тестам проблема в BufferedStream начинается с размерами 11.6 ГБ разница при копировании файлов с одной папки, в другую папку,
с использованием BufferedStream, потеря копирования доходит до 0.26% от оригинальной папки, и выходит BufferedStream не все скопировал

Указаный меньший буфер, использованием просто потоков StreamReader
уменьшает риск потерять данных при копировании

BufferedStream подходит копирование меньших размеров файлов , и малое их количество
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
17.03.2015, 10:10
GENDALF_ISTARI,
Во-первых, BufferedStream вообще не нужен для копирования/чтения/записи файлов. StreamReader или FileStream уже содержат в себе буферизацию. Размер буфера можно задать в конструкторе FileStream.
Во-вторых, для копирования используйте File.Copy.
В-третьих, если (вдруг) вы делаете многопоточное копирование, то это тоже не имеет смысла, поскольку диск - не многопточное устройство.
1
 Аватар для GENDALF_ISTARI
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
18.03.2015, 14:27  [ТС]
Я знаю что можно задавать )))
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using(StreamReader reader= new StreamReader ("Video.avi",FileMode.Open))
{
 
      using(StreamReader write= new StreamReader ("Video.avi",FileMode.Creat))
            {
               
               int BUFF=10000; // буфер
               byte[] but=new byte[BUFF]; // запихаем буфер 
               
               /*
               КОД
               */
                // основной код 
                int readed = reader.Read(buffer, 0, (int) BUFF); // читаем
               write.Write(buffer, 0, readed ); // пишем в файл считаные readed 
                   
            }
         
}
но очень бы хотелось чтоб задавало оно само сколько нужно
если знаешь скинь код птичка
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18240 / 14154 / 5366
Регистрация: 17.03.2014
Сообщений: 28,841
Записей в блоге: 1
18.03.2015, 19:12
Лучший ответ Сообщение было отмечено GENDALF_ISTARI как решение

Решение

Цитата Сообщение от GENDALF_ISTARI Посмотреть сообщение
1) BUFF в байтах выделяется, то есть 15000 байт ?
Да. Плюс небольшие накладные расходы CLR которые не играют заметной роли.

Цитата Сообщение от GENDALF_ISTARI Посмотреть сообщение
2) Для Пк какой максимально допустимый парог, выделить буффер,
то есть сколько можно выделить, сколько нельзя ?
Максимальный размер массива UInt32.MaxValue = 232. Для byte[] еще есть ограничение по максимальному индексу - 2_147_483_591. Для копирования файлов такие большие буферы в любом случае не нужны.

Цитата Сообщение от GENDALF_ISTARI Посмотреть сообщение
но очень бы хотелось чтоб задавало оно само сколько нужно
Во-первых, чем тебя не устраивает фиксированный размер буфера? Во-вторых, дай определение для "сколько нужно". Тут можно много чего придумать. Например, выбирать размер буфера в процентах от размера входного файла. Или для небольших файлов использовать буфер равный размеру файлов, а для остальных фиксированный буфер.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using(FileStream sourceStream = File.OpenRead("input"))
using (FileStream targetStream = File.OpenWrite("output"))
{
    const int MAXSIZE = 65000;
    byte[] buf = new byte[sourceStream.Length < MAXSIZE ? sourceStream.Length : MAXSIZE];
 
    for(;;)
    {
        int bytesRead = sourceStream.Read(buf, 0, buf.Length);
        if (bytesRead == 0) break;
 
        targetStream.Write(buf, 0, bytesRead);
    }
}
P.S. Отдельно хочется прокоментировать твой код чтобы натолкнуть тебя на верный стиль мышления.
Цитата Сообщение от GENDALF_ISTARI Посмотреть сообщение
C#
1
2
BufferedStream BufferedStream_read = new BufferedStream(reader); // читаем поток
BufferedStream BufferedStream_write = new BufferedStream(write); // пишем потоком
Комментарии неправильные. В этих строках объявляются и инициализируются переменные. Никакого чтения или записи здесь не происходит.

Цитата Сообщение от GENDALF_ISTARI Посмотреть сообщение
C#
1
int BUFF=BufferedStream_read.Length; // само берет оптимальный буфер
Никакой оптимальности здесь не видно. Просто берется длина входного файла.

Цитата Сообщение от GENDALF_ISTARI Посмотреть сообщение
C#
1
byte[] but=new byte[BUFF]; // запихаем буфер
Самый "лучший" комментарий. Продолжай писать в таком стиле и твои коллеги тебя полюбят.
Если серьезно, то простое объявление и инициализация точно не описываются термином "запихиваем".

Цитата Сообщение от GENDALF_ISTARI Посмотреть сообщение
с использованием BufferedStream, потеря копирования доходит до 0.26% от оригинальной папки, и выходит BufferedStream не все скопировал
Ошибки в базовой библиотеке хоть и встречаются, но редко. И прежде чем винить чужой код код нужно свой код правильно написать. Я уверен что проблема совершенно точно не в BufferedStream, а в твоем коде потому что я помню как ты боролся с копированием больших файлов при том что правильное решение было приведено в начале темы.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.03.2015, 19:12
Помогаю со студенческими работами здесь

Найти минимальный и максимальный элементы и их координаты, поменять местами минимальный и максимальный элемент
3) В матрице размером n на m (1&lt;n, m&lt;10) (ввод n, m и матрицы с клавиатуры) найти минимальный и максимальный элементы и их координаты,...

В матрице найти минимальный и максимальный элементы и их координаты, поменять местами минимальный и максимальный элементы
В матрице размером n на m (1&lt;n, m&lt;10) (ввод n, m и матрицы с клавиатуры) найти минимальный и максимальный элементы и их координаты,...

Найти максимальный и минимальный
Действительную матрицу А заполнить случайными числами из диапазона . Найти максимальный и минимальный элементы в заштрихованной...

Минимальный и максимальный грузооборот
1. Подсчитать общий ВВП за 6 месяцев 2003 года и выести строкой ИТОГО. 2. Определить минимальный и максимальный грузооборот за 6 месяцев...

максимальный и минимальный элемент
дан массив из 15 целых чисел, если минимальный элемент меньше максимального в 2 раза, то все элементы, предшествующие максимальному...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru