- Регистрация
- 19.11.2013
- Сообщения
- 96
- Благодарностей
- 37
- Баллы
- 18
Суть проблемы: Шаблон выполняется в 5 потоков намного медленнее, чем в 1 поток. В 1 поток задание выполняется примерно 6 минут. А вот в 5 потоков примерно 15-17 минут. В 1 поток процессор загружен на 20 процентов и используется около 1 гб оперативной памяти. В 5 потоков нагрузка на процессор около 60-70 процентов, оперативной памяти задействовано 4-6 гигабайт из 8 гб.
Шаблон очень простой - получает слово и проверяет, есть ли это слово в списке с фразами. Если есть, тогда получает фразу с этим словом из списка, отделяет вторую половину фразы и кладет в другую переменную. И так по кругу, пока не закончатся все слова. Поиск и взятие фраз идет через C#.
Шаблон не использует get-запросы, браузер отключен, вся работа идет исключительно со списками и .txt-файлами
Что пробовал делать: Проводил тесты много раз, всегда пропорции по времени одинаковые. Пробовал работать со списком фраз, который привязывал к отдельному файлу. Также пробовал для каждого потока делать свой список с фразами, чтобы никак не пересекались. Также пробовал список с фразами вообще не привязывать к реальному файлу, а просто добавлять фразы из переменной в оперативный список.
Ни один из вариантов не помог сократить время выполнения шаблона. Максимальная нагрузка на оперативную память и процессор не больше 50-70%.
Хочу уменьшить время при работе в 5 потоков до тех же 6 минут, ресурсы позволяют, максимальная нагрузка не достигается, потоки между собой не пересекаются. Как это сделать, какие настройки нужно поменять. Посоветуйте, какие варианты протестировать еще.
Приложения:
1-настройки.jpg - показаны все настройки, которые устанавливал (может быть что-то поменять?)
3-выполнение в 1 поток.jpg - время, за которое выполнился 1 поток (6 минут)
4-нагрузка в 5 потоков.jpg - нагрузка при запуске в 5 потоков
5-выполнение в 5 потоков.jpg - время за которое выполнены 5 потоков (примерно 16 минут)
Шаблон очень простой - получает слово и проверяет, есть ли это слово в списке с фразами. Если есть, тогда получает фразу с этим словом из списка, отделяет вторую половину фразы и кладет в другую переменную. И так по кругу, пока не закончатся все слова. Поиск и взятие фраз идет через C#.
Шаблон не использует get-запросы, браузер отключен, вся работа идет исключительно со списками и .txt-файлами
Что пробовал делать: Проводил тесты много раз, всегда пропорции по времени одинаковые. Пробовал работать со списком фраз, который привязывал к отдельному файлу. Также пробовал для каждого потока делать свой список с фразами, чтобы никак не пересекались. Также пробовал список с фразами вообще не привязывать к реальному файлу, а просто добавлять фразы из переменной в оперативный список.
Ни один из вариантов не помог сократить время выполнения шаблона. Максимальная нагрузка на оперативную память и процессор не больше 50-70%.
Хочу уменьшить время при работе в 5 потоков до тех же 6 минут, ресурсы позволяют, максимальная нагрузка не достигается, потоки между собой не пересекаются. Как это сделать, какие настройки нужно поменять. Посоветуйте, какие варианты протестировать еще.
Приложения:
1-настройки.jpg - показаны все настройки, которые устанавливал (может быть что-то поменять?)
3-выполнение в 1 поток.jpg - время, за которое выполнился 1 поток (6 минут)
4-нагрузка в 5 потоков.jpg - нагрузка при запуске в 5 потоков
5-выполнение в 5 потоков.jpg - время за которое выполнены 5 потоков (примерно 16 минут)