Pull to refresh

Comments 10

Замечательно, теперь в Excel можно будет реализовать не только 3D-чайник и 3D-движок для Doom'a.
Даёшь CAD'ы и VR'ы не выходя из Excel c достойным fps! На очереди оптимизация годового баланса в 1с#.

«На очереди оптимизация годового баланса в 1с#»
Не дай бог…
Была у меня похожая задача, но мы в итоге решили отойти от формул excel и использовать c# + интерфейс. В итоге, пользователи стали делать меньше ошибок.

Мы тоже сперва рассматривали такую идею, но сложность их структуры данных и формул весьма поражает. У нас были очень сжатые сроки на разработку и мы решили попробовать такой подход. Все же лучше чем в Excel сделать интерфейс это задачка даже не на папу недель)

Как-то слишком круто, как по мне, вышло для фирмочки, которая делает балконы) Не думали просто установить 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? Или решили отказаться?

На сколько я помню и понимаю, OpenXML — это формат записи данных документов, который используется последним офисом. В чистом виде SDK не использовали, т.к. предоставляет слишком низкоуровневый API для работы с документами, мы бы потратили кучу времени только на понимание API, чтобы только прочитать формулы.
Первоочередной задачей было найти готовые библиотеки уже со встроенным функционалом для расчета формул Excel. OpenXML — такое не предоставляет. Возможно, можно было бы переключиться на использование SDK для чтения формул. Это повлияет только на время инициализации вычислений — это неплохо, но не критично, т.к. инициализация в данном случае будет происходить редко, только при смене исходного файла.
Sign up to leave a comment.