<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">For the archive, I tried to use
      bitarray instead of bitstring and for same file parsing went from
      180ms to 60ms. Code was finally shorter and more simple but less
      easy to jump into (documentation).<br>
      <br>
      <br>
      Performance is still far from using fromstring or fromfile which
      gives like 5ms for similar size of file but byte aligned.<br>
      <br>
      Aymeric<br>
      <br>
      <br>
      my code is below:<br>
      <br>
      def readBitarray(self, bita, channelList=None):<br>
              """ reads stream of record bytes using bitarray module
      needed for not byte aligned data<br>
              <br>
              Parameters<br>
              ------------<br>
              bitarray : stream<br>
                  stream of bytes<br>
              channelList : List of str, optional<br>
              <br>
              Returns<br>
              --------<br>
              rec : numpy recarray<br>
                  contains a matrix of raw data in a recarray
      (attributes corresponding to channel name)<br>
              """<br>
              from bitarray import bitarray<br>
              B = bitarray(endian="little")  # little endian by default<br>
              B.frombytes(bytes(bita))<br>
              # initialise data structure<br>
              if channelList is None:<br>
                  channelList = self.channelNames<br>
              format = []<br>
              for channel in self:<br>
                  if channel.name in channelList:<br>
                      format.append(channel.RecordFormat)<br>
              buf = recarray(self.numberOfRecords, format)<br>
              # read data<br>
              for chan in range(len(self)):<br>
                  if self[chan].name in channelList:<br>
                      record_bit_size = self.CGrecordLength * 8<br>
                      temp = [B[self[chan].posBitBeg + record_bit_size *
      i:\<br>
                              self[chan].posBitEnd + record_bit_size *
      i]\<br>
                               for i in range(self.numberOfRecords)]<br>
                      nbytes = len(temp[0].tobytes())<br>
                      if not nbytes == self[chan].nBytes and \<br>
                              self[chan].signalDataType not in (6, 7, 8,
      9, 10, 11, 12): # not Ctype byte length<br>
                          byte = 8 * (self[chan].nBytes - nbytes) *
      bitarray([False])<br>
                          for i in range(self.numberOfRecords):  #
      extend data of bytes to match numpy requirement<br>
                              temp[i].append(byte)<br>
                      temp =
      [self[chan].CFormat.unpack(temp[i].tobytes())[0] \<br>
                              for i in range(self.numberOfRecords)]<br>
                      buf[self[chan].name] = asarray(temp)<br>
              return buf<br>
      <br>
      Le 05/05/15 15:39, Benjamin Root a écrit :<br>
    </div>
    <blockquote
cite="mid:CANNq6F=18wd7kFTKxkPxCOtvN2dQsvmosq9ORgGnXay=gFq6Jw@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>I have been very happy with the bitarray package. I don't
          know if it is faster than bitstring, but it is worth a
          mention. Just watch out for any hashing operations on its
          objects, it doesn't seem to do them right (set(), dict(),
          etc...), but comparison operations work just fine.<br>
          <br>
        </div>
        Ben Root<br>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
NumPy-Discussion mailing list
<a class="moz-txt-link-abbreviated" href="mailto:NumPy-Discussion@scipy.org">NumPy-Discussion@scipy.org</a>
<a class="moz-txt-link-freetext" href="http://mail.scipy.org/mailman/listinfo/numpy-discussion">http://mail.scipy.org/mailman/listinfo/numpy-discussion</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>