Python doctest: результат с несколькими строками

Я не могу заставить doctest работать с результатом, который содержит несколько строк и может содержать пустые строки в начале. Вероятно, это вызвано проблемами с отступами и синтаксическим анализом. Я нашел несколько решений:

  • Запишите желаемый результат в файл и doctest сравните результат и содержимое файла.
  • Сравните хэш результата с известным хешем . m не разрешено вдаваться в подробности о нашем продукте, но в основном это БД, ориентированная на столбцы, оптимизированная для хранения журналов. Тест включает в себя загрузку нескольких гигабайт необработанных журналов и определение времени, необходимого для их анализа и сохранения в виде структурированных данных в базе данных. Обработка очень тяжелая как для ЦП, так и для ввода-вывода, хотя трудно сказать, в каком соотношении.

    Несколько замечаний по настройке:

    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:

    • Одна и та же ОС (64-битная RHEL)
    • То же оборудование (64-битный ЦП)
    • Максимальный размер кучи зафиксирован на уровне 512 МБ (поэтому увеличение скорости не связано с 64-битной JVM, использующей большую кучу)

    Для простоты я отключил все параметры многопоточности в нашем product, поэтому почти вся обработка происходит в однопоточном режиме. (Когда я включил многопоточность, конечно, система стала быстрее, но соотношение между 32-битной и 64-битной производительностью осталось примерно таким же.)

    Итак, мой вопрос ... Почему я могу увидеть увеличение скорости на 20-30% при использовании 64-битной JVM? Кто-нибудь видел подобные результаты раньше?

    Моя интуиция до сих пор была следующей:

    • 64-битные указатели больше, поэтому кеши L1 и L2 легче переполняются, поэтому производительность на 64-битной JVM хуже.

    • JVM использует некоторые причудливые приемы сжатия указателей, чтобы максимально облегчить указанную выше проблему. Подробности на сайте Sun здесь .

    • JVM разрешено использовать больше регистров при работе в 64-битном режиме, что немного ускоряет работу.

    Учитывая вышеупомянутые три пункта, я ожидал бы 64-битной производительности быть немного медленнее или примерно равным 32-битной JVM.

    Есть идеи? Заранее спасибо.

    Изменить: Уточнены некоторые моменты относительно среды тестирования.

15
задан Chris B 9 February 2011 в 00:37
поделиться