Comments 10
Как-то слишком круто, как по мне, вышло для фирмочки, которая делает балконы) Не думали просто установить excel на сервер, и через dde забрасывать значения?
И, кстати, в свое время одни ребята даже продуктовую компанию основали https://jobs.dou.ua/companies/betengines/ на основе своего движка для расчёта букмекерских алгоритмов заданных в Excel файлах.
Как-то слишком круто, как по мне, вышло для фирмочки, которая делает балконы)
Ну там весьма серьезная компания, которая занимается этим в больших промышленных масштабах, т.е. это не разовый заказ балкона частным лицом, так что я бы не стал ее называть фирмочкой.
Не думали просто установить excel на сервер, и через dde забрасывать значения?
Этим как раз таки и занимается Excel.Interop библиотека, она запускает headless режим Excel и туда загоняются данные и потом обратно вытягиваются. Даже на простых кейсах производительность убитая.
И, кстати, в свое время одни ребята даже продуктовую компанию основали jobs.dou.ua/companies/betengines на основе своего движка для расчёта букмекерских алгоритмов заданных в Excel файлах.
Ого, не видел такое, круто! Это может говорить о том, что мы пошли правильным путем :)
Ну не знаю, как для балконщиков может 50мс за проход быть плохим результатом? Тем более, почти уверен, что этот проход займёт лишь одно ядро, и можно параллелить. Сложно представить кейс, как можно запросами на просчет балконов хотя-бы 100 RPS создать в пике. Плюс, если это что-то вызова на каждое открытие страницы на сайте, то кеширование должно понизить нагрузку на порядки
Плюс второй кейс, когда надо делать глобальные расчеты на большой выборке входных данных, для оптимизации параметров и характеристик конфигурации, чтобы сделать систему рекомендаций.
как для балконщиков может 50мс за проход быть плохим результатом?
Тут есть нюанс, мои результаты для простой формулы описаны, где речь идет о 10 входных и 5 вычисляемых ячейках. И даже на этом простом примере при незначительном усложнении, производительность сильно падает. Завершения прогона тестов мне приходилось ждать около часа, хотя рассматривал всего лишь 10000 входных значений.
В реальности это огромная таблица на 6-7 вкладок с кучей зависимых вычислений, и более 100 входных параметров, что дает более 100000 различных вариаций входных данных. Я не думаю, что пользователь готов ждать больше часа, чтобы увидеть предложения по улучшения качества продукта :)
К сожалению, на момент проведения исследования оригинального входного файла у нас не было, были только словестные описания, но в целом этого достаточно чтобы понять в какую сторону двигаться.
Скажите, а вы рассматривали OpenXML? Или решили отказаться?
Первоочередной задачей было найти готовые библиотеки уже со встроенным функционалом для расчета формул Excel. OpenXML — такое не предоставляет. Возможно, можно было бы переключиться на использование SDK для чтения формул. Это повлияет только на время инициализации вычислений — это неплохо, но не критично, т.к. инициализация в данном случае будет происходить редко, только при смене исходного файла.
Быстрый расчет формул из Excel на C#