python array.fromfile 与 struct.unpack 的比较
我现在正在用struct.unpack来读取一个二进制文件。通常,我会读取不同类型的值,比如先读取几个长整型(long),然后读取8个浮点型(float),再读取2个短整型(short),还有几个字节等等。
不过这些值一般都是分组好的,你可能会先遇到一堆长整型,然后是一堆浮点型,再接着是一堆短整型,依此类推。
我看到有一些帖子说数组的性能比unpack要快很多,但我不太确定如果我一直用不同的数组对象(每种类型一个)来调用fromfile,是否会有明显的差别。
有没有人做过性能测试来比较这两种方法在这种情况下的表现?
1 个回答
1
听起来你现在很适合进行时间测试。你已经有了 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
是负责处理所有操作的函数。