Помимо игр и (в основном, статистических) исследований, с которыми у меня нет опыта, кажется, что доступ к базам данных и операции - одна из немногих областей, где неправильные решения приводят к очень большому падению производительности. Я твердо верю в более мощные абстракции базы данных в коде, и я верю в linq, который связывает операции базы данных с языком программирования, предоставляя вам все инструменты языка (проверка типов, проверка синтаксиса, все, что вам нравится) ваш язык программирования), в то же время давая вам достаточно сил, чтобы делать то, что вы хотите, абсолютно потрясающе. К сожалению, это все еще не всегда работает. Это означает, что если уровень абстракции дает неверные результаты оптимизации, и вы, возможно, будете ждать секунд вместо микросекунд или минут вместо секунд для вашего результата. Так как это очень заметные времена, Вы должны оптимизировать их, иначе ваше приложение не «работает»: производительность становится самой большой проблемой вашего приложения. Это означает, что вам нужно приблизиться к металлу и оптимизировать руки.
Когда мы дойдем до того, что манипулирование большими наборами данных занимает, например, 3 мс при ручном выполнении, и 100 мс, когда вы позволяете уровню абстракции делать это за вас, непременно, пусть уровень абстракции обрабатывает это за вас, потому что вы можете быть в 30 раз медленнее, но вы все еще (вероятно, для большинства приложений) достаточно быстро. Однако реальность ситуации такова, что когда вы смотрите на оптимизированные решения, где у вас есть время отклика 200 мс, и когда уровень абстракции обрабатывает его для вас, алгоритм «просто» достигает 10-кратного успеха, у вас есть Задержка в 2 секунды, а потом вас все волнует, от не слишком быстрого до мучительно медленного. Видя, что решения для реляционных баз данных плохо масштабируютсяЯ не думаю, что это будет решено через два или три года. Это означает, что вам все равно придется довольно долго опускаться до чистого металла, когда дело доходит до более крупных баз данных, иначе ваше приложение будет слишком медленным, оно не сможет противостоять конкурентам.