GSI - Employe Self Service Mobile
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
3.9 KiB

2 months ago
  1. @protobufjs/float
  2. =================
  3. [![npm](https://img.shields.io/npm/v/@protobufjs/float.svg)](https://www.npmjs.com/package/@protobufjs/float)
  4. Reads / writes floats / doubles from / to buffers in both modern and ancient browsers. Fast.
  5. API
  6. ---
  7. * **writeFloatLE(val: `number`, buf: `Uint8Array`, pos: `number`)**<br />
  8. Writes a 32 bit float to a buffer using little endian byte order.
  9. * **writeFloatBE(val: `number`, buf: `Uint8Array`, pos: `number`)**<br />
  10. Writes a 32 bit float to a buffer using big endian byte order.
  11. * **readFloatLE(buf: `Uint8Array`, pos: `number`): `number`**<br />
  12. Reads a 32 bit float from a buffer using little endian byte order.
  13. * **readFloatBE(buf: `Uint8Array`, pos: `number`): `number`**<br />
  14. Reads a 32 bit float from a buffer using big endian byte order.
  15. * **writeDoubleLE(val: `number`, buf: `Uint8Array`, pos: `number`)**<br />
  16. Writes a 64 bit double to a buffer using little endian byte order.
  17. * **writeDoubleBE(val: `number`, buf: `Uint8Array`, pos: `number`)**<br />
  18. Writes a 64 bit double to a buffer using big endian byte order.
  19. * **readDoubleLE(buf: `Uint8Array`, pos: `number`): `number`**<br />
  20. Reads a 64 bit double from a buffer using little endian byte order.
  21. * **readDoubleBE(buf: `Uint8Array`, pos: `number`): `number`**<br />
  22. Reads a 64 bit double from a buffer using big endian byte order.
  23. Performance
  24. -----------
  25. There is a simple benchmark included comparing raw read/write performance of this library (float), float's fallback for old browsers, the [ieee754](https://www.npmjs.com/package/ieee754) module and node's [buffer](https://nodejs.org/api/buffer.html). On an i7-2600k running node 6.9.1 it yields:
  26. ```
  27. benchmarking writeFloat performance ...
  28. float x 42,741,625 ops/sec ±1.75% (81 runs sampled)
  29. float (fallback) x 11,272,532 ops/sec ±1.12% (85 runs sampled)
  30. ieee754 x 8,653,337 ops/sec ±1.18% (84 runs sampled)
  31. buffer x 12,412,414 ops/sec ±1.41% (83 runs sampled)
  32. buffer (noAssert) x 13,471,149 ops/sec ±1.09% (84 runs sampled)
  33. float was fastest
  34. float (fallback) was 73.5% slower
  35. ieee754 was 79.6% slower
  36. buffer was 70.9% slower
  37. buffer (noAssert) was 68.3% slower
  38. benchmarking readFloat performance ...
  39. float x 44,382,729 ops/sec ±1.70% (84 runs sampled)
  40. float (fallback) x 20,925,938 ops/sec ±0.86% (87 runs sampled)
  41. ieee754 x 17,189,009 ops/sec ±1.01% (87 runs sampled)
  42. buffer x 10,518,437 ops/sec ±1.04% (83 runs sampled)
  43. buffer (noAssert) x 11,031,636 ops/sec ±1.15% (87 runs sampled)
  44. float was fastest
  45. float (fallback) was 52.5% slower
  46. ieee754 was 61.0% slower
  47. buffer was 76.1% slower
  48. buffer (noAssert) was 75.0% slower
  49. benchmarking writeDouble performance ...
  50. float x 38,624,906 ops/sec ±0.93% (83 runs sampled)
  51. float (fallback) x 10,457,811 ops/sec ±1.54% (85 runs sampled)
  52. ieee754 x 7,681,130 ops/sec ±1.11% (83 runs sampled)
  53. buffer x 12,657,876 ops/sec ±1.03% (83 runs sampled)
  54. buffer (noAssert) x 13,372,795 ops/sec ±0.84% (85 runs sampled)
  55. float was fastest
  56. float (fallback) was 73.1% slower
  57. ieee754 was 80.1% slower
  58. buffer was 67.3% slower
  59. buffer (noAssert) was 65.3% slower
  60. benchmarking readDouble performance ...
  61. float x 40,527,888 ops/sec ±1.05% (84 runs sampled)
  62. float (fallback) x 18,696,480 ops/sec ±0.84% (86 runs sampled)
  63. ieee754 x 14,074,028 ops/sec ±1.04% (87 runs sampled)
  64. buffer x 10,092,367 ops/sec ±1.15% (84 runs sampled)
  65. buffer (noAssert) x 10,623,793 ops/sec ±0.96% (84 runs sampled)
  66. float was fastest
  67. float (fallback) was 53.8% slower
  68. ieee754 was 65.3% slower
  69. buffer was 75.1% slower
  70. buffer (noAssert) was 73.8% slower
  71. ```
  72. To run it yourself:
  73. ```
  74. $> npm run bench
  75. ```
  76. **License:** [BSD 3-Clause License](https://opensource.org/licenses/BSD-3-Clause)