Преглед изворни кода

buzhash/buzhash64: initialise all-zero memory more efficiently

Thomas Waldmann пре 1 месец
родитељ
комит
870f414690
2 измењених фајлова са 6 додато и 6 уклоњено
  1. 3 3
      src/borg/chunkers/buzhash.pyx
  2. 3 3
      src/borg/chunkers/buzhash64.pyx

+ 3 - 3
src/borg/chunkers/buzhash.pyx

@@ -7,7 +7,7 @@ import time
 from cpython.bytes cimport PyBytes_AsString
 from libc.stdint cimport uint8_t, uint32_t
 from libc.stdlib cimport malloc, free
-from libc.string cimport memcpy, memmove
+from libc.string cimport memcpy, memmove, memset
 
 from ..constants import CH_DATA, CH_ALLOC, CH_HOLE, zeros
 from .reader import FileReader, Chunk
@@ -199,8 +199,8 @@ cdef class Chunker:
                 # Copy data from chunk to our buffer
                 memcpy(self.data + self.position + self.remaining, <const unsigned char*>PyBytes_AsString(chunk.data), n)
             else:
-                # For holes, fill with zeros
-                memcpy(self.data + self.position + self.remaining, <const unsigned char*>PyBytes_AsString(zeros[:n]), n)
+                # For holes, fill with zeros using memset
+                memset(self.data + self.position + self.remaining, 0, n)
 
             self.remaining += n
             self.bytes_read += n

+ 3 - 3
src/borg/chunkers/buzhash64.pyx

@@ -8,7 +8,7 @@ import time
 from cpython.bytes cimport PyBytes_AsString
 from libc.stdint cimport uint8_t, uint64_t
 from libc.stdlib cimport malloc, free
-from libc.string cimport memcpy, memmove
+from libc.string cimport memcpy, memmove, memset
 
 from ..crypto.low_level import CSPRNG
 
@@ -176,8 +176,8 @@ cdef class ChunkerBuzHash64:
                 # Copy data from chunk to our buffer
                 memcpy(self.data + self.position + self.remaining, <const unsigned char*>PyBytes_AsString(chunk.data), n)
             else:
-                # For holes, fill with zeros
-                memcpy(self.data + self.position + self.remaining, <const unsigned char*>PyBytes_AsString(zeros[:n]), n)
+                # For holes, fill with zeros using memset
+                memset(self.data + self.position + self.remaining, 0, n)
 
             self.remaining += n
             self.bytes_read += n