Я играю с C++ в свободное время. Я совершенно новичок в управлении памятью вручную и многому научился. Я пытаюсь сделать следующее.Указатели C++, к которым обращаются другие приложения
Существует база данных с одной простой таблицей. Я создал консольную прикладную программу C++, которая запускается на сервере приложений и читает содержимое этой таблицы и сохраняет ее в ОЗУ. Затем он записывает адрес памяти в крошечный текстовый файл и переходит в режим сна. Веб-служба выполняется на сервере (на другом сервере, кроме БД, за исключением того же сервера, что и консольное приложение). Некоторые веб-сайты проходят через вызов веб-службы. Вместо того, чтобы ударять базу данных, веб-служба выполняет одну из двух задач. Если веб-сайт делает свой первый запрос, он передает нулевое значение и идентификатор записи, которую он ищет. В этом случае веб-служба считывает адрес из текстового файла и извлекает запись из ОЗУ. Он возвращает запись, а также адрес памяти. Веб-сайт использует запись и помещает адрес памяти в невидимую метку. Следующий вызов, он передает идентификатор нужной записи и адрес памяти. Веб-служба подходит к этому адресу памяти и извлекает запись. Если то, что он находит в этом адресе памяти, не может быть проанализировано в записи, оно проверяет текстовый файл для возможного нового местоположения.
Я надеюсь, что я просто делаю это неправильно. Просто теоретически, может ли эта работа работать, и будет ли она быстрее, чем веб-служба просто получит доступ к базе данных? Является ли тот факт, что консольное приложение резервирует память, не позволяя веб-службе проверять память?
Будет ли межпроцессное общение обладать тем же штрафом, что и вызов отдельного вызова СУБД? Работает ли сборка с прямыми физическими адресами? Возможно, оба приложения могут быть написаны на C++ и использовать встроенную сборку для необходимых частей в отношении адресации. – user3312353
(1) Возможно, это не само по себе, но со всем на месте это может занять больше времени. Единственный способ решить - измерить.(2) Это не тот язык, который определяет, работаете ли вы с логическими или физическими адресами (или с некоторой промежуточной формой: на обычном ПК есть три уровня адресации). Обычные приложения работают с логическими адресами. (3) Обычно оптимизация, выполняемая встроенной сборкой, выполняется для вещей, выполняемых в самых внутренних циклах, что, по-видимому, не является сценарием здесь. Я подозреваю ** преждевременную оптимизацию **, которая, по словам Кнута, просто зла. ;-) –