butils
v0.0.6 buffer ctype
butils
###Bufferwise binary operations
- getBit(buffer, offset) returns true or false
- setBit(buffer, offset, boolean) returns the changed byte
- XOR(buffer, buffer2) returns the modifed first buffer
- OR(buffer, buffer2) returns the modifed first buffer
- AND(buffer, buffer2) return the modifed first buffer
- NOT(buffer) return the modifed buffer
- EQUAL(buffer, buffer2) returns a boolean
- leftShift(buffer, offset) returns a NEW buffer
- rightShift(buffer, offset) returns a NEW buffer
- signedRightShift(buffer, offset) returns a NEW buffer
These are some helper functions that appear to be significantly faster than core Buffer manipulation functions.
Functions included
- readInt(buffer, offset) -- (buffer.readInt8(offset))
- writeInt(buffer, int, offset) -- (buffer.writeInt8(int, offset))
- readInt32(buffer, offset) -- (buffer.readUInt32BE(offset))
- writeInt32(buffer, int, offset) -- (buffer.writeUInt32BE(int, offset))
- readString(buffer, start, end) -- (buffer.toString(start, end))
- writeString(buffer, str, offset) -- (Buffer.write(str, 'utf8', offset))
- readVarint(buffer, offset) -- (no equivalent)
- writeVarint(buffer, int, offset) -- (no equivalent)
Note that the Int32 functions are currently unsigned and big endian only, though I'd happily accept pull requests to add more functionality.
Benchmark
100,000,000 iterations of each function. (see bench.js)
- Buffer#writeInt8: 1225ms
- butils#writeInt: 166ms
- Buffer#readInt8: 761ms
- butils#readInt: 164ms
- Buffer#writeUInt32BE: 1544ms
- butils#writeInt32: 257ms
- Buffer#readUInt32BE: 1525ms
- butils#readInt32: 323ms
- Buffer#write: 45101ms
- butils#writeString: 2509ms
- Buffer#toString: 17505ms
- butils#readString: 7340ms
- butils#writeVarint: 1264ms
- butils#readVarint: 4777ms
npm i [email protected]
Source Code
github.com/nlf/node-butilsMetadata
- MIT
- Whatever
- Nathan LaFreniere
- released 1/2/2014