python array.fromfile 与 struct.unpack 的比较

1 投票
1 回答
971 浏览
提问于 2025-04-16 21:02

我现在正在用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_versionarray_version 是你两个不同的版本,而 main 是负责处理所有操作的函数。

撰写回答