python array.fromfile против struct.unpack - PullRequest
1 голос
/ 07 июля 2011

В настоящее время я использую struct.unpack для чтения двоичного файла. Часто я читал различные типы значений, поэтому я мог бы прочитать несколько длинных, затем прочитать 8 с плавающей запятой, затем прочитать 2 коротких, пару байтов и т. Д.

Но, как правило, они хорошо сгруппированы, так что вы можете получить кучу длинных, потом кучу поплавков, а затем кучу шорт и т. Д.

Я прочитал пару постов о том, как массивы работают намного быстрее, чем распаковка, но я не уверен, будет ли существенная разница, если я буду постоянно вызывать fromfile с различными объектами массива (по одному для каждого типа, с которым я могу столкнуться) .

Кто-нибудь делал какие-либо тесты производительности, чтобы сравнить их в этой ситуации?

1 Ответ

1 голос
/ 18 августа 2011

Звучит так, будто вы находитесь в лучшем положении для проведения временных испытаний.У вас уже есть версия struct.unpack, поэтому создайте версию array.fromfile, а затем используйте модуль timeit для выполнения некоторых тестов.Примерно так:

python -m timeit -s "import struct_version" "struct_version.main()"

python -m timeit -s "import array_version" "array_version.main()"

, где struct_version и array_version - ваши две разные версии, а main - функция, выполняющая всю обработку.

...