Я не могу заставить doctest
работать с результатом, который содержит несколько строк и может содержать пустые строки в начале. Вероятно, это вызвано проблемами с отступами и синтаксическим анализом. Я нашел несколько решений:
doctest
сравните результат и содержимое файла. Несколько замечаний по настройке:
Processor: Xeon E5640 2.66GHz (4 core) x 2
RAM: 24GB
Disk: 7200rpm, no RAID
OS: RHEL 6 64bit
Filesystem: Ext4
JVMs: 1.6.0_21 (32bit), 1.6.0_23 (64bit)
Max heap size (-Xmx): 512 MB (for both 32bit and 64bit JVMs)
Константы для обеих JVM:
Для простоты я отключил все параметры многопоточности в нашем product, поэтому почти вся обработка происходит в однопоточном режиме. (Когда я включил многопоточность, конечно, система стала быстрее, но соотношение между 32-битной и 64-битной производительностью осталось примерно таким же.)
Итак, мой вопрос ... Почему я могу увидеть увеличение скорости на 20-30% при использовании 64-битной JVM? Кто-нибудь видел подобные результаты раньше?
Моя интуиция до сих пор была следующей:
64-битные указатели больше, поэтому кеши L1 и L2 легче переполняются, поэтому производительность на 64-битной JVM хуже.
JVM использует некоторые причудливые приемы сжатия указателей, чтобы максимально облегчить указанную выше проблему. Подробности на сайте Sun здесь .
JVM разрешено использовать больше регистров при работе в 64-битном режиме, что немного ускоряет работу.
Учитывая вышеупомянутые три пункта, я ожидал бы 64-битной производительности быть немного медленнее или примерно равным 32-битной JVM.
Есть идеи? Заранее спасибо.
Изменить: Уточнены некоторые моменты относительно среды тестирования.