Мы разрабатываем один аналитический инструмент моделлинга акций в .Net.
Основная задача инструмента - запустить модель в течение 5 лет и составить прогнозы относительно будущего поступления, отпуска и складирования для различных продуктов.
Основной рабочий процесс кода: 1. Извлечение данных из базы данных.2. Для каждой даты Обработайте данные (запустите производство и модель запаса). 3. После того, как пройдены все даты, обновите все данные вместе в базе данных.
Итак, в основном, это только два вызова базы данных, и первоначально мы принимаем вседанные в наборах данных, а затем мы обрабатываем их в Ram и не выполняем вызовы базы данных.
Проблема, с которой мы столкнулись, заключалась в том, что на запуск модели в течение 1 года ушло почти час.Наш тест - запустить модель в течение 5 лет за 5 минут.
Мы работаем над этой проблемой уже почти месяц.Прямо сейчас мы смогли достичь работающей модели за 1 год за 10 минут.Ниже приведены вещи, которые мы узнали.- При извлечении данных из набора данных, если таблицы содержат данные всех пяти лет, было сложно работать с ними, поэтому мы разделили наборы данных по месячным циклам, и теперь мы запускаем модель по месяцам за раз.Это дало нам максимальное улучшение в скорости.- Попытка уменьшить петли внутри модели, которая работает ежедневно.Это не дало нам большого улучшения.
Вы можете скачать один файл rar по следующей ссылке.http://dl.dropbox.com/u/4546390/iPlanner.rar
Содержит три файла.
iPlanner Tables.xls: который дает представление о дизайне базы данных.iPlanner Logic.xls: рассказывает о таблице и логике модели производства, модели отгрузки и обработки фактической стоимости.Я думаю, что наиболее важным является рассмотрение производственной модели, это даст вам краткое представление о том, что модель делает ежедневно.
Common.cs: в которой есть функция Call Production Model, с которой все начинается.Вы также можете это проверить.
Модель ранее была написана в Excel, в Excel она использовалась в течение 2 минут в течение 5 лет.Причина перехода на .Net состоит в том, чтобы иметь больше возможностей для обмена и иметь программное обеспечение, похожее на внешний вид.
Я пытаюсь выяснить, как это можно улучшить.
Дайте мне знать, если потребуется дополнительная информация по этому вопросу.
Заранее спасибо