|
|
|
Сколько с винта быстрей всего прочитать?
|
|||
|---|---|---|---|
|
#18+
Есть паредположение, что читать с винта по байту - хреново. Ибо в винде есть кластеры, а в Линухе ещё что-то похожее. Да и головка винта за разможет прочесть не один байт. Вопрос: как определить сколько байт за раз прочесть лучше всего? ЗЫ: кто читал исходники поймёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 23:33 |
|
||
|
Сколько с винта быстрей всего прочитать?
|
|||
|---|---|---|---|
|
#18+
SarinЕсть паредположение, что читать с винта по байту - хреново. Ибо в винде есть кластеры, а в Линухе ещё что-то похожее. Да и головка винта за разможет прочесть не один байт. Вопрос: как определить сколько байт за раз прочесть лучше всего? ЗЫ: кто читал исходники поймёт. Читай man mmap ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 23:54 |
|
||
|
Сколько с винта быстрей всего прочитать?
|
|||
|---|---|---|---|
|
#18+
ЗемлекопЧитай man mmap Пасиба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2005, 00:02 |
|
||
|
Сколько с винта быстрей всего прочитать?
|
|||
|---|---|---|---|
|
#18+
Читать лучше по обьёму, время чтения которого РАВНА времени его обработки !!! (это если хошь закон) Тогда получишь оптимум по времени выполнения данной задачи. Пример... Индексные страницы у DBF имеют длину в 1 - 2 килобайта. Хотя с первого взгляду было бы практичней закачивать по 65 кил. или поболее (реал моде берём). Кто не верит, пусть проверит... (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2005, 11:47 |
|
||
|
Сколько с винта быстрей всего прочитать?
|
|||
|---|---|---|---|
|
#18+
SarinЕсть паредположение, что читать с винта по байту - хреново. Ибо в винде есть кластеры, а в Линухе ещё что-то похожее. Да и головка винта за разможет прочесть не один байт. Вопрос: как определить сколько байт за раз прочесть лучше всего? Здравая мысль Хочу тебя успокоить. Прочитать ОДИН байт довольно сложно. Во первых, железо осуществляет ввод-вывод "посекторно" (обычно 512 байт) Во вторых, операционка имеет моду читать и писать "покластерно" на различных ФС. Для СУБД например, тюннинг размера кластера ФС имеет большое значение т.к. непосредственно влияет на скорость рассеянных чтений диска. С точки зрения мультизадачности, лучше иметь большие буферы чтения-записи т.к. конкуренция за ввод-вывод будет менее заметна. Однако такой подход делает системы инерционными и крайне неотзывчивыми к пользователю. Что для логирования неприемлемо. А для согласованности и непротиворечивости данных (опять-же в СУБД) рекомендуется наоборот - почаще выполнять flush, чтобы в случае отключения питания не потерять "кусок транзакции". Вот так. Выводы делай сам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2005, 16:38 |
|
||
|
Сколько с винта быстрей всего прочитать?
|
|||
|---|---|---|---|
|
#18+
Ладно. Я решил не заморачиватся с определением того сколько мне прочесть выгодней. Ясно дело что прчесть за раз даж 2 килобайта лучше, чем 3 байта:) Но вот трабл. Как сие реализовать? Я думал проблем не будет. Написал просто: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Но не пахёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2005, 01:07 |
|
||
|
Сколько с винта быстрей всего прочитать?
|
|||
|---|---|---|---|
|
#18+
А кто будет память аллокировать, на которую char *с должно указывать? Какой-нибудь malloc или new? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2005, 01:49 |
|
||
|
Сколько с винта быстрей всего прочитать?
|
|||
|---|---|---|---|
|
#18+
Sarin wrote: > char *c; > f = fopen("/home/sarin/2/test/t", "rb"); > fread(c, *1*, *10*, f); > c[10] = 0; ну ты меня поражаешь раз от раза :-) самый "правильный" способ, написать функцию "чтения" N байт. а вот эта функция сама заботится о том, чтобы считывать буффер, если он пуст, и выдавать следующую порцию из N байт. при этом будет проверять, удалось ли чтение и выдавать соответствующие сообщения в лог или там прямо на консоль. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2005, 07:27 |
|
||
|
Сколько с винта быстрей всего прочитать?
|
|||
|---|---|---|---|
|
#18+
alex_k Sarin wrote: > char *c; > f = fopen("/home/sarin/2/test/t", "rb"); > fread(c, *1*, *10*, f); > c[10] = 0; ну ты меня поражаешь раз от раза :-) самый "правильный" способ, написать функцию "чтения" N байт. а вот эта функция сама заботится о том, чтобы считывать буффер, если он пуст, и выдавать следующую порцию из N байт. при этом будет проверять, удалось ли чтение и выдавать соответствующие сообщения в лог или там прямо на консоль. Posted via ActualForum NNTP Server 1.2 а я уже хотел поругатся что при написании пути нужно ставить два \\ но потом вспомнил что он юзает люникс , и там не "\" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2005, 08:14 |
|
||
|
Сколько с винта быстрей всего прочитать?
|
|||
|---|---|---|---|
|
#18+
ЗемлекопА кто будет память аллокировать, на которую char *с должно указывать? Какой-нибудь malloc или new? А подробней? Юзаю Си просто. Соответственно new вроде как не подходит. А malloc - что-то слышал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2005, 00:11 |
|
||
|
Сколько с винта быстрей всего прочитать?
|
|||
|---|---|---|---|
|
#18+
Sarin wrote: > А подробней? Юзаю Си просто. Соответственно new вроде как не подходит. А А подробней - в книжках. Понимание работы с памятью - первейшая необходимость при программировании на Си. то что ты объявил char* c; это просто указатель на "некую" память. И ты должен указать, что это за память, чтобы была определенность. Например присвоить этот указатель результату функции malloc. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2005, 06:49 |
|
||
|
Сколько с винта быстрей всего прочитать?
|
|||
|---|---|---|---|
|
#18+
Sarin А подробней? Юзаю Си просто. Соответственно new вроде как не подходит. А malloc - что-то слышал. malloc - низкоуровневая функция. Выделяет память по байтам. Возвращает бестиповой указатель на начало выделенного фрагмента. Как вариации на тему - можно отметить realloc, который умеет увеличить выделенный кусок памяти. Удалять такие указатели надо через free. new - используется для создания обьектов. Неявно вызывает функцию конструирования экземпляра. Можно использовать для создания массивов атомарных типов, и при удалении такой ссылки рекомендуется использовать delete[] ptrName; В рамках новых "веяний", народ предпочитает использовать либо new с указателями на обьекты либо шаблоны интеллектуальных указателей (вроде auto_ptr), которые могут удалять за собой память, когда на них нет ссылок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2005, 10:44 |
|
||
|
Сколько с винта быстрей всего прочитать?
|
|||
|---|---|---|---|
|
#18+
mayton malloc - низкоуровневая функция. ..... new - используется для создания обьектов. ..... Добавлю только, что при работе в C должен использоваться malloc/realloc/free. А в C++ - new/delete. Несмотря на всю похожесть C и C++ у них разные принципы работы с паматью. Смешивать возможно, но очень не желательно и чревато. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2005, 18:59 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33151280&tid=2033068]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 226ms |
| total: | 397ms |

| 0 / 0 |
