memx 0.2.0

memory functions like libc memcmp(), memchr(), memmem(), memcpy(), memset()
Documentation
## Benchmark results

- compile by rustc 1.69.0 (84c898d65 2023-04-16)

  0. x86_64-unknown-linux- @i5-4570:

|         `name`          |  `gnu:en`   |  `gnu:ja`   |  `musl:en`  |  `musl:ja`  |
|:------------------------|------------:|------------:|------------:|------------:|
| std_memrmem             |   10.615 µs |   11.433 µs |   10.610 µs |   11.398 µs |
| libc_memrmem            |   39.367 µs |   80.704 µs |   25.829 µs |   55.172 µs |
| memchr_memrmem          |   10.418 µs |   10.644 µs |    9.633 µs |   10.017 µs |
| memx_memrmem            |    0.721 µs |    1.300 µs |    0.707 µs |    1.237 µs |
| memx_memrmem_basic      |    2.171 µs |    4.316 µs |    2.181 µs |    4.422 µs |
| memx_memrmem_sse2       |    1.009 µs |    1.885 µs |    0.998 µs |    1.867 µs |
| memx_memrmem_avx2       |    0.715 µs |    1.302 µs |    0.701 µs |    1.235 µs |

  1. x86_64-unknown-linux-:

|         `name`          |  `gnu:en`   |  `gnu:ja`   |  `musl:en`  |  `musl:ja`  |
|:------------------------|------------:|------------:|------------:|------------:|
| std_memrmem             |   32.608 µs |   38.152 µs |   32.825 µs |   38.481 µs |
| libc_memrmem            |  125.440 µs |  353.490 µs |   51.224 µs |  108.320 µs |
| memchr_memrmem          |   35.166 µs |   35.402 µs |   34.239 µs |   35.341 µs |
| memx_memrmem            |    2.653 µs |    5.458 µs |    2.777 µs |    5.197 µs |
| memx_memrmem_basic      |    5.914 µs |   11.977 µs |    5.893 µs |   11.939 µs |
| memx_memrmem_sse2       |    2.508 µs |    5.452 µs |    2.652 µs |    5.219 µs |

  2. i686-unknown-linux-:

|         `name`          |  `gnu:en`   |  `gnu:ja`   |  `musl:en`  |  `musl:ja`  |
|:------------------------|------------:|------------:|------------:|------------:|
| std_memrmem             |   38.417 µs |   44.786 µs |   40.566 µs |   48.517 µs |
| memchr_memrmem          |   41.105 µs |   44.202 µs |   42.344 µs |   45.985 µs |
| memx_memrmem            |    3.004 µs |    5.273 µs |    3.088 µs |    5.771 µs |
| memx_memrmem_basic      |   10.626 µs |   20.918 µs |   11.152 µs |   22.065 µs |
| memx_memrmem_sse2       |    2.900 µs |    5.252 µs |    2.934 µs |    5.792 µs |

  3. i586-unknown-linux-:

|         `name`          |  `gnu:en`   |  `gnu:ja`   |  `musl:en`  |  `musl:ja`  |
|:------------------------|------------:|------------:|------------:|------------:|
| std_memrmem             |   38.281 µs |   50.303 µs |   40.584 µs |   52.088 µs |
| memchr_memrmem          |   40.560 µs |   61.418 µs |   41.814 µs |   60.823 µs |
| memx_memrmem            |    3.226 µs |    5.470 µs |    3.267 µs |    6.003 µs |
| memx_memrmem_basic      |   11.026 µs |   21.526 µs |   11.289 µs |   22.543 µs |


- compile by rustc 1.53.0 (53cb7b09b 2021-06-17)

  1. x86_64-unknown-linux-:

|         `name`          |  `gnu:en`   |  `gnu:ja`   |  `musl:en`  |  `musl:ja`  |
|:------------------------|------------:|------------:|------------:|------------:|
| std_memrmem             |  543.460 us |  759.250 us |  536.440 us |  759.370 us |
| libc_memrmem            | 1687.500 us | 1749.600 us |  667.440 us |  720.360 us |
| memchr_memrmem          |  643.720 us |  657.040 us |  654.540 us |  669.780 us |
| memx_memrmem            |  113.400 us |  113.700 us |  114.040 us |  113.620 us |
| memx_memrmem_basic      |  110.120 us |  108.700 us |  110.110 us |  110.010 us |
| memx_memrmem_sse2       |  113.460 us |  112.400 us |  113.560 us |  112.770 us |

  2. i686-unknown-linux-:

|         `name`          |  `gnu:en`   |  `gnu:ja`   |  `musl:en`  |  `musl:ja`  |
|:------------------------|------------:|------------:|------------:|------------:|
| std_memrmem             |  730.030 us |  886.480 us |  768.880 us |  853.430 us |
| memchr_memrmem          |  820.390 us |  824.070 us |  881.630 us |  851.500 us |
| memx_memrmem            |  126.400 us |  127.140 us |  139.320 us |  135.380 us |
| memx_memrmem_basic      |  125.310 us |  125.180 us |  136.860 us |  128.350 us |
| memx_memrmem_sse2       |  122.240 us |  123.570 us |  131.970 us |  131.880 us |

  3. i586-unknown-linux-:

|         `name`          |  `gnu:en`   |  `gnu:ja`   |  `musl:en`  |  `musl:ja`  |
|:------------------------|------------:|------------:|------------:|------------:|
| std_memrmem             |  720.990 us |  838.830 us |  762.540 us |  835.690 us |
| memchr_memrmem          |  868.280 us | 1279.700 us |  868.220 us | 1257.300 us |
| memx_memrmem            |  130.680 us |  126.340 us |  144.500 us |  145.400 us |
| memx_memrmem_basic      |  130.960 us |  128.030 us |  144.730 us |  131.690 us |

  4. armv7-linux-androideabi:

|         `name`          |  `andr:en`  |  `andr:ja`  |  `musl:en`  |  `musl:ja`  |
|:------------------------|------------:|------------:|------------:|------------:|
| std_memrmem             | 5735.900 us | 3668.800 us | 3054.100 us | 2006.900 us |
| memchr_memrmem          | 4526.400 us | 4486.400 us | 3291.500 us | 3245.300 us |
| memx_memrmem            | 2013.100 us | 2139.300 us |  544.170 us |  534.090 us |
| memx_memrmem_basic      | 2005.800 us | 2027.800 us |  556.750 us |  542.600 us |

- `µs` is micro seconds
- `:en` is english haystack or short length.
- `:ja` is japanese haystack or long length.
- `gnu` is x86_64-unknown-linux-gnu
- `musl` is x86_64-unknown-linux-musl
- @i5-4570: bench on intel i5-4570 @ 3.2GHz
- @Q6600: bench on intel Q6600 @ 2.40GHz or armv7 1.5GHz