Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Производительность приложения 
:(
    Опции темы
Wanderer2019
Дата 22.7.2009, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 7
Всего: 17



Привет,

подскажите - кто может сталкивался. 

Создал некое тестовое приложение (консольное) - для испытаний производительности работы 1 или нескольких потоков. 

Функция в потоке копирует файл из папки А и считывает его в byte[]. 

В случае с несколькими потоками - общий массив файлов разбивается на равные части и каждая часть (т.е. каждый файл в части) проходит ту же операцию, что и в случае с 1 потоком. 

Так вот - выгоды в производительности совершенно не ощущается. Видимо проблема в том, что операцию ведутся в файловой системой. Может кто в курсе - как ускорить потоковую обработку файлов?
PM ICQ MSN   Вверх
wester
Дата 22.7.2009, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: 4
Всего: 13



глупый вопрос , smile
а процессор позволяет такие операции ?
PM MAIL   Вверх
Wanderer2019
Дата 22.7.2009, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 7
Всего: 17



Цитата(wester @  22.7.2009,  16:23 Найти цитируемый пост)
глупый вопрос , smile
а процессор позволяет такие операции ? 


ну насколько я понимаю тут скорей вопрос не в процессоре (ведь есть же понятие многопоточности), а в жестком диске - скорей всего он может читать только 1 файл в единицу времени. 
PM ICQ MSN   Вверх
wester
Дата 22.7.2009, 19:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: 4
Всего: 13



нет, думаю больше в процессоре , так как если C2D или более , то значит он может обрабатывать потоки параллельно 
а если одноядерный и один,то ему надо будет постоянно переключаться между двумя потоками , как вывод выиграша в производительности нет 

на скорость ФС я бы смотрел в последнюю очередь 

хорошая статья http://www.rsdn.ru/?article/dotnet/CSThreading1.xml

Это сообщение отредактировал(а) wester - 22.7.2009, 19:05
PM MAIL   Вверх
Wanderer2019
Дата 22.7.2009, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 7
Всего: 17



wester, 
пробовали запускать как на 1, так и на 2 ядерных процах. Толку никакого. Что в 1 потоке занимает определенное время N, что в 30 - на обработку того же объема данных уходит это же самое время N.
Видимо никак не ускорить чтение. 
PM ICQ MSN   Вверх
mihryak
Дата 22.7.2009, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



Цитата(wester @  22.7.2009,  20:03 Найти цитируемый пост)
на скорость ФС я бы смотрел в последнюю очередь 

а я бы - всё же в первую
насколько я понимаю, доступ к винчестеру всё же должен быть последовательным, физически даже - головка только в одном месте может находиться
понятно, что есть упреждающее чтение (т.е. никогда не прочитается всего лишь один байт), само чтение происходит асинхронно, но быстрее времени суммарного времени чтения всех файлов всё равно не прыгнуть, при этом стоит заметить, что "рваный" доступ к ФС отнюдь в свою очередь не способствует росту производительности, т.к. сбивает с толку эти самые упреждающие выборки
другими словами, мне кажется, что потенциальный рост общей производительности при использовании многопоточности будет только там, где основная работа происходит в CPU, в остальных случаях МП - лишь способ не расстраивать пользователя неотвечающим приложением
всё это мои домыслы, надо бы почитать Рихтера, но, на мой взгляд, довольно правдоподобно
PM MAIL ICQ   Вверх
wester
Дата 22.7.2009, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: 4
Всего: 13



Цитата

рост общей производительности при использовании многопоточности будет только там, где основная работа происходит в CPU

именно

хотя сказанное зависит от самого накопителя , ведь в RAID массивах головок больше 




Это сообщение отредактировал(а) wester - 22.7.2009, 21:18
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0450 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.