Чтобы решить проблему с памятью 3G (Ubuntu) (иногда нам требуется больше памяти, чем 3G), я скомпилировал свое приложение в 64-битной среде, чтобы использовать больше памяти.
Но мое 64-битное приложениенамного медленнее, чем 32-битная версия.
32-битная версия построена на 32-битной машине;64-битная версия построена на 64-битной машине;в нашем тесте загрузки обе 32-битные и 64-битные версии работают на 64-битной машине.
Я гуглил, и некоторые люди говорили, что ненужный тип long
может сделать 64-битную медленнее, чем 32-битную, потому что:
man g++:
-m64
Generate code for a 32-bit or 64-bit environment. The 32-bit environment
sets int, long and pointer to 32 bits and generates code that runs on any
i386 system. The 64-bit environment sets int to 32 bits and long and
pointer to 64 bits and generates code for AMD's x86-64 architecture. For
darwin only the -m64 option turns off the -fno-pic and -mdynamic-no-pic
options.
Итак, я изменил все свои long
с на int
с, но результат все тот же.
Пожалуйста, сообщите.
Питер
Редактировать:
- Что касается памяти, то 32 и 64 версии используют одинаковую память, около 1,5 ~ 2,5 ГБ, и на моей машине имеется 9 ГБ физической памяти;
- Я профилирован с использованием OProfile и для большинства функций64-битная версия собирает больше профилирующих выборок, чем 32-битная;
- Я не могу думать о каких-либо других узких местах, пожалуйста, сообщите.
- Мое приложение - сервер, и нагрузочный тест был выполнен под100 клиентских подключений.Сервер выполняет много вычислений, обрабатывая аудиоданные от клиентов.