check if bytes is all nulls
bartc
bc at freeuk.com
Sun Apr 1 14:43:45 EDT 2018
On 01/04/2018 18:55, Arkadiusz Bulski wrote:
> What would be the most performance efficient way of checking if a bytes is
> all zeros? Currently its `key == b'\x00' * len(key)` however, because its
> Python 2/3 compatible:
That doesn't too efficient, if you first have to construct a compatible
object of all zeros.
> sum(key) == 0 is invalid
> key == bytes(len(key)) is invalid
>
> I already considered precomputing the rhs value.
> Length of key is unknown,
(So how can you precompute the table?)
could be few bytes, could be megabytes.
>
How likely would be a block of all zeros? Or one that is all zeros but
with a sparse smattering of non-zeros?
If not very, then just check the bytes one by one. If non-zero, you will
know as soon as you see the first non-zero byte, possibly the first one.
def allzeros(a):
for x in a:
if x: return 0
return 1
--
bartc
More information about the Python-list
mailing list