Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Setplus
12 / 12 / 13
Регистрация: 05.07.2011
Сообщений: 231
1

Быстрые вычисления

14.08.2016, 12:43. Просмотров 308. Ответов 9
Метки нет (Все метки)

Доброго времени суток. Хотелось бы узнать следующее:
имеется такой цикл
C#
1
2
3
4
foreach (string line in File.ReadAllLines())
{
  //вычисления
}
В файле строк - порядка 1млрд. Хотелось бы узнать для начала, как ускорить процесс вычислений?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2016, 12:43
Ответы с готовыми решениями:

Подскажите самые быстрые коллекции
привет Работаю с биржевыми данными данных много - 30 000 000 экземпляров...

Быстрые алгоритмы сборки байтового массива в строку и наоборот
Всем привет! Народ не поделитесь быстрым алгоритмом сборки байтового массива из...

Быстрые переходы
Один html фаил. надо сделать быстрое меню, чтоб по нажатию спускалось вниз туда...

Быстрые ссылки
Добрый день! У меня вот такой вопрос, поставили мне задачу внести в на сайт...

быстрые скрины
Добрый день! Как то давно сидел на винде и там была замечательная прога для...

9
EveKS
415 / 373 / 153
Регистрация: 19.04.2016
Сообщений: 1,482
Завершенные тесты: 7
14.08.2016, 12:50 2
Setplus, читать и записывать блоками
C#
1
2
//кусочек
reader.ReadBlock(buffer, currentPart, partSize);
0
Setplus
12 / 12 / 13
Регистрация: 05.07.2011
Сообщений: 231
14.08.2016, 12:52  [ТС] 3
Не подходит: строка передаётся потом в метод, в котором происходят вычисления.
0
kolorotur
Эксперт .NET
10486 / 8674 / 2157
Регистрация: 17.09.2011
Сообщений: 14,892
Завершенные тесты: 1
14.08.2016, 12:54 4
Цитата Сообщение от Setplus Посмотреть сообщение
Хотелось бы узнать для начала, как ускорить процесс вычислений?
Процесс вычислений вы заменили скромным комментарием "вычисления", потому как их ускорить — сложно сказать.
Наверное, так:
C#
1
2
3
4
foreach (string line in File.ReadAllLines())
{
  // ускоренные вычисления
}
Цитата Сообщение от Setplus Посмотреть сообщение
В файле строк - порядка 1млрд.
Тогда в первую очередь нужно думать не об ускорении вычислений, а о том, как бы весь этот миллиард строк в памяти не держать.
Замените ReadAllLines на ReadLines, тогда строки будут тянуться из файла по одной и уничтожаться сборщиком по мере заполнения памяти.
1
Setplus
12 / 12 / 13
Регистрация: 05.07.2011
Сообщений: 231
14.08.2016, 12:58  [ТС] 5
Так, допустим, что я это сделал. Вместо
C#
1
//вычисления
там, к примеру, метод, в котором два вложенных цикла. В зависимости от результата метод вернёт либо
C#
1
True
, либо
C#
1
False
.
0
EveKS
415 / 373 / 153
Регистрация: 19.04.2016
Сообщений: 1,482
Завершенные тесты: 7
14.08.2016, 13:01 6
Тут еще вопросов куча, которые я не стал задавать... включающие // ускоренные вычисления
И было понятно что метод мой не айс, т.к. он достает куски, но в идеале нужно понимать что-за строки и какого рода идут вычисления, может в итоге строки сравниваются между собой... И не нужно сюда выкладывать свой секретный проект, можно написать похожей короткий пример с такой же задачей.
0
kolorotur
Эксперт .NET
10486 / 8674 / 2157
Регистрация: 17.09.2011
Сообщений: 14,892
Завершенные тесты: 1
14.08.2016, 13:02 7
Цитата Сообщение от Setplus Посмотреть сообщение
там, к примеру, метод, в котором два вложенных цикла.
Что этот метод делает?
Возможно, вложенные циклы там вообще не нужны.

Если вы пишете не алгоритм обнаружения целей для С500, то выкладывайте весь код сюда — будет намного легче найти места для оптимизации, чем ходить вокруг да около и вытягивать из вас по одной строчке кода.
0
EveKS
415 / 373 / 153
Регистрация: 19.04.2016
Сообщений: 1,482
Завершенные тесты: 7
14.08.2016, 13:03 8
Setplus,
Цитата Сообщение от Setplus Посмотреть сообщение
В зависимости от результата
результата сравнения строки дающей остаток при делении на 100500 равный 521 со строкой где есть число 444 или я не угадал?)
0
OwenGlendower
Супер-модератор
Эксперт .NET
9302 / 8166 / 3485
Регистрация: 17.03.2014
Сообщений: 16,189
Записей в блоге: 1
14.08.2016, 13:18 9
Цитата Сообщение от Setplus Посмотреть сообщение
В файле строк - порядка 1млрд. Хотелось бы узнать для начала, как ускорить процесс вычислений?
Заменить File.ReadAllLines на File.ReadLines.
0
Wolfdp
807 / 760 / 194
Регистрация: 15.06.2012
Сообщений: 2,968
Записей в блоге: 1
Завершенные тесты: 1
14.08.2016, 23:38 10

Не по теме:

Цитата Сообщение от kolorotur Посмотреть сообщение
Если вы пишете не алгоритм обнаружения целей для С500, то выкладывайте весь код сюда
а если все таки пишете, то в лучше в личку. :rofl:



по теме: если итерация обработки входящей строки изолирована и независима, возможно есть смысл распаралелить.
0
14.08.2016, 23:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2016, 23:38

Быстрые подсказки
Ребят очень нужна ваша помощь. Срочно нужно дописать CSS. Форс мажор, времени...

Быстрые и медленные порты.
Даташит говорит что у STM8 ноги бывают быстрые (до 10MHz) и медленные (до...

Быстрые арифметические операции
Здравствуйте. Я знаю, что в си++ есть понятие быстрых арифметических операций...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru