Мне было поручено обновить некоторые устаревшие коды и действительно нужно уменьшить время выполнения на части. Этот список загружается довольно часто. Мне удалось сократить время от примерно минуты до пятнадцати секунд, но на самом деле нужно идти дальше. Следующие строки кода работают достаточно хорошо, но я пытаюсь сжать все, что в моих силах.Загрузить список более эффективно
List<MyObject> _moList = new List<MyObject>(DB.GetAll(queryString, parameters, MyObject.Extract));
_moList.AsParallel().ForAll(s => s.RelativeCost = GetRelativeCost(s));
У меня есть несколько вопросов. Во-первых, можно ли объединить эти две строки в одну строку, и если да, то как? Во-вторых, будет ли это улучшать производительность вообще?
Некоторые элементы не в том, что MyObject имеет около сорока свойств (не уверен, что это уместно или нет), и GetRelativeCost несколько дороже, когда дело доходит до циклов времени/процессора (отсюда параллельный запуск).
Любая помощь была бы принята с благодарностью!
P.S. Я также работаю с другими углами, в частности, пытаясь уменьшить «стоимость» GetRelativeCost, но мне нужно получить каждый цикл, который я могу извлечь из этого, чтобы сделать его приемлемым для пользователя.
похоже, что вы идете в базу данных ... вы профилировали запрос, чтобы узнать, можно ли его ускорить? – kzhen
Вы хотите улучшить среднюю производительность (в течение срока службы приложения) или наихудший показатель производительности при каждом прогоне?Если первый, вы можете попробовать кэшировать результат каждый раз и тестировать, чтобы увидеть, были ли исходные данные изменены до перезагрузки. –
Почему вы используете 'AsParallel', а не' Parallel.ForEach'? –