Давайте возьмем такой пример сценария:
Существует сложная функция действительно , которая включает математические квадратные корни и кубические корни (которые обрабатываются медленнее) для вычисления выходных данных.В качестве примера, давайте предположим, что функция принимает два параметра a и b , а диапазон ввода для значений a и b четко определен .Предположим, что входные значения a и b могут находиться в диапазоне от 0 до 100.
Таким образом, по существу fn (a, b) может бытьлибо рассчитывается в режиме реального времени, либо его результаты могут быть предварительно заполнены в базе данных и извлечены по мере необходимости.
Метод 1: Вычислить в реальном времени
function fn(a,b){
result = compute_using_cuberoots(a,b)
return result
}
Метод 2: Получить результат функции из базы данных
У нас есть база данных, предварительно заполненная входными значениями, сопоставленными с соответствующим результатом:
a | b | result
0 | 0 | 12.4
1 | 0 | 14.8
2 | 0 | 18.6
. | . | .
. | . | .
100 | 100 | 1230.1
И мыcan
function fn(a,b){
result = fetch_from_db(a,b)
return result
}
Мой вопрос:
Какой метод вы бы поддержали и почему?Как вы думаете, почему один метод более эффективен, чем другой?
Я полагаю, что это сценарий, с которым большинство из нас столкнется в какой-то момент в течение нашей жизни программирования и, следовательно, с этим вопросом.
Спасибо.
Фон вопроса (может быть не актуально)
Пример: В таких сценариях, как обработка изображений,чаще можно встретить такие ситуации, когда диапазон значений для входных данных (R, G, B) известен (0-255), а математические вычисления для квадратных и кубических корней вводят слишком много времени длязапросы к серверу должны быть выполнены.
Давайте возьмем для примера, вы создаете приложение, такое как Instagram. Время, затрачиваемое на обработку изображения, отправленного на сервер пользователем, и время, необходимое для возврата обработанного изображения.должно быть минимальным для оптимального пользовательского опыта.В таких ситуациях важно минимизировать время, затрачиваемое на обработку изображения.Хуже того, проблемы масштабируемости возникают, когда число таких запросов на обработку увеличивается.
Следовательно, необходимо выбрать один из методов, описанных выше, который также будет наиболее оптимальным в таких ситуациях.
Подробнее о моей ситуации ( при необходимости ):
Framework: Ruby on Rails, База данных: MongodB