Table of Contents

NumSharp vs NumPy Performance

Baseline: NumPy Β· measured across all array sizes (per-(op, dtype, N))

Ratio = NumPy Γ· NumSharp β†’ Higher is better (>1.0Γ— = NumSharp faster)

%NumPyπŸ• = NumSharp Γ· NumPy Γ— 100 = the share of NumPy's time NumSharp uses (30% = NumSharp takes only 30% of the time NumPy would; <100% = faster).

Status Ratio %NumPyπŸ• Meaning
βœ… Faster β‰₯1.0Γ— ≀100% NumSharp β‰₯ NumPy speed
🟑 Close 0.5–1.0Γ— 100–200% within 2Γ— slower
🟠 Slower 0.2–0.5Γ— 200–500% optimization target
πŸ”΄ Slow <0.2Γ— >500% priority fix
β–« Negligible <1Β΅s / >20Γ— β€” too fast to compare β€” excluded from rankings
βšͺ Pending - β€” C# benchmark not run

Summary: 1851 ops | βœ… 838 | 🟑 329 | 🟠 183 | πŸ”΄ 50 | β–« 388 | βšͺ 63

Summary by size

N ops βœ… faster 🟑 close 🟠 slower πŸ”΄ much β–« negl βšͺ n/a geomean %NPπŸ•
500 1 0 0 0 0 0 1 - -
900 3 0 0 0 0 0 3 - -
1,000 615 116 58 35 11 372 23 1.13x 89%
50,000 1 0 0 0 0 0 1 - -
100,000 615 295 135 124 35 7 19 0.98x 102%
5,000,000 1 0 0 0 0 0 1 - -
10,000,000 615 427 136 24 4 9 15 1.39x 72%

πŸ† Top 15 Best (NumSharp fastest vs NumPy)

Ranked over 1400 credible comparisons (both sides β‰₯1Β΅s, within 20Γ—); 388 negligible rows excluded as non-comparable (β–«). Ratio = NumPy Γ· NumSharp β€” above 1.0Γ— = NumSharp faster Β· %NumPyπŸ• = share of NumPy's time NumSharp uses.

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
βœ… np.prod (float64) float64 100,000 2.331 0.170 13.71Γ— 7%
βœ… np.nanprod(a) (float32) float32 100,000 0.160 0.012 13.53Γ— 7%
βœ… np.sum axis=1 (int8) int8 10,000,000 3.511 0.264 13.30Γ— 8%
βœ… np.nanvar(a) (float64) float64 1,000 0.020 0.002 13.06Γ— 8%
βœ… np.nanquantile(a, 0.5) (float32) float32 1,000 0.028 0.002 12.60Γ— 8%
βœ… np.nanstd(a) (float64) float64 1,000 0.019 0.002 12.52Γ— 8%
βœ… np.nanstd(a) (float16) float16 1,000 0.034 0.003 12.26Γ— 8%
βœ… np.prod axis=1 (float64) float64 100,000 0.060 0.005 12.13Γ— 8%
βœ… np.sum axis=1 (uint8) uint8 10,000,000 3.206 0.265 12.11Γ— 8%
βœ… np.mean (uint64) uint64 100,000 0.054 0.004 12.08Γ— 8%
βœ… np.dot(a, b) (float64) float64 100,000 0.112 0.009 12.05Γ— 8%
βœ… np.nanpercentile(a, 50) (float32) float32 1,000 0.027 0.002 11.99Γ— 8%
βœ… np.nanstd(a) (float32) float32 1,000 0.020 0.002 11.92Γ— 8%
βœ… np.nanvar(a) (float16) float16 1,000 0.032 0.003 11.72Γ— 8%
βœ… np.sum axis=0 (uint8) uint8 100,000 0.051 0.004 11.69Γ— 9%

πŸ”» Top 15 Worst (Optimization priorities)

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
πŸ”΄ np.zeros_like (int64) int64 1,000 0.001 0.013 0.079Γ— 1261%
πŸ”΄ np.sum (float64) float64 100,000 0.017 0.209 0.079Γ— 1260%
πŸ”΄ np.isnan(a) (float32) float32 100,000 0.004 0.048 0.092Γ— 1091%
πŸ”΄ np.invert(a) (bool) bool 100,000 0.002 0.023 0.092Γ— 1083%
πŸ”΄ np.zeros_like (float64) float64 1,000 0.001 0.013 0.092Γ— 1086%
πŸ”΄ a b (bool) bool 100,000 0.003 0.023 0.11Γ— 912%
πŸ”΄ a + scalar (float64) float64 100,000 0.012 0.104 0.11Γ— 902%
πŸ”΄ a * 2 (literal) (float64) float64 100,000 0.012 0.106 0.11Γ— 887%
πŸ”΄ a + 5 (literal) (float64) float64 100,000 0.012 0.103 0.11Γ— 884%
πŸ”΄ np.zeros_like (float32) float32 1,000 0.001 0.009 0.12Γ— 861%
πŸ”΄ a * a (square) (float64) float64 100,000 0.011 0.098 0.12Γ— 863%
πŸ”΄ a * scalar (float64) float64 100,000 0.012 0.100 0.12Γ— 857%
πŸ”΄ np.right_shift(a, 2) (bool) bool 1,000 0.002 0.013 0.12Γ— 844%
πŸ”΄ np.left_shift(a, 2) (bool) bool 1,000 0.002 0.013 0.12Γ— 845%
πŸ”΄ np.zeros_like (int32) int32 1,000 0.001 0.009 0.12Γ— 842%

Arithmetic

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
🟑 a % 7 (literal) (float32) float32 1,000 0.0143 0.0167 0.86Γ— 116%
🟑 a % 7 (literal) (float32) float32 100,000 1.6323 1.8289 0.89Γ— 112%
🟑 a % 7 (literal) (float32) float32 10,000,000 166.6333 176.1757 0.95Γ— 106%
🟑 a % 7 (literal) (float64) float64 1,000 0.0112 0.0175 0.64Γ— 156%
🟑 a % 7 (literal) (float64) float64 100,000 1.4461 1.6302 0.89Γ— 113%
🟑 a % 7 (literal) (float64) float64 10,000,000 159.2176 162.5277 0.98Γ— 102%
🟑 a % 7 (literal) (int32) int32 1,000 0.0022 0.0028 0.78Γ— 129%
🟑 a % 7 (literal) (int32) int32 100,000 0.3957 0.6590 0.60Γ— 166%
🟑 a % 7 (literal) (int32) int32 10,000,000 49.0203 66.9383 0.73Γ— 137%
🟑 a % 7 (literal) (int64) int64 1,000 0.0044 0.0069 0.64Γ— 156%
🟑 a % 7 (literal) (int64) int64 100,000 0.4155 0.6703 0.62Γ— 161%
🟑 a % 7 (literal) (int64) int64 10,000,000 50.7135 75.8665 0.67Γ— 150%
βœ… a % b (element-wise) (float32) float32 1,000 0.0121 0.0108 1.12Γ— 90%
🟑 a % b (element-wise) (float32) float32 100,000 1.5318 1.5713 0.97Γ— 103%
βœ… a % b (element-wise) (float32) float32 10,000,000 156.9058 152.7181 1.03Γ— 97%
βœ… a % b (element-wise) (float64) float64 1,000 0.0100 0.0090 1.12Γ— 89%
🟑 a % b (element-wise) (float64) float64 100,000 1.2891 1.3568 0.95Γ— 105%
🟑 a % b (element-wise) (float64) float64 10,000,000 143.9662 145.6373 0.99Γ— 101%
🟑 a % b (element-wise) (int32) int32 1,000 0.0021 0.0028 0.76Γ— 132%
🟑 a % b (element-wise) (int32) int32 100,000 0.3784 0.6093 0.62Γ— 161%
🟑 a % b (element-wise) (int32) int32 10,000,000 47.9091 58.8577 0.81Γ— 123%
🟑 a % b (element-wise) (int64) int64 1,000 0.0035 0.0040 0.88Γ— 114%
🟑 a % b (element-wise) (int64) int64 100,000 0.3756 0.6058 0.62Γ— 161%
🟑 a % b (element-wise) (int64) int64 10,000,000 49.5215 66.8191 0.74Γ— 135%
🟠 a * 2 (literal) (complex128) complex128 1,000 0.0011 0.0045 0.25Γ— 402%
βœ… a * 2 (literal) (complex128) complex128 100,000 0.3633 0.3155 1.15Γ— 87%
🟑 a * 2 (literal) (complex128) complex128 10,000,000 31.3365 57.0611 0.55Γ— 182%
🟑 a * 2 (literal) (float16) float16 1,000 0.0066 0.0103 0.63Γ— 158%
🟠 a * 2 (literal) (float16) float16 100,000 0.3439 0.8963 0.38Γ— 261%
🟠 a * 2 (literal) (float16) float16 10,000,000 31.2284 86.0293 0.36Γ— 276%
β–« a * 2 (literal) (float32) float32 1,000 0.0008 0.0053 0.14Γ— 691%
πŸ”΄ a * 2 (literal) (float32) float32 100,000 0.0066 0.0516 0.13Γ— 780%
🟑 a * 2 (literal) (float32) float32 10,000,000 7.8824 9.4240 0.84Γ— 120%
β–« a * 2 (literal) (float64) float64 1,000 0.0008 0.0062 0.13Γ— 773%
πŸ”΄ a * 2 (literal) (float64) float64 100,000 0.0119 0.1056 0.11Γ— 887%
🟑 a * 2 (literal) (float64) float64 10,000,000 20.0350 22.1709 0.90Γ— 111%
β–« a * 2 (literal) (int16) int16 1,000 0.0010 0.0058 0.17Γ— 589%
🟑 a * 2 (literal) (int16) int16 100,000 0.0233 0.0306 0.76Γ— 131%
βœ… a * 2 (literal) (int16) int16 10,000,000 6.0238 4.4309 1.36Γ— 74%
🟠 a * 2 (literal) (int32) int32 1,000 0.0010 0.0034 0.30Γ— 334%
🟠 a * 2 (literal) (int32) int32 100,000 0.0230 0.0521 0.44Γ— 226%
βœ… a * 2 (literal) (int32) int32 10,000,000 12.3132 7.7215 1.59Γ— 63%
β–« a * 2 (literal) (int64) int64 1,000 0.0009 0.0056 0.16Γ— 614%
🟠 a * 2 (literal) (int64) int64 100,000 0.0216 0.1059 0.20Γ— 491%
🟑 a * 2 (literal) (int64) int64 10,000,000 16.4530 31.0792 0.53Γ— 189%
β–« a * 2 (literal) (int8) int8 1,000 0.0008 0.0036 0.23Γ— 425%
🟑 a * 2 (literal) (int8) int8 100,000 0.0226 0.0233 0.97Γ— 103%
βœ… a * 2 (literal) (int8) int8 10,000,000 3.7464 2.1072 1.78Γ— 56%
🟠 a * 2 (literal) (uint16) uint16 1,000 0.0010 0.0027 0.37Γ— 269%
🟑 a * 2 (literal) (uint16) uint16 100,000 0.0229 0.0291 0.78Γ— 128%
βœ… a * 2 (literal) (uint16) uint16 10,000,000 6.6073 4.8579 1.36Γ— 74%
πŸ”΄ a * 2 (literal) (uint32) uint32 1,000 0.0010 0.0054 0.19Γ— 520%
🟠 a * 2 (literal) (uint32) uint32 100,000 0.0225 0.0519 0.43Γ— 231%
βœ… a * 2 (literal) (uint32) uint32 10,000,000 7.8930 7.6778 1.03Γ— 97%
β–« a * 2 (literal) (uint64) uint64 1,000 0.0009 0.0030 0.31Γ— 323%
🟠 a * 2 (literal) (uint64) uint64 100,000 0.0222 0.1066 0.21Γ— 481%
🟑 a * 2 (literal) (uint64) uint64 10,000,000 15.0621 29.8983 0.50Γ— 198%
β–« a * 2 (literal) (uint8) uint8 1,000 0.0009 0.0038 0.23Γ— 428%
βœ… a * 2 (literal) (uint8) uint8 100,000 0.0229 0.0216 1.06Γ— 95%
βœ… a * 2 (literal) (uint8) uint8 10,000,000 4.1643 2.1224 1.96Γ— 51%
β–« a * a (square) (complex128) complex128 1,000 0.0008 0.0042 0.19Γ— 520%
🟑 a * a (square) (complex128) complex128 100,000 0.3485 0.4268 0.82Γ— 122%
🟑 a * a (square) (complex128) complex128 10,000,000 30.2303 43.0242 0.70Γ— 142%
🟑 a * a (square) (float16) float16 1,000 0.0057 0.0093 0.61Γ— 162%
🟠 a * a (square) (float16) float16 100,000 0.2934 0.8294 0.35Γ— 283%
🟠 a * a (square) (float16) float16 10,000,000 30.7340 84.9605 0.36Γ— 276%
β–« a * a (square) (float32) float32 1,000 0.0005 0.0019 0.28Γ— 356%
πŸ”΄ a * a (square) (float32) float32 100,000 0.0059 0.0493 0.12Γ— 834%
🟑 a * a (square) (float32) float32 10,000,000 7.8671 8.1233 0.97Γ— 103%
β–« a * a (square) (float64) float64 1,000 0.0005 0.0027 0.20Γ— 506%
πŸ”΄ a * a (square) (float64) float64 100,000 0.0113 0.0977 0.12Γ— 863%
🟑 a * a (square) (float64) float64 10,000,000 19.3973 20.3482 0.95Γ— 105%
β–« a * a (square) (int16) int16 1,000 0.0008 0.0018 0.41Γ— 242%
βœ… a * a (square) (int16) int16 100,000 0.0287 0.0251 1.14Γ— 88%
βœ… a * a (square) (int16) int16 10,000,000 7.2866 5.2338 1.39Γ— 72%
β–« a * a (square) (int32) int32 1,000 0.0008 0.0020 0.39Γ— 258%
🟑 a * a (square) (int32) int32 100,000 0.0300 0.0553 0.54Γ— 184%
βœ… a * a (square) (int32) int32 10,000,000 12.7934 7.8908 1.62Γ— 62%
β–« a * a (square) (int64) int64 1,000 0.0008 0.0029 0.27Γ— 376%
🟠 a * a (square) (int64) int64 100,000 0.0289 0.1056 0.27Γ— 366%
🟑 a * a (square) (int64) int64 10,000,000 15.6967 30.4188 0.52Γ— 194%
β–« a * a (square) (int8) int8 1,000 0.0006 0.0015 0.42Γ— 239%
βœ… a * a (square) (int8) int8 100,000 0.0280 0.0158 1.77Γ— 57%
βœ… a * a (square) (int8) int8 10,000,000 4.4945 2.8519 1.58Γ— 64%
β–« a * a (square) (uint16) uint16 1,000 0.0008 0.0017 0.45Γ— 223%
βœ… a * a (square) (uint16) uint16 100,000 0.0347 0.0258 1.34Γ— 74%
βœ… a * a (square) (uint16) uint16 10,000,000 7.9808 5.3188 1.50Γ— 67%
β–« a * a (square) (uint32) uint32 1,000 0.0008 0.0021 0.37Γ— 269%
🟑 a * a (square) (uint32) uint32 100,000 0.0285 0.0490 0.58Γ— 172%
🟑 a * a (square) (uint32) uint32 10,000,000 7.9914 8.4603 0.94Γ— 106%
β–« a * a (square) (uint64) uint64 1,000 0.0007 0.0028 0.26Γ— 384%
🟠 a * a (square) (uint64) uint64 100,000 0.0293 0.1078 0.27Γ— 368%
🟑 a * a (square) (uint64) uint64 10,000,000 15.1757 29.8093 0.51Γ— 196%
β–« a * a (square) (uint8) uint8 1,000 0.0007 0.0014 0.46Γ— 216%
βœ… a * a (square) (uint8) uint8 100,000 0.0290 0.0155 1.88Γ— 53%
βœ… a * a (square) (uint8) uint8 10,000,000 4.8089 2.8618 1.68Γ— 60%
β–« a * b (element-wise) (complex128) complex128 1,000 0.0009 0.0043 0.22Γ— 453%
🟑 a * b (element-wise) (complex128) complex128 100,000 0.3579 0.4442 0.81Γ— 124%
🟠 a * b (element-wise) (complex128) complex128 10,000,000 34.4053 73.3371 0.47Γ— 213%
🟠 a * b (element-wise) (float16) float16 1,000 0.0034 0.0090 0.37Γ— 268%
🟠 a * b (element-wise) (float16) float16 100,000 0.3186 0.8505 0.38Γ— 267%
🟠 a * b (element-wise) (float16) float16 10,000,000 30.9166 88.9610 0.35Γ— 288%
β–« a * b (element-wise) (float32) float32 1,000 0.0006 0.0019 0.30Γ— 336%
πŸ”΄ a * b (element-wise) (float32) float32 100,000 0.0071 0.0514 0.14Γ— 722%
🟑 a * b (element-wise) (float32) float32 10,000,000 8.4965 10.2234 0.83Γ— 120%
β–« a * b (element-wise) (float64) float64 1,000 0.0005 0.0025 0.20Γ— 489%
🟠 a * b (element-wise) (float64) float64 100,000 0.0274 0.1030 0.27Γ— 376%
🟑 a * b (element-wise) (float64) float64 10,000,000 21.0075 33.0143 0.64Γ— 157%
β–« a * b (element-wise) (int16) int16 1,000 0.0008 0.0019 0.41Γ— 241%
βœ… a * b (element-wise) (int16) int16 100,000 0.0282 0.0266 1.06Γ— 95%
βœ… a * b (element-wise) (int16) int16 10,000,000 7.7338 6.8196 1.13Γ— 88%
β–« a * b (element-wise) (int32) int32 1,000 0.0008 0.0020 0.39Γ— 257%
🟑 a * b (element-wise) (int32) int32 100,000 0.0287 0.0519 0.55Γ— 181%
βœ… a * b (element-wise) (int32) int32 10,000,000 13.0207 10.9911 1.19Γ— 84%
β–« a * b (element-wise) (int64) int64 1,000 0.0008 0.0030 0.26Γ— 386%
🟠 a * b (element-wise) (int64) int64 100,000 0.0386 0.1068 0.36Γ— 277%
🟠 a * b (element-wise) (int64) int64 10,000,000 17.0533 38.5984 0.44Γ— 226%
β–« a * b (element-wise) (int8) int8 1,000 0.0006 0.0016 0.39Γ— 255%
βœ… a * b (element-wise) (int8) int8 100,000 0.0282 0.0162 1.74Γ— 57%
βœ… a * b (element-wise) (int8) int8 10,000,000 5.3373 3.6339 1.47Γ— 68%
β–« a * b (element-wise) (uint16) uint16 1,000 0.0008 0.0019 0.39Γ— 254%
βœ… a * b (element-wise) (uint16) uint16 100,000 0.0308 0.0267 1.15Γ— 87%
βœ… a * b (element-wise) (uint16) uint16 10,000,000 7.7433 6.7987 1.14Γ— 88%
β–« a * b (element-wise) (uint32) uint32 1,000 0.0008 0.0020 0.40Γ— 250%
🟑 a * b (element-wise) (uint32) uint32 100,000 0.0278 0.0486 0.57Γ— 175%
🟑 a * b (element-wise) (uint32) uint32 10,000,000 9.8085 11.0138 0.89Γ— 112%
β–« a * b (element-wise) (uint64) uint64 1,000 0.0007 0.0027 0.27Γ— 377%
🟠 a * b (element-wise) (uint64) uint64 100,000 0.0361 0.1090 0.33Γ— 302%
🟠 a * b (element-wise) (uint64) uint64 10,000,000 16.9583 37.9021 0.45Γ— 224%
β–« a * b (element-wise) (uint8) uint8 1,000 0.0007 0.0017 0.39Γ— 257%
βœ… a * b (element-wise) (uint8) uint8 100,000 0.0295 0.0157 1.88Γ— 53%
βœ… a * b (element-wise) (uint8) uint8 10,000,000 4.5011 3.6771 1.22Γ— 82%
β–« a * scalar (complex128) complex128 1,000 0.0009 0.0043 0.22Γ— 458%
βœ… a * scalar (complex128) complex128 100,000 0.3458 0.3076 1.12Γ— 89%
🟑 a * scalar (complex128) complex128 10,000,000 30.9297 45.1226 0.69Γ— 146%
🟑 a * scalar (float16) float16 1,000 0.0062 0.0092 0.68Γ— 148%
🟠 a * scalar (float16) float16 100,000 0.3472 0.8794 0.40Γ— 253%
🟠 a * scalar (float16) float16 10,000,000 35.1625 88.3826 0.40Γ— 251%
β–« a * scalar (float32) float32 1,000 0.0007 0.0020 0.36Γ— 281%
πŸ”΄ a * scalar (float32) float32 100,000 0.0068 0.0488 0.14Γ— 722%
🟑 a * scalar (float32) float32 10,000,000 8.0629 8.9608 0.90Γ— 111%
β–« a * scalar (float64) float64 1,000 0.0009 0.0028 0.31Γ— 325%
πŸ”΄ a * scalar (float64) float64 100,000 0.0117 0.0999 0.12Γ— 857%
🟑 a * scalar (float64) float64 10,000,000 19.9081 22.8588 0.87Γ— 115%
β–« a * scalar (int16) int16 1,000 0.0009 0.0018 0.50Γ— 201%
🟑 a * scalar (int16) int16 100,000 0.0233 0.0262 0.89Γ— 112%
βœ… a * scalar (int16) int16 10,000,000 7.0592 4.6609 1.51Γ— 66%
β–« a * scalar (int32) int32 1,000 0.0009 0.0019 0.46Γ— 217%
🟠 a * scalar (int32) int32 100,000 0.0231 0.0508 0.46Γ— 220%
βœ… a * scalar (int32) int32 10,000,000 12.6141 9.1360 1.38Γ— 72%
β–« a * scalar (int64) int64 1,000 0.0009 0.0029 0.30Γ— 332%
🟠 a * scalar (int64) int64 100,000 0.0226 0.1076 0.21Γ— 476%
🟠 a * scalar (int64) int64 10,000,000 15.4341 31.3975 0.49Γ— 203%
β–« a * scalar (int8) int8 1,000 0.0007 0.0016 0.45Γ— 223%
βœ… a * scalar (int8) int8 100,000 0.0223 0.0161 1.39Γ— 72%
βœ… a * scalar (int8) int8 10,000,000 3.7610 2.0651 1.82Γ— 55%
β–« a * scalar (uint16) uint16 1,000 0.0009 0.0018 0.47Γ— 213%
🟑 a * scalar (uint16) uint16 100,000 0.0262 0.0269 0.97Γ— 103%
βœ… a * scalar (uint16) uint16 10,000,000 7.0635 4.6785 1.51Γ— 66%
β–« a * scalar (uint32) uint32 1,000 0.0009 0.0020 0.46Γ— 219%
🟠 a * scalar (uint32) uint32 100,000 0.0227 0.0507 0.45Γ— 223%
🟑 a * scalar (uint32) uint32 10,000,000 7.8165 9.2370 0.85Γ— 118%
β–« a * scalar (uint64) uint64 1,000 0.0008 0.0028 0.28Γ— 351%
🟠 a * scalar (uint64) uint64 100,000 0.0222 0.1048 0.21Γ— 471%
🟑 a * scalar (uint64) uint64 10,000,000 15.1079 30.0570 0.50Γ— 199%
β–« a * scalar (uint8) uint8 1,000 0.0008 0.0016 0.47Γ— 210%
βœ… a * scalar (uint8) uint8 100,000 0.0238 0.0159 1.50Γ— 67%
βœ… a * scalar (uint8) uint8 10,000,000 4.0195 2.0901 1.92Γ— 52%
πŸ”΄ a + 5 (literal) (complex128) complex128 1,000 0.0011 0.0076 0.14Γ— 691%
βœ… a + 5 (literal) (complex128) complex128 100,000 0.3558 0.3115 1.14Γ— 88%
βœ… a + 5 (literal) (complex128) complex128 10,000,000 42.7672 39.9933 1.07Γ— 94%
🟑 a + 5 (literal) (float16) float16 1,000 0.0064 0.0106 0.60Γ— 166%
🟠 a + 5 (literal) (float16) float16 100,000 0.3642 0.8592 0.42Γ— 236%
🟠 a + 5 (literal) (float16) float16 10,000,000 31.0643 84.9236 0.37Γ— 273%
β–« a + 5 (literal) (float32) float32 1,000 0.0009 0.0049 0.18Γ— 568%
πŸ”΄ a + 5 (literal) (float32) float32 100,000 0.0065 0.0543 0.12Γ— 841%
🟑 a + 5 (literal) (float32) float32 10,000,000 8.0704 8.3566 0.97Γ— 104%
β–« a + 5 (literal) (float64) float64 1,000 0.0008 0.0056 0.14Γ— 708%
πŸ”΄ a + 5 (literal) (float64) float64 100,000 0.0117 0.1033 0.11Γ— 884%
βœ… a + 5 (literal) (float64) float64 10,000,000 19.9822 19.3898 1.03Γ— 97%
🟠 a + 5 (literal) (int16) int16 1,000 0.0010 0.0025 0.41Γ— 245%
🟑 a + 5 (literal) (int16) int16 100,000 0.0256 0.0297 0.86Γ— 116%
βœ… a + 5 (literal) (int16) int16 10,000,000 6.8921 4.3178 1.60Γ— 63%
🟠 a + 5 (literal) (int32) int32 1,000 0.0010 0.0033 0.31Γ— 321%
🟠 a + 5 (literal) (int32) int32 100,000 0.0250 0.0530 0.47Γ— 212%
βœ… a + 5 (literal) (int32) int32 10,000,000 12.6603 8.4146 1.50Γ— 66%
β–« a + 5 (literal) (int64) int64 1,000 0.0010 0.0058 0.17Γ— 598%
🟠 a + 5 (literal) (int64) int64 100,000 0.0233 0.1024 0.23Γ— 439%
🟑 a + 5 (literal) (int64) int64 10,000,000 15.3142 19.3520 0.79Γ— 126%
β–« a + 5 (literal) (int8) int8 1,000 0.0009 0.0034 0.26Γ— 387%
βœ… a + 5 (literal) (int8) int8 100,000 0.0369 0.0230 1.60Γ— 62%
βœ… a + 5 (literal) (int8) int8 10,000,000 4.1932 1.9965 2.10Γ— 48%
🟠 a + 5 (literal) (uint16) uint16 1,000 0.0010 0.0048 0.21Γ— 474%
🟑 a + 5 (literal) (uint16) uint16 100,000 0.0250 0.0308 0.81Γ— 123%
βœ… a + 5 (literal) (uint16) uint16 10,000,000 6.9032 4.2530 1.62Γ— 62%
πŸ”΄ a + 5 (literal) (uint32) uint32 1,000 0.0011 0.0056 0.19Γ— 530%
🟠 a + 5 (literal) (uint32) uint32 100,000 0.0234 0.0493 0.47Γ— 211%
βœ… a + 5 (literal) (uint32) uint32 10,000,000 10.0916 8.5435 1.18Γ— 85%
πŸ”΄ a + 5 (literal) (uint64) uint64 1,000 0.0010 0.0054 0.19Γ— 526%
🟠 a + 5 (literal) (uint64) uint64 100,000 0.0236 0.1073 0.22Γ— 454%
🟑 a + 5 (literal) (uint64) uint64 10,000,000 15.2161 20.0614 0.76Γ— 132%
β–« a + 5 (literal) (uint8) uint8 1,000 0.0009 0.0036 0.26Γ— 390%
βœ… a + 5 (literal) (uint8) uint8 100,000 0.0248 0.0205 1.21Γ— 83%
βœ… a + 5 (literal) (uint8) uint8 10,000,000 4.1679 1.9455 2.14Γ— 47%
🟠 a + b (element-wise) (complex128) complex128 1,000 0.0010 0.0046 0.23Γ— 442%
🟑 a + b (element-wise) (complex128) complex128 100,000 0.3515 0.4716 0.74Γ— 134%
🟑 a + b (element-wise) (complex128) complex128 10,000,000 42.3859 58.1610 0.73Γ— 137%
🟑 a + b (element-wise) (float16) float16 1,000 0.0055 0.0091 0.60Γ— 165%
🟠 a + b (element-wise) (float16) float16 100,000 0.2982 0.8560 0.35Γ— 287%
🟠 a + b (element-wise) (float16) float16 10,000,000 31.3075 87.5987 0.36Γ— 280%
β–« a + b (element-wise) (float32) float32 1,000 0.0007 0.0011 0.67Γ— 149%
πŸ”΄ a + b (element-wise) (float32) float32 100,000 0.0069 0.0546 0.13Γ— 792%
🟑 a + b (element-wise) (float32) float32 10,000,000 8.7877 10.3685 0.85Γ— 118%
β–« a + b (element-wise) (float64) float64 1,000 0.0005 0.0018 0.28Γ— 358%
🟠 a + b (element-wise) (float64) float64 100,000 0.0287 0.1183 0.24Γ— 413%
🟑 a + b (element-wise) (float64) float64 10,000,000 17.1247 32.2672 0.53Γ— 188%
β–« a + b (element-wise) (int16) int16 1,000 0.0009 0.0018 0.47Γ— 213%
🟑 a + b (element-wise) (int16) int16 100,000 0.0306 0.0341 0.90Γ— 111%
βœ… a + b (element-wise) (int16) int16 10,000,000 7.6408 7.1288 1.07Γ— 93%
β–« a + b (element-wise) (int32) int32 1,000 0.0008 0.0022 0.35Γ— 286%
🟑 a + b (element-wise) (int32) int32 100,000 0.0296 0.0569 0.52Γ— 192%
βœ… a + b (element-wise) (int32) int32 10,000,000 13.4533 10.0724 1.34Γ— 75%
β–« a + b (element-wise) (int64) int64 1,000 0.0010 0.0032 0.30Γ— 330%
🟠 a + b (element-wise) (int64) int64 100,000 0.0351 0.1211 0.29Γ— 345%
🟑 a + b (element-wise) (int64) int64 10,000,000 16.9982 32.1148 0.53Γ— 189%
β–« a + b (element-wise) (int8) int8 1,000 0.0007 0.0017 0.39Γ— 256%
βœ… a + b (element-wise) (int8) int8 100,000 0.0289 0.0158 1.83Γ— 55%
βœ… a + b (element-wise) (int8) int8 10,000,000 4.7377 3.2841 1.44Γ— 69%
β–« a + b (element-wise) (uint16) uint16 1,000 0.0008 0.0021 0.39Γ— 256%
βœ… a + b (element-wise) (uint16) uint16 100,000 0.0305 0.0303 1.00Γ— 100%
βœ… a + b (element-wise) (uint16) uint16 10,000,000 7.7579 7.1286 1.09Γ— 92%
🟑 a + b (element-wise) (uint32) uint32 1,000 0.0011 0.0017 0.68Γ— 148%
🟑 a + b (element-wise) (uint32) uint32 100,000 0.0292 0.0565 0.52Γ— 194%
βœ… a + b (element-wise) (uint32) uint32 10,000,000 13.4492 9.8607 1.36Γ— 73%
β–« a + b (element-wise) (uint64) uint64 1,000 0.0008 0.0027 0.29Γ— 348%
🟠 a + b (element-wise) (uint64) uint64 100,000 0.0529 0.1072 0.49Γ— 203%
🟠 a + b (element-wise) (uint64) uint64 10,000,000 17.2194 35.4223 0.49Γ— 206%
β–« a + b (element-wise) (uint8) uint8 1,000 0.0008 0.0019 0.43Γ— 232%
βœ… a + b (element-wise) (uint8) uint8 100,000 0.0305 0.0154 1.98Γ— 50%
βœ… a + b (element-wise) (uint8) uint8 10,000,000 4.9889 3.3759 1.48Γ— 68%
β–« a + scalar (complex128) complex128 1,000 0.0009 0.0042 0.23Γ— 442%
βœ… a + scalar (complex128) complex128 100,000 0.3392 0.3087 1.10Γ— 91%
🟑 a + scalar (complex128) complex128 10,000,000 39.4817 41.1306 0.96Γ— 104%
🟑 a + scalar (float16) float16 1,000 0.0066 0.0091 0.73Γ— 138%
🟠 a + scalar (float16) float16 100,000 0.3632 0.8631 0.42Γ— 238%
🟠 a + scalar (float16) float16 10,000,000 30.8505 85.6472 0.36Γ— 278%
β–« a + scalar (float32) float32 1,000 0.0007 0.0020 0.35Γ— 283%
πŸ”΄ a + scalar (float32) float32 100,000 0.0062 0.0514 0.12Γ— 829%
🟑 a + scalar (float32) float32 10,000,000 7.9325 8.3761 0.95Γ— 106%
β–« a + scalar (float64) float64 1,000 0.0007 0.0027 0.24Γ— 416%
πŸ”΄ a + scalar (float64) float64 100,000 0.0116 0.1045 0.11Γ— 902%
🟑 a + scalar (float64) float64 10,000,000 19.7762 20.4638 0.97Γ— 104%
β–« a + scalar (int16) int16 1,000 0.0009 0.0017 0.51Γ— 196%
🟑 a + scalar (int16) int16 100,000 0.0249 0.0262 0.95Γ— 105%
βœ… a + scalar (int16) int16 10,000,000 7.1782 4.4382 1.62Γ— 62%
β–« a + scalar (int32) int32 1,000 0.0009 0.0019 0.46Γ— 217%
🟠 a + scalar (int32) int32 100,000 0.0245 0.0532 0.46Γ— 217%
βœ… a + scalar (int32) int32 10,000,000 12.6205 8.3589 1.51Γ— 66%
β–« a + scalar (int64) int64 1,000 0.0009 0.0027 0.33Γ— 304%
🟠 a + scalar (int64) int64 100,000 0.0236 0.1014 0.23Γ— 429%
🟑 a + scalar (int64) int64 10,000,000 14.8466 19.9072 0.75Γ— 134%
β–« a + scalar (int8) int8 1,000 0.0008 0.0016 0.49Γ— 203%
βœ… a + scalar (int8) int8 100,000 0.0251 0.0149 1.69Γ— 59%
βœ… a + scalar (int8) int8 10,000,000 4.2152 1.9671 2.14Γ— 47%
β–« a + scalar (uint16) uint16 1,000 0.0009 0.0017 0.54Γ— 187%
🟑 a + scalar (uint16) uint16 100,000 0.0245 0.0256 0.96Γ— 105%
βœ… a + scalar (uint16) uint16 10,000,000 6.9794 4.3583 1.60Γ— 62%
β–« a + scalar (uint32) uint32 1,000 0.0009 0.0019 0.49Γ— 205%
🟠 a + scalar (uint32) uint32 100,000 0.0247 0.0503 0.49Γ— 204%
βœ… a + scalar (uint32) uint32 10,000,000 10.8927 8.4266 1.29Γ— 77%
β–« a + scalar (uint64) uint64 1,000 0.0009 0.0025 0.37Γ— 273%
🟠 a + scalar (uint64) uint64 100,000 0.0235 0.1018 0.23Γ— 433%
🟑 a + scalar (uint64) uint64 10,000,000 15.0579 20.0299 0.75Γ— 133%
β–« a + scalar (uint8) uint8 1,000 0.0008 0.0015 0.50Γ— 202%
βœ… a + scalar (uint8) uint8 100,000 0.0248 0.0148 1.67Γ— 60%
βœ… a + scalar (uint8) uint8 10,000,000 4.4127 1.9329 2.28Γ— 44%
β–« a - b (element-wise) (complex128) complex128 1,000 0.0009 0.0040 0.22Γ— 458%
βœ… a - b (element-wise) (complex128) complex128 100,000 0.3505 0.2610 1.34Γ— 74%
βœ… a - b (element-wise) (complex128) complex128 10,000,000 41.6707 35.7057 1.17Γ— 86%
🟠 a - b (element-wise) (float16) float16 1,000 0.0041 0.0092 0.44Γ— 225%
🟑 a - b (element-wise) (float16) float16 100,000 0.3042 0.4791 0.64Γ— 158%
🟑 a - b (element-wise) (float16) float16 10,000,000 31.1711 48.4343 0.64Γ— 155%
β–« a - b (element-wise) (float32) float32 1,000 0.0006 0.0020 0.28Γ— 359%
πŸ”΄ a - b (element-wise) (float32) float32 100,000 0.0069 0.0482 0.14Γ— 698%
βœ… a - b (element-wise) (float32) float32 10,000,000 8.6157 5.6899 1.51Γ— 66%
β–« a - b (element-wise) (float64) float64 1,000 0.0005 0.0018 0.29Γ— 340%
🟠 a - b (element-wise) (float64) float64 100,000 0.0331 0.1072 0.31Γ— 324%
βœ… a - b (element-wise) (float64) float64 10,000,000 21.1427 16.8826 1.25Γ— 80%
β–« a - b (element-wise) (int16) int16 1,000 0.0008 0.0017 0.45Γ— 222%
βœ… a - b (element-wise) (int16) int16 100,000 0.0293 0.0250 1.17Γ— 85%
βœ… a - b (element-wise) (int16) int16 10,000,000 7.8362 3.1173 2.51Γ— 40%
β–« a - b (element-wise) (int32) int32 1,000 0.0008 0.0020 0.40Γ— 253%
🟑 a - b (element-wise) (int32) int32 100,000 0.0287 0.0524 0.55Γ— 182%
βœ… a - b (element-wise) (int32) int32 10,000,000 13.7810 6.3717 2.16Γ— 46%
β–« a - b (element-wise) (int64) int64 1,000 0.0008 0.0028 0.27Γ— 367%
🟠 a - b (element-wise) (int64) int64 100,000 0.0352 0.1044 0.34Γ— 297%
🟑 a - b (element-wise) (int64) int64 10,000,000 16.8594 20.7569 0.81Γ— 123%
β–« a - b (element-wise) (int8) int8 1,000 0.0007 0.0014 0.46Γ— 219%
βœ… a - b (element-wise) (int8) int8 100,000 0.0355 0.0155 2.29Γ— 44%
βœ… a - b (element-wise) (int8) int8 10,000,000 4.7577 1.7145 2.77Γ— 36%
β–« a - b (element-wise) (uint16) uint16 1,000 0.0008 0.0018 0.45Γ— 222%
βœ… a - b (element-wise) (uint16) uint16 100,000 0.0299 0.0263 1.14Γ— 88%
βœ… a - b (element-wise) (uint16) uint16 10,000,000 8.2884 3.1096 2.67Γ— 38%
β–« a - b (element-wise) (uint32) uint32 1,000 0.0008 0.0020 0.41Γ— 242%
🟑 a - b (element-wise) (uint32) uint32 100,000 0.0294 0.0506 0.58Γ— 172%
βœ… a - b (element-wise) (uint32) uint32 10,000,000 10.8540 6.0006 1.81Γ— 55%
β–« a - b (element-wise) (uint64) uint64 1,000 0.0008 0.0029 0.26Γ— 385%
🟠 a - b (element-wise) (uint64) uint64 100,000 0.0385 0.1017 0.38Γ— 264%
🟑 a - b (element-wise) (uint64) uint64 10,000,000 16.7811 20.9601 0.80Γ— 125%
β–« a - b (element-wise) (uint8) uint8 1,000 0.0007 0.0015 0.45Γ— 224%
βœ… a - b (element-wise) (uint8) uint8 100,000 0.0288 0.0152 1.90Γ— 53%
βœ… a - b (element-wise) (uint8) uint8 10,000,000 5.0513 1.6363 3.09Γ— 32%
β–« a - scalar (complex128) complex128 1,000 0.0009 0.0030 0.31Γ— 319%
βœ… a - scalar (complex128) complex128 100,000 0.3509 0.2223 1.58Γ— 63%
βœ… a - scalar (complex128) complex128 10,000,000 39.6368 25.1620 1.57Γ— 64%
βœ… a - scalar (float16) float16 1,000 0.0061 0.0052 1.18Γ— 85%
🟑 a - scalar (float16) float16 100,000 0.2950 0.4792 0.62Γ— 162%
🟑 a - scalar (float16) float16 10,000,000 31.0622 48.9935 0.63Γ— 158%
β–« a - scalar (float32) float32 1,000 0.0007 0.0013 0.53Γ— 190%
🟠 a - scalar (float32) float32 100,000 0.0070 0.0293 0.24Γ— 417%
βœ… a - scalar (float32) float32 10,000,000 8.0175 5.3684 1.49Γ— 67%
β–« a - scalar (float64) float64 1,000 0.0006 0.0019 0.33Γ— 302%
πŸ”΄ a - scalar (float64) float64 100,000 0.0118 0.0691 0.17Γ— 586%
βœ… a - scalar (float64) float64 10,000,000 19.9346 14.0728 1.42Γ— 71%
β–« a - scalar (int16) int16 1,000 0.0009 0.0013 0.70Γ— 142%
βœ… a - scalar (int16) int16 100,000 0.0239 0.0141 1.70Γ— 59%
βœ… a - scalar (int16) int16 10,000,000 7.1495 2.7330 2.62Γ— 38%
β–« a - scalar (int32) int32 1,000 0.0009 0.0016 0.58Γ— 173%
🟑 a - scalar (int32) int32 100,000 0.0237 0.0278 0.85Γ— 117%
βœ… a - scalar (int32) int32 10,000,000 13.2645 5.2875 2.51Γ— 40%
β–« a - scalar (int64) int64 1,000 0.0009 0.0015 0.62Γ— 162%
🟠 a - scalar (int64) int64 100,000 0.0241 0.0677 0.36Γ— 280%
βœ… a - scalar (int64) int64 10,000,000 15.1015 14.4570 1.04Γ— 96%
β–« a - scalar (int8) int8 1,000 0.0008 0.0011 0.68Γ— 147%
βœ… a - scalar (int8) int8 100,000 0.0319 0.0079 4.02Γ— 25%
βœ… a - scalar (int8) int8 10,000,000 4.4975 1.3821 3.25Γ— 31%
β–« a - scalar (uint16) uint16 1,000 0.0009 0.0012 0.77Γ— 130%
βœ… a - scalar (uint16) uint16 100,000 0.0244 0.0148 1.65Γ— 61%
βœ… a - scalar (uint16) uint16 10,000,000 6.7651 2.6065 2.60Γ— 38%
🟑 a - scalar (uint32) uint32 1,000 0.0011 0.0012 0.88Γ— 114%
🟑 a - scalar (uint32) uint32 100,000 0.0233 0.0264 0.89Γ— 113%
βœ… a - scalar (uint32) uint32 10,000,000 10.2434 5.3189 1.93Γ— 52%
β–« a - scalar (uint64) uint64 1,000 0.0009 0.0016 0.56Γ— 177%
🟠 a - scalar (uint64) uint64 100,000 0.0241 0.0652 0.37Γ— 271%
βœ… a - scalar (uint64) uint64 10,000,000 15.1815 14.5668 1.04Γ— 96%
β–« a - scalar (uint8) uint8 1,000 0.0008 0.0008 0.95Γ— 105%
βœ… a - scalar (uint8) uint8 100,000 0.0374 0.0079 4.71Γ— 21%
βœ… a - scalar (uint8) uint8 10,000,000 4.1241 1.3972 2.95Γ— 34%
β–« a / b (element-wise) (float32) float32 1,000 0.0005 0.0023 0.22Γ— 458%
🟠 a / b (element-wise) (float32) float32 100,000 0.0134 0.0623 0.21Γ— 466%
🟑 a / b (element-wise) (float32) float32 10,000,000 8.4590 10.2825 0.82Γ— 122%
β–« a / b (element-wise) (float64) float64 1,000 0.0007 0.0034 0.22Γ— 452%
🟠 a / b (element-wise) (float64) float64 100,000 0.0382 0.1801 0.21Γ— 472%
🟑 a / b (element-wise) (float64) float64 10,000,000 20.4780 25.4700 0.80Γ— 124%
🟠 a / b (element-wise) (int32) int32 1,000 0.0024 0.0053 0.47Γ— 215%
🟠 a / b (element-wise) (int32) int32 100,000 0.0909 0.1953 0.47Γ— 215%
βœ… a / b (element-wise) (int32) int32 10,000,000 31.1185 23.9718 1.30Γ— 77%
🟠 a / b (element-wise) (int64) int64 1,000 0.0019 0.0055 0.35Γ— 289%
🟠 a / b (element-wise) (int64) int64 100,000 0.0785 0.1896 0.41Γ— 242%
🟑 a / b (element-wise) (int64) int64 10,000,000 24.7535 40.7339 0.61Γ— 165%
β–« a / scalar (float32) float32 1,000 0.0007 0.0020 0.32Γ— 308%
🟠 a / scalar (float32) float32 100,000 0.0123 0.0595 0.21Γ— 484%
🟑 a / scalar (float32) float32 10,000,000 7.8511 8.8399 0.89Γ— 113%
β–« a / scalar (float64) float64 1,000 0.0009 0.0034 0.27Γ— 376%
🟠 a / scalar (float64) float64 100,000 0.0372 0.1696 0.22Γ— 456%
🟑 a / scalar (float64) float64 10,000,000 19.0548 23.8037 0.80Γ— 125%
🟠 a / scalar (int32) int32 1,000 0.0018 0.0041 0.43Γ— 234%
🟠 a / scalar (int32) int32 100,000 0.0622 0.1883 0.33Γ— 302%
βœ… a / scalar (int32) int32 10,000,000 26.4799 23.0389 1.15Γ— 87%
🟠 a / scalar (int64) int64 1,000 0.0017 0.0074 0.23Γ— 436%
🟠 a / scalar (int64) int64 100,000 0.0575 0.1885 0.30Γ— 328%
🟑 a / scalar (int64) int64 10,000,000 20.5211 29.8992 0.69Γ— 146%
β–« np.add(a, b) (complex128) complex128 1,000 0.0008 0.0046 0.17Γ— 572%
🟑 np.add(a, b) (complex128) complex128 100,000 0.3569 0.4892 0.73Γ— 137%
🟑 np.add(a, b) (complex128) complex128 10,000,000 41.8396 58.6023 0.71Γ— 140%
🟑 np.add(a, b) (float16) float16 1,000 0.0057 0.0088 0.65Γ— 155%
🟠 np.add(a, b) (float16) float16 100,000 0.2995 0.8369 0.36Γ— 280%
🟠 np.add(a, b) (float16) float16 10,000,000 31.2511 85.9844 0.36Γ— 275%
β–« np.add(a, b) (float32) float32 1,000 0.0008 0.0019 0.41Γ— 245%
πŸ”΄ np.add(a, b) (float32) float32 100,000 0.0068 0.0542 0.12Γ— 798%
🟑 np.add(a, b) (float32) float32 10,000,000 8.6159 10.2348 0.84Γ— 119%
β–« np.add(a, b) (float64) float64 1,000 0.0005 0.0025 0.21Γ— 475%
🟠 np.add(a, b) (float64) float64 100,000 0.0287 0.1135 0.25Γ— 396%
🟑 np.add(a, b) (float64) float64 10,000,000 23.3169 25.7561 0.91Γ— 110%
β–« np.add(a, b) (int16) int16 1,000 0.0009 0.0017 0.51Γ— 196%
βœ… np.add(a, b) (int16) int16 100,000 0.0312 0.0273 1.14Γ— 87%
βœ… np.add(a, b) (int16) int16 10,000,000 7.8320 7.1303 1.10Γ— 91%
β–« np.add(a, b) (int32) int32 1,000 0.0008 0.0019 0.42Γ— 238%
🟑 np.add(a, b) (int32) int32 100,000 0.0299 0.0546 0.55Γ— 183%
βœ… np.add(a, b) (int32) int32 10,000,000 14.4326 12.7485 1.13Γ— 88%
β–« np.add(a, b) (int64) int64 1,000 0.0008 0.0028 0.29Γ— 341%
🟠 np.add(a, b) (int64) int64 100,000 0.0359 0.1337 0.27Γ— 372%
🟠 np.add(a, b) (int64) int64 10,000,000 17.0171 34.3239 0.50Γ— 202%
β–« np.add(a, b) (int8) int8 1,000 0.0007 0.0017 0.39Γ— 257%
βœ… np.add(a, b) (int8) int8 100,000 0.0293 0.0152 1.93Γ— 52%
βœ… np.add(a, b) (int8) int8 10,000,000 4.8360 3.1341 1.54Γ— 65%
β–« np.add(a, b) (uint16) uint16 1,000 0.0008 0.0018 0.42Γ— 235%
🟑 np.add(a, b) (uint16) uint16 100,000 0.0294 0.0296 0.99Γ— 101%
βœ… np.add(a, b) (uint16) uint16 10,000,000 8.1075 6.8350 1.19Γ— 84%
β–« np.add(a, b) (uint32) uint32 1,000 0.0010 0.0019 0.51Γ— 195%
🟑 np.add(a, b) (uint32) uint32 100,000 0.0324 0.0542 0.60Γ— 167%
βœ… np.add(a, b) (uint32) uint32 10,000,000 10.4639 9.8564 1.06Γ— 94%
β–« np.add(a, b) (uint64) uint64 1,000 0.0008 0.0028 0.30Γ— 330%
🟠 np.add(a, b) (uint64) uint64 100,000 0.0405 0.1101 0.37Γ— 272%
🟠 np.add(a, b) (uint64) uint64 10,000,000 16.7988 34.5621 0.49Γ— 206%
β–« np.add(a, b) (uint8) uint8 1,000 0.0007 0.0019 0.36Γ— 276%
βœ… np.add(a, b) (uint8) uint8 100,000 0.0287 0.0154 1.86Γ— 54%
βœ… np.add(a, b) (uint8) uint8 10,000,000 4.7543 3.2277 1.47Γ— 68%
β–« scalar - a (complex128) complex128 1,000 0.0010 0.0027 0.36Γ— 280%
βœ… scalar - a (complex128) complex128 100,000 0.3545 0.2210 1.60Γ— 62%
βœ… scalar - a (complex128) complex128 10,000,000 37.5427 25.1481 1.49Γ— 67%
βœ… scalar - a (float16) float16 1,000 0.0054 0.0051 1.05Γ— 95%
🟑 scalar - a (float16) float16 100,000 0.3008 0.4746 0.63Γ— 158%
🟑 scalar - a (float16) float16 10,000,000 31.1065 47.0491 0.66Γ— 151%
β–« scalar - a (float32) float32 1,000 0.0007 0.0014 0.52Γ— 191%
🟠 scalar - a (float32) float32 100,000 0.0067 0.0325 0.20Γ— 487%
βœ… scalar - a (float32) float32 10,000,000 7.8766 5.3211 1.48Γ— 68%
β–« scalar - a (float64) float64 1,000 0.0007 0.0020 0.33Γ— 300%
🟠 scalar - a (float64) float64 100,000 0.0138 0.0582 0.24Γ— 422%
βœ… scalar - a (float64) float64 10,000,000 20.1742 14.0006 1.44Γ— 69%
β–« scalar - a (int16) int16 1,000 0.0009 0.0012 0.78Γ— 128%
βœ… scalar - a (int16) int16 100,000 0.0243 0.0148 1.64Γ— 61%
βœ… scalar - a (int16) int16 10,000,000 7.1811 2.7354 2.62Γ— 38%
β–« scalar - a (int32) int32 1,000 0.0009 0.0013 0.72Γ— 139%
🟑 scalar - a (int32) int32 100,000 0.0240 0.0290 0.83Γ— 121%
βœ… scalar - a (int32) int32 10,000,000 13.3685 5.4031 2.47Γ— 40%
🟑 scalar - a (int64) int64 1,000 0.0011 0.0018 0.63Γ— 159%
🟠 scalar - a (int64) int64 100,000 0.0250 0.0667 0.38Γ— 267%
βœ… scalar - a (int64) int64 10,000,000 15.5954 14.9929 1.04Γ— 96%
β–« scalar - a (int8) int8 1,000 0.0008 0.0009 0.90Γ— 111%
βœ… scalar - a (int8) int8 100,000 0.0254 0.0080 3.18Γ— 31%
βœ… scalar - a (int8) int8 10,000,000 4.5431 1.3785 3.30Γ— 30%
β–« scalar - a (uint16) uint16 1,000 0.0009 0.0011 0.85Γ— 118%
βœ… scalar - a (uint16) uint16 100,000 0.0313 0.0147 2.12Γ— 47%
βœ… scalar - a (uint16) uint16 10,000,000 7.1706 2.6431 2.71Γ— 37%
β–« scalar - a (uint32) uint32 1,000 0.0009 0.0012 0.80Γ— 124%
🟑 scalar - a (uint32) uint32 100,000 0.0239 0.0299 0.80Γ— 125%
βœ… scalar - a (uint32) uint32 10,000,000 9.9808 5.3724 1.86Γ— 54%
β–« scalar - a (uint64) uint64 1,000 0.0009 0.0018 0.51Γ— 198%
🟠 scalar - a (uint64) uint64 100,000 0.0246 0.0594 0.41Γ— 242%
🟑 scalar - a (uint64) uint64 10,000,000 14.8288 14.8342 1.00Γ— 100%
β–« scalar - a (uint8) uint8 1,000 0.0008 0.0009 0.84Γ— 119%
βœ… scalar - a (uint8) uint8 100,000 0.0243 0.0082 2.98Γ— 34%
βœ… scalar - a (uint8) uint8 10,000,000 4.0556 1.4050 2.89Γ— 35%
β–« scalar / a (float32) float32 1,000 0.0007 0.0020 0.33Γ— 301%
🟠 scalar / a (float32) float32 100,000 0.0127 0.0612 0.21Γ— 483%
βœ… scalar / a (float32) float32 10,000,000 7.9570 7.2244 1.10Γ— 91%
β–« scalar / a (float64) float64 1,000 0.0009 0.0035 0.26Γ— 385%
🟠 scalar / a (float64) float64 100,000 0.0372 0.1857 0.20Γ— 499%
🟑 scalar / a (float64) float64 10,000,000 19.3997 22.5621 0.86Γ— 116%
🟠 scalar / a (int32) int32 1,000 0.0018 0.0070 0.26Γ— 391%
🟠 scalar / a (int32) int32 100,000 0.0638 0.1794 0.35Γ— 281%
🟑 scalar / a (int32) int32 10,000,000 22.0961 25.4827 0.87Γ— 115%
🟠 scalar / a (int64) int64 1,000 0.0018 0.0069 0.26Γ— 383%
🟠 scalar / a (int64) int64 100,000 0.0627 0.1881 0.33Γ— 300%
🟑 scalar / a (int64) int64 10,000,000 19.6435 30.8085 0.64Γ— 157%

Unary

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
β–« np.abs (float16) float16 1,000 0.0008 0.0015 0.54Γ— 184%
βœ… np.abs (float16) float16 100,000 0.0264 0.0234 1.13Γ— 89%
βœ… np.abs (float16) float16 10,000,000 4.7982 2.9688 1.62Γ— 62%
β–« np.abs (float32) float32 1,000 0.0005 0.0015 0.34Γ— 291%
πŸ”΄ np.abs (float32) float32 100,000 0.0064 0.0352 0.18Γ— 553%
βœ… np.abs (float32) float32 10,000,000 7.1189 4.2161 1.69Γ— 59%
β–« np.abs (float64) float64 1,000 0.0006 0.0028 0.20Γ— 503%
πŸ”΄ np.abs (float64) float64 100,000 0.0112 0.0686 0.16Γ— 612%
βœ… np.abs (float64) float64 10,000,000 14.6849 13.9245 1.05Γ— 95%
🟑 np.cbrt(a) (float16) float16 1,000 0.0101 0.0111 0.91Γ— 110%
🟑 np.cbrt(a) (float16) float16 100,000 1.1991 1.3766 0.87Γ— 115%
🟑 np.cbrt(a) (float16) float16 10,000,000 121.4253 136.3973 0.89Γ— 112%
βœ… np.cbrt(a) (float32) float32 1,000 0.0066 0.0060 1.10Γ— 91%
βœ… np.cbrt(a) (float32) float32 100,000 0.8943 0.8882 1.01Γ— 99%
βœ… np.cbrt(a) (float32) float32 10,000,000 94.5195 86.5058 1.09Γ— 92%
βœ… np.cbrt(a) (float64) float64 1,000 0.0098 0.0093 1.05Γ— 95%
βœ… np.cbrt(a) (float64) float64 100,000 1.0970 1.0793 1.02Γ— 98%
βœ… np.cbrt(a) (float64) float64 10,000,000 115.3869 109.5524 1.05Γ— 95%
βœ… np.ceil (float16) float16 1,000 0.0050 0.0040 1.26Γ— 79%
βœ… np.ceil (float16) float16 100,000 0.4660 0.3448 1.35Γ— 74%
βœ… np.ceil (float16) float16 10,000,000 43.5339 33.7644 1.29Γ— 78%
β–« np.ceil (float32) float32 1,000 0.0005 0.0014 0.38Γ— 263%
🟠 np.ceil (float32) float32 100,000 0.0066 0.0305 0.22Γ— 460%
βœ… np.ceil (float32) float32 10,000,000 7.2732 4.4002 1.65Γ— 60%
🟠 np.ceil (float64) float64 1,000 0.0014 0.0036 0.37Γ— 270%
πŸ”΄ np.ceil (float64) float64 100,000 0.0120 0.0606 0.20Γ— 503%
🟑 np.ceil (float64) float64 10,000,000 14.6298 16.0489 0.91Γ— 110%
βœ… np.clip(a, -10, 10) (float16) float16 1,000 0.0087 0.0059 1.47Γ— 68%
βœ… np.clip(a, -10, 10) (float16) float16 100,000 0.9296 0.7061 1.32Γ— 76%
βœ… np.clip(a, -10, 10) (float16) float16 10,000,000 93.7915 68.7791 1.36Γ— 73%
🟠 np.clip(a, -10, 10) (float32) float32 1,000 0.0021 0.0064 0.32Γ— 308%
🟠 np.clip(a, -10, 10) (float32) float32 100,000 0.0082 0.0345 0.24Γ— 421%
βœ… np.clip(a, -10, 10) (float32) float32 10,000,000 7.5158 4.1400 1.81Γ— 55%
🟠 np.clip(a, -10, 10) (float64) float64 1,000 0.0019 0.0047 0.40Γ— 252%
🟠 np.clip(a, -10, 10) (float64) float64 100,000 0.0166 0.0700 0.24Γ— 421%
βœ… np.clip(a, -10, 10) (float64) float64 10,000,000 18.6971 13.3810 1.40Γ— 72%
🟑 np.cos (float16) float16 1,000 0.0051 0.0081 0.63Γ— 158%
🟑 np.cos (float16) float16 100,000 0.7102 1.1049 0.64Γ— 156%
🟑 np.cos (float16) float16 10,000,000 80.1757 109.6838 0.73Γ— 137%
βœ… np.cos (float32) float32 1,000 0.0051 0.0038 1.35Γ— 74%
🟑 np.cos (float32) float32 100,000 0.7030 0.7111 0.99Γ— 101%
βœ… np.cos (float32) float32 10,000,000 82.6791 69.0830 1.20Γ— 84%
βœ… np.cos (float64) float64 1,000 0.0050 0.0040 1.22Γ— 82%
🟑 np.cos (float64) float64 100,000 0.6990 0.7313 0.96Γ— 105%
βœ… np.cos (float64) float64 10,000,000 81.9906 77.3710 1.06Γ— 94%
🟑 np.exp (float16) float16 1,000 0.0052 0.0066 0.79Γ— 127%
🟑 np.exp (float16) float16 100,000 0.4392 0.6077 0.72Γ— 138%
🟑 np.exp (float16) float16 10,000,000 44.3829 58.6632 0.76Γ— 132%
πŸ”΄ np.exp (float32) float32 1,000 0.0010 0.0056 0.19Γ— 539%
🟠 np.exp (float32) float32 100,000 0.0553 0.1841 0.30Γ— 333%
🟑 np.exp (float32) float32 10,000,000 10.4285 17.6747 0.59Γ— 170%
🟑 np.exp (float64) float64 1,000 0.0030 0.0040 0.75Γ— 134%
🟑 np.exp (float64) float64 100,000 0.2581 0.2792 0.93Γ— 108%
βœ… np.exp (float64) float64 10,000,000 33.4427 31.7361 1.05Γ— 95%
🟠 np.exp2 (float16) float16 1,000 0.0047 0.0099 0.48Γ— 210%
🟠 np.exp2 (float16) float16 100,000 0.4598 0.9896 0.47Γ— 215%
🟠 np.exp2 (float16) float16 10,000,000 48.1931 97.0656 0.50Γ— 201%
🟠 np.exp2 (float32) float32 1,000 0.0022 0.0100 0.22Γ— 461%
πŸ”΄ np.exp2 (float32) float32 100,000 0.1760 0.8987 0.20Γ— 511%
🟠 np.exp2 (float32) float32 10,000,000 22.9673 90.4267 0.25Γ— 394%
🟠 np.exp2 (float64) float64 1,000 0.0025 0.0096 0.26Γ— 389%
🟠 np.exp2 (float64) float64 100,000 0.2137 0.8559 0.25Γ— 400%
🟠 np.exp2 (float64) float64 10,000,000 37.0195 90.0413 0.41Γ— 243%
🟑 np.expm1 (float16) float16 1,000 0.0058 0.0091 0.64Γ— 157%
🟑 np.expm1 (float16) float16 100,000 0.5474 0.8722 0.63Γ— 159%
🟑 np.expm1 (float16) float16 10,000,000 55.0439 85.4215 0.64Γ— 155%
🟑 np.expm1 (float32) float32 1,000 0.0032 0.0046 0.70Γ— 142%
βœ… np.expm1 (float32) float32 100,000 0.2728 0.1902 1.43Γ— 70%
βœ… np.expm1 (float32) float32 10,000,000 31.7384 18.4160 1.72Γ— 58%
🟑 np.expm1 (float64) float64 1,000 0.0038 0.0040 0.95Γ— 106%
βœ… np.expm1 (float64) float64 100,000 0.3590 0.2864 1.25Γ— 80%
βœ… np.expm1 (float64) float64 10,000,000 47.0453 33.2374 1.42Γ— 71%
βœ… np.floor (float16) float16 1,000 0.0051 0.0039 1.30Γ— 77%
βœ… np.floor (float16) float16 100,000 0.4407 0.3400 1.30Γ— 77%
βœ… np.floor (float16) float16 10,000,000 43.3912 33.7248 1.29Γ— 78%
β–« np.floor (float32) float32 1,000 0.0006 0.0015 0.38Γ— 267%
πŸ”΄ np.floor (float32) float32 100,000 0.0064 0.0319 0.20Γ— 501%
βœ… np.floor (float32) float32 10,000,000 7.3030 5.1858 1.41Γ— 71%
β–« np.floor (float64) float64 1,000 0.0006 0.0032 0.17Γ— 575%
🟠 np.floor (float64) float64 100,000 0.0151 0.0632 0.24Γ— 419%
🟑 np.floor (float64) float64 10,000,000 14.8331 19.6220 0.76Γ— 132%
🟑 np.log (float16) float16 1,000 0.0049 0.0069 0.71Γ— 141%
🟑 np.log (float16) float16 100,000 0.4263 0.6316 0.68Γ— 148%
🟑 np.log (float16) float16 10,000,000 46.0282 63.6713 0.72Γ— 138%
🟠 np.log (float32) float32 1,000 0.0013 0.0051 0.26Γ— 384%
🟠 np.log (float32) float32 100,000 0.0869 0.2148 0.40Γ— 247%
🟑 np.log (float32) float32 10,000,000 13.1800 20.9525 0.63Γ— 159%
🟑 np.log (float64) float64 1,000 0.0028 0.0038 0.73Γ— 136%
🟑 np.log (float64) float64 100,000 0.2424 0.2668 0.91Γ— 110%
βœ… np.log (float64) float64 10,000,000 31.9128 30.1149 1.06Γ— 94%
🟑 np.log10 (float16) float16 1,000 0.0052 0.0070 0.74Γ— 135%
🟑 np.log10 (float16) float16 100,000 0.4465 0.6426 0.69Γ— 144%
🟑 np.log10 (float16) float16 10,000,000 47.8418 62.9499 0.76Γ— 132%
🟑 np.log10 (float32) float32 1,000 0.0035 0.0050 0.70Γ— 143%
🟑 np.log10 (float32) float32 100,000 0.1985 0.2140 0.93Γ— 108%
βœ… np.log10 (float32) float32 10,000,000 23.5444 20.6616 1.14Γ— 88%
🟑 np.log10 (float64) float64 1,000 0.0029 0.0040 0.73Γ— 138%
🟑 np.log10 (float64) float64 100,000 0.2625 0.2698 0.97Γ— 103%
βœ… np.log10 (float64) float64 10,000,000 32.9855 30.7610 1.07Γ— 93%
🟑 np.log1p (float16) float16 1,000 0.0062 0.0086 0.72Γ— 139%
🟑 np.log1p (float16) float16 100,000 0.5885 0.7878 0.75Γ— 134%
🟑 np.log1p (float16) float16 10,000,000 60.5869 77.8953 0.78Γ— 129%
🟑 np.log1p (float32) float32 1,000 0.0039 0.0040 0.98Γ— 102%
βœ… np.log1p (float32) float32 100,000 0.3058 0.2337 1.31Γ— 76%
βœ… np.log1p (float32) float32 10,000,000 33.3514 22.3477 1.49Γ— 67%
βœ… np.log1p (float64) float64 1,000 0.0039 0.0033 1.19Γ— 84%
βœ… np.log1p (float64) float64 100,000 0.3412 0.2752 1.24Γ— 81%
βœ… np.log1p (float64) float64 10,000,000 48.2083 31.5835 1.53Γ— 66%
🟑 np.log2 (float16) float16 1,000 0.0050 0.0070 0.72Γ— 139%
🟑 np.log2 (float16) float16 100,000 0.4545 0.6414 0.71Γ— 141%
🟑 np.log2 (float16) float16 10,000,000 48.9339 62.7084 0.78Γ— 128%
🟑 np.log2 (float32) float32 1,000 0.0027 0.0052 0.51Γ— 195%
βœ… np.log2 (float32) float32 100,000 0.2008 0.2006 1.00Γ— 100%
βœ… np.log2 (float32) float32 10,000,000 23.4387 19.2540 1.22Γ— 82%
🟑 np.log2 (float64) float64 1,000 0.0042 0.0044 0.95Γ— 106%
🟑 np.log2 (float64) float64 100,000 0.3739 0.3882 0.96Γ— 104%
βœ… np.log2 (float64) float64 10,000,000 50.1019 42.1909 1.19Γ— 84%
β–« np.negative(a) (float16) float16 1,000 0.0007 0.0014 0.54Γ— 185%
βœ… np.negative(a) (float16) float16 100,000 0.0278 0.0234 1.19Γ— 84%
βœ… np.negative(a) (float16) float16 10,000,000 4.7690 2.8837 1.65Γ— 60%
β–« np.negative(a) (float32) float32 1,000 0.0005 0.0015 0.35Γ— 289%
🟠 np.negative(a) (float32) float32 100,000 0.0066 0.0261 0.25Γ— 394%
βœ… np.negative(a) (float32) float32 10,000,000 7.7826 4.1048 1.90Γ— 53%
β–« np.negative(a) (float64) float64 1,000 0.0005 0.0036 0.15Γ— 679%
🟠 np.negative(a) (float64) float64 100,000 0.0121 0.0539 0.22Γ— 447%
βœ… np.negative(a) (float64) float64 10,000,000 16.0651 13.8831 1.16Γ— 86%
β–« np.positive(a) (float16) float16 1,000 0.0007 0.0010 0.69Γ— 144%
βœ… np.positive(a) (float16) float16 100,000 0.0217 0.0130 1.67Γ— 60%
βœ… np.positive(a) (float16) float16 10,000,000 4.2319 1.6180 2.62Γ— 38%
β–« np.positive(a) (float32) float32 1,000 0.0007 0.0020 0.32Γ— 310%
🟑 np.positive(a) (float32) float32 100,000 0.0194 0.0250 0.78Γ— 129%
βœ… np.positive(a) (float32) float32 10,000,000 7.7620 3.3803 2.30Γ— 44%
β–« np.positive(a) (float64) float64 1,000 0.0007 0.0028 0.24Γ— 409%
🟠 np.positive(a) (float64) float64 100,000 0.0206 0.0520 0.40Γ— 252%
βœ… np.positive(a) (float64) float64 10,000,000 15.1241 10.8534 1.39Γ— 72%
βœ… np.power(a, 0.5) (float16) float16 1,000 0.0092 0.0057 1.62Γ— 62%
βœ… np.power(a, 0.5) (float16) float16 100,000 0.8324 0.3398 2.45Γ— 41%
βœ… np.power(a, 0.5) (float16) float16 10,000,000 84.2019 32.9557 2.56Γ— 39%
βœ… np.power(a, 0.5) (float32) float32 1,000 0.0020 0.0019 1.06Γ— 94%
βœ… np.power(a, 0.5) (float32) float32 100,000 0.1267 0.0285 4.45Γ— 22%
βœ… np.power(a, 0.5) (float32) float32 10,000,000 16.0019 4.1327 3.87Γ— 26%
🟑 np.power(a, 0.5) (float64) float64 1,000 0.0018 0.0032 0.55Γ— 181%
βœ… np.power(a, 0.5) (float64) float64 100,000 0.1231 0.0638 1.93Γ— 52%
βœ… np.power(a, 0.5) (float64) float64 10,000,000 25.4013 13.6356 1.86Γ— 54%
βœ… np.power(a, 2) (float16) float16 1,000 0.0103 0.0054 1.90Γ— 53%
βœ… np.power(a, 2) (float16) float16 100,000 1.0690 0.4762 2.25Γ— 44%
βœ… np.power(a, 2) (float16) float16 10,000,000 106.8632 46.7294 2.29Γ— 44%
βœ… np.power(a, 2) (float32) float32 1,000 0.0024 0.0017 1.36Γ— 73%
βœ… np.power(a, 2) (float32) float32 100,000 0.1544 0.0283 5.46Γ— 18%
βœ… np.power(a, 2) (float32) float32 10,000,000 18.9400 4.1649 4.55Γ— 22%
🟑 np.power(a, 2) (float64) float64 1,000 0.0022 0.0031 0.71Γ— 141%
βœ… np.power(a, 2) (float64) float64 100,000 0.1542 0.0590 2.62Γ— 38%
βœ… np.power(a, 2) (float64) float64 10,000,000 28.4405 13.5219 2.10Γ— 48%
🟑 np.power(a, 3) (float16) float16 1,000 0.0126 0.0176 0.72Γ— 140%
🟑 np.power(a, 3) (float16) float16 100,000 1.5343 2.4828 0.62Γ— 162%
🟑 np.power(a, 3) (float16) float16 10,000,000 150.3564 250.3069 0.60Γ— 166%
🟑 np.power(a, 3) (float32) float32 1,000 0.0059 0.0082 0.73Γ— 137%
🟑 np.power(a, 3) (float32) float32 100,000 0.6578 0.6780 0.97Γ— 103%
βœ… np.power(a, 3) (float32) float32 10,000,000 72.0628 66.4589 1.08Γ— 92%
🟑 np.power(a, 3) (float64) float64 1,000 0.0098 0.0121 0.81Γ— 123%
🟑 np.power(a, 3) (float64) float64 100,000 1.0724 1.0959 0.98Γ— 102%
βœ… np.power(a, 3) (float64) float64 10,000,000 124.6532 111.9286 1.11Γ— 90%
🟑 np.reciprocal(a) (float16) float16 1,000 0.0036 0.0045 0.79Γ— 127%
🟑 np.reciprocal(a) (float16) float16 100,000 0.2193 0.4080 0.54Γ— 186%
🟑 np.reciprocal(a) (float16) float16 10,000,000 23.1324 40.0357 0.58Γ— 173%
β–« np.reciprocal(a) (float32) float32 1,000 0.0006 0.0014 0.44Γ— 225%
🟑 np.reciprocal(a) (float32) float32 100,000 0.0143 0.0263 0.54Γ— 184%
βœ… np.reciprocal(a) (float32) float32 10,000,000 7.1620 4.0578 1.76Γ— 57%
β–« np.reciprocal(a) (float64) float64 1,000 0.0008 0.0019 0.42Γ— 237%
🟑 np.reciprocal(a) (float64) float64 100,000 0.0421 0.0535 0.79Γ— 127%
βœ… np.reciprocal(a) (float64) float64 10,000,000 14.7266 13.7636 1.07Γ— 94%
βœ… np.round (float16) float16 1,000 0.0058 0.0046 1.24Γ— 81%
βœ… np.round (float16) float16 100,000 0.4702 0.4240 1.11Γ— 90%
βœ… np.round (float16) float16 10,000,000 42.8027 40.9331 1.05Γ— 96%
🟑 np.round (float32) float32 1,000 0.0011 0.0015 0.73Γ— 136%
🟠 np.round (float32) float32 100,000 0.0070 0.0281 0.25Γ— 403%
βœ… np.round (float32) float32 10,000,000 7.3586 4.6823 1.57Γ— 64%
🟠 np.round (float64) float64 1,000 0.0012 0.0024 0.49Γ— 204%
🟠 np.round (float64) float64 100,000 0.0128 0.0572 0.22Γ— 447%
🟑 np.round (float64) float64 10,000,000 15.0627 15.7393 0.96Γ— 104%
🟠 np.sign (float16) float16 1,000 0.0014 0.0042 0.33Γ— 304%
πŸ”΄ np.sign (float16) float16 100,000 0.0887 0.6603 0.13Γ— 744%
πŸ”΄ np.sign (float16) float16 10,000,000 10.5588 63.8912 0.17Γ— 605%
🟠 np.sign (float32) float32 1,000 0.0011 0.0038 0.29Γ— 339%
🟑 np.sign (float32) float32 100,000 0.2971 0.4006 0.74Γ— 135%
🟑 np.sign (float32) float32 10,000,000 36.0421 39.7051 0.91Γ— 110%
🟠 np.sign (float64) float64 1,000 0.0010 0.0047 0.22Γ— 448%
🟑 np.sign (float64) float64 100,000 0.2936 0.4000 0.73Γ— 136%
🟑 np.sign (float64) float64 10,000,000 40.6151 45.1700 0.90Γ— 111%
🟑 np.sin (float16) float16 1,000 0.0057 0.0080 0.72Γ— 139%
🟑 np.sin (float16) float16 100,000 0.7108 1.1057 0.64Γ— 156%
🟑 np.sin (float16) float16 10,000,000 79.6291 110.4160 0.72Γ— 139%
βœ… np.sin (float32) float32 1,000 0.0060 0.0038 1.57Γ— 64%
βœ… np.sin (float32) float32 100,000 0.7167 0.7077 1.01Γ— 99%
βœ… np.sin (float32) float32 10,000,000 80.7643 70.4978 1.15Γ— 87%
βœ… np.sin (float64) float64 1,000 0.0049 0.0040 1.22Γ— 82%
🟑 np.sin (float64) float64 100,000 0.7140 0.7415 0.96Γ— 104%
βœ… np.sin (float64) float64 10,000,000 82.0560 78.2388 1.05Γ— 95%
βœ… np.sqrt (float16) float16 1,000 0.0046 0.0039 1.18Γ— 85%
βœ… np.sqrt (float16) float16 100,000 0.4264 0.3413 1.25Γ— 80%
βœ… np.sqrt (float16) float16 10,000,000 40.8006 33.6967 1.21Γ— 83%
β–« np.sqrt (float32) float32 1,000 0.0006 0.0015 0.42Γ— 238%
🟑 np.sqrt (float32) float32 100,000 0.0149 0.0291 0.51Γ— 195%
βœ… np.sqrt (float32) float32 10,000,000 7.0955 4.2557 1.67Γ— 60%
🟠 np.sqrt (float64) float64 1,000 0.0012 0.0025 0.47Γ— 214%
🟑 np.sqrt (float64) float64 100,000 0.0557 0.0656 0.85Γ— 118%
βœ… np.sqrt (float64) float64 10,000,000 15.1785 13.7551 1.10Γ— 91%
🟑 np.square(a) (float16) float16 1,000 0.0034 0.0048 0.71Γ— 141%
🟠 np.square(a) (float16) float16 100,000 0.2122 0.4399 0.48Γ— 207%
🟑 np.square(a) (float16) float16 10,000,000 23.1199 42.7721 0.54Γ— 185%
β–« np.square(a) (float32) float32 1,000 0.0005 0.0013 0.39Γ— 258%
🟠 np.square(a) (float32) float32 100,000 0.0058 0.0262 0.22Γ— 448%
βœ… np.square(a) (float32) float32 10,000,000 7.1833 4.0587 1.77Γ— 56%
β–« np.square(a) (float64) float64 1,000 0.0005 0.0030 0.17Γ— 596%
🟠 np.square(a) (float64) float64 100,000 0.0122 0.0533 0.23Γ— 436%
βœ… np.square(a) (float64) float64 10,000,000 14.9158 13.8405 1.08Γ— 93%
🟑 np.tan (float16) float16 1,000 0.0045 0.0083 0.55Γ— 183%
🟑 np.tan (float16) float16 100,000 0.8245 1.1120 0.74Γ— 135%
🟑 np.tan (float16) float16 10,000,000 92.5062 110.2014 0.84Γ— 119%
βœ… np.tan (float32) float32 1,000 0.0047 0.0038 1.24Γ— 81%
βœ… np.tan (float32) float32 100,000 0.8414 0.6851 1.23Γ— 81%
βœ… np.tan (float32) float32 10,000,000 92.7529 67.5651 1.37Γ— 73%
🟑 np.tan (float64) float64 1,000 0.0050 0.0050 0.99Γ— 101%
🟑 np.tan (float64) float64 100,000 0.8055 0.8447 0.95Γ— 105%
βœ… np.tan (float64) float64 10,000,000 94.5311 88.7915 1.06Γ— 94%
βœ… np.trunc(a) (float16) float16 1,000 0.0054 0.0038 1.40Γ— 71%
βœ… np.trunc(a) (float16) float16 100,000 0.4827 0.3346 1.44Γ— 69%
βœ… np.trunc(a) (float16) float16 10,000,000 42.0396 32.4934 1.29Γ— 77%
β–« np.trunc(a) (float32) float32 1,000 0.0005 0.0016 0.34Γ— 290%
🟠 np.trunc(a) (float32) float32 100,000 0.0058 0.0257 0.22Γ— 445%
βœ… np.trunc(a) (float32) float32 10,000,000 7.1817 4.0632 1.77Γ— 57%
β–« np.trunc(a) (float64) float64 1,000 0.0005 0.0020 0.27Γ— 373%
🟠 np.trunc(a) (float64) float64 100,000 0.0115 0.0513 0.22Γ— 446%
βœ… np.trunc(a) (float64) float64 10,000,000 14.6674 13.6305 1.08Γ— 93%

Reduction

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
βœ… np.amax (complex128) complex128 1,000 0.0030 0.0018 1.64Γ— 61%
βœ… np.amax (complex128) complex128 100,000 0.1573 0.1142 1.38Γ— 73%
βœ… np.amax (complex128) complex128 10,000,000 16.6240 13.6265 1.22Γ— 82%
βœ… np.amax (float16) float16 1,000 0.0037 0.0011 3.48Γ— 29%
βœ… np.amax (float16) float16 100,000 0.5066 0.3200 1.58Γ— 63%
βœ… np.amax (float16) float16 10,000,000 50.6659 33.1861 1.53Γ— 66%
β–« np.amax (float32) float32 1,000 0.0017 0.0006 2.73Γ— 37%
βœ… np.amax (float32) float32 100,000 0.0059 0.0038 1.54Γ— 65%
βœ… np.amax (float32) float32 10,000,000 1.5947 1.2905 1.24Γ— 81%
β–« np.amax (float64) float64 1,000 0.0018 0.0008 2.34Γ— 43%
βœ… np.amax (float64) float64 100,000 0.0099 0.0062 1.60Γ— 62%
βœ… np.amax (float64) float64 10,000,000 3.3475 3.2005 1.05Γ— 96%
β–« np.amax (int16) int16 1,000 0.0015 0.0007 2.14Γ— 47%
βœ… np.amax (int16) int16 100,000 0.0031 0.0015 2.04Γ— 49%
βœ… np.amax (int16) int16 10,000,000 0.4359 0.3359 1.30Γ— 77%
β–« np.amax (int32) int32 1,000 0.0016 0.0007 2.28Γ— 44%
βœ… np.amax (int32) int32 100,000 0.0044 0.0023 1.94Γ— 52%
βœ… np.amax (int32) int32 10,000,000 1.2908 1.0195 1.27Γ— 79%
β–« np.amax (int64) int64 1,000 0.0017 0.0006 2.62Γ— 38%
βœ… np.amax (int64) int64 100,000 0.0089 0.0078 1.14Γ— 88%
🟑 np.amax (int64) int64 10,000,000 3.4074 3.5508 0.96Γ— 104%
β–« np.amax (int8) int8 1,000 0.0016 0.0007 2.08Γ— 48%
βœ… np.amax (int8) int8 100,000 0.0024 0.0012 2.00Γ— 50%
βœ… np.amax (int8) int8 10,000,000 0.1508 0.1463 1.03Γ— 97%
β–« np.amax (uint16) uint16 1,000 0.0016 0.0008 2.12Γ— 47%
βœ… np.amax (uint16) uint16 100,000 0.0032 0.0015 2.13Γ— 47%
🟑 np.amax (uint16) uint16 10,000,000 0.2938 0.3342 0.88Γ— 114%
β–« np.amax (uint32) uint32 1,000 0.0016 0.0007 2.21Γ— 45%
βœ… np.amax (uint32) uint32 100,000 0.0049 0.0032 1.53Γ— 65%
βœ… np.amax (uint32) uint32 10,000,000 1.4205 1.0043 1.41Γ— 71%
β–« np.amax (uint64) uint64 1,000 0.0017 0.0008 2.14Γ— 47%
βœ… np.amax (uint64) uint64 100,000 0.0129 0.0100 1.29Γ— 78%
🟑 np.amax (uint64) uint64 10,000,000 3.6692 3.6868 0.99Γ— 100%
β–« np.amax (uint8) uint8 1,000 0.0016 0.0008 2.06Γ— 49%
βœ… np.amax (uint8) uint8 100,000 0.0024 0.0012 2.06Γ— 49%
🟑 np.amax (uint8) uint8 10,000,000 0.1351 0.1468 0.92Γ— 109%
βœ… np.amax axis=0 (complex128) complex128 1,000 0.0030 0.0030 1.00Γ— 100%
βœ… np.amax axis=0 (complex128) complex128 100,000 0.1550 0.1176 1.32Γ— 76%
βœ… np.amax axis=0 (complex128) complex128 10,000,000 16.0042 13.0433 1.23Γ— 82%
βœ… np.amax axis=0 (float16) float16 1,000 0.0042 0.0019 2.18Γ— 46%
βœ… np.amax axis=0 (float16) float16 100,000 0.5075 0.5048 1.00Γ— 100%
🟑 np.amax axis=0 (float16) float16 10,000,000 49.7420 78.1538 0.64Γ— 157%
β–« np.amax axis=0 (float32) float32 1,000 0.0021 0.0008 2.66Γ— 38%
🟑 np.amax axis=0 (float32) float32 100,000 0.0091 0.0100 0.92Γ— 109%
🟑 np.amax axis=0 (float32) float32 10,000,000 1.6926 1.8598 0.91Γ— 110%
β–« np.amax axis=0 (float64) float64 1,000 0.0021 0.0009 2.33Γ— 43%
🟑 np.amax axis=0 (float64) float64 100,000 0.0145 0.0175 0.83Γ— 120%
🟑 np.amax axis=0 (float64) float64 10,000,000 3.9104 4.2597 0.92Γ— 109%
β–« np.amax axis=0 (int16) int16 1,000 0.0020 0.0007 2.94Γ— 34%
βœ… np.amax axis=0 (int16) int16 100,000 0.0063 0.0037 1.73Γ— 58%
βœ… np.amax axis=0 (int16) int16 10,000,000 0.5073 0.3767 1.35Γ— 74%
β–« np.amax axis=0 (int32) int32 1,000 0.0020 0.0007 2.84Γ— 35%
βœ… np.amax axis=0 (int32) int32 100,000 0.0082 0.0055 1.48Γ— 67%
βœ… np.amax axis=0 (int32) int32 10,000,000 1.7469 1.3193 1.32Γ— 76%
β–« np.amax axis=0 (int64) int64 1,000 0.0021 0.0008 2.62Γ— 38%
βœ… np.amax axis=0 (int64) int64 100,000 0.0153 0.0118 1.30Γ— 77%
βœ… np.amax axis=0 (int64) int64 10,000,000 4.1410 3.6647 1.13Γ— 88%
β–« np.amax axis=0 (int8) int8 1,000 0.0020 0.0007 2.79Γ— 36%
βœ… np.amax axis=0 (int8) int8 100,000 0.0076 0.0039 1.96Γ— 51%
βœ… np.amax axis=0 (int8) int8 10,000,000 0.3964 0.1724 2.30Γ— 44%
β–« np.amax axis=0 (uint16) uint16 1,000 0.0020 0.0007 2.97Γ— 34%
βœ… np.amax axis=0 (uint16) uint16 100,000 0.0065 0.0036 1.79Γ— 56%
βœ… np.amax axis=0 (uint16) uint16 10,000,000 0.4804 0.3808 1.26Γ— 79%
β–« np.amax axis=0 (uint32) uint32 1,000 0.0019 0.0007 2.81Γ— 36%
βœ… np.amax axis=0 (uint32) uint32 100,000 0.0082 0.0055 1.49Γ— 67%
βœ… np.amax axis=0 (uint32) uint32 10,000,000 1.6177 1.2662 1.28Γ— 78%
β–« np.amax axis=0 (uint64) uint64 1,000 0.0020 0.0009 2.24Γ— 45%
βœ… np.amax axis=0 (uint64) uint64 100,000 0.0185 0.0138 1.34Γ— 74%
βœ… np.amax axis=0 (uint64) uint64 10,000,000 4.3907 3.8229 1.15Γ— 87%
β–« np.amax axis=0 (uint8) uint8 1,000 0.0019 0.0007 2.85Γ— 35%
βœ… np.amax axis=0 (uint8) uint8 100,000 0.0081 0.0031 2.65Γ— 38%
βœ… np.amax axis=0 (uint8) uint8 10,000,000 0.2207 0.1718 1.28Γ— 78%
βœ… np.amin (complex128) complex128 1,000 0.0031 0.0016 1.93Γ— 52%
βœ… np.amin (complex128) complex128 100,000 0.1527 0.1141 1.34Γ— 75%
βœ… np.amin (complex128) complex128 10,000,000 16.4378 13.5639 1.21Γ— 82%
βœ… np.amin (float16) float16 1,000 0.0041 0.0012 3.53Γ— 28%
βœ… np.amin (float16) float16 100,000 0.5120 0.3020 1.70Γ— 59%
βœ… np.amin (float16) float16 10,000,000 51.8815 31.4161 1.65Γ— 61%
β–« np.amin (float32) float32 1,000 0.0023 0.0008 2.97Γ— 34%
βœ… np.amin (float32) float32 100,000 0.0058 0.0035 1.68Γ— 60%
βœ… np.amin (float32) float32 10,000,000 1.4447 1.3328 1.08Γ— 92%
β–« np.amin (float64) float64 1,000 0.0017 0.0008 2.21Γ— 45%
βœ… np.amin (float64) float64 100,000 0.0104 0.0073 1.42Γ— 70%
βœ… np.amin (float64) float64 10,000,000 3.3498 3.2187 1.04Γ— 96%
β–« np.amin (int16) int16 1,000 0.0016 0.0007 2.27Γ— 44%
βœ… np.amin (int16) int16 100,000 0.0035 0.0015 2.34Γ— 43%
βœ… np.amin (int16) int16 10,000,000 0.7445 0.3330 2.24Γ— 45%
β–« np.amin (int32) int32 1,000 0.0016 0.0007 2.25Γ— 44%
βœ… np.amin (int32) int32 100,000 0.0045 0.0023 1.98Γ— 50%
βœ… np.amin (int32) int32 10,000,000 1.2150 1.0174 1.19Γ— 84%
β–« np.amin (int64) int64 1,000 0.0017 0.0008 2.13Γ— 47%
βœ… np.amin (int64) int64 100,000 0.0106 0.0074 1.44Γ— 70%
🟑 np.amin (int64) int64 10,000,000 3.3282 3.5000 0.95Γ— 105%
β–« np.amin (int8) int8 1,000 0.0017 0.0007 2.30Γ— 44%
βœ… np.amin (int8) int8 100,000 0.0028 0.0012 2.38Γ— 42%
🟑 np.amin (int8) int8 10,000,000 0.1435 0.1467 0.98Γ— 102%
β–« np.amin (uint16) uint16 1,000 0.0016 0.0007 2.16Γ— 46%
βœ… np.amin (uint16) uint16 100,000 0.0033 0.0015 2.21Γ— 45%
🟑 np.amin (uint16) uint16 10,000,000 0.3225 0.3309 0.97Γ— 103%
β–« np.amin (uint32) uint32 1,000 0.0016 0.0007 2.30Γ— 44%
βœ… np.amin (uint32) uint32 100,000 0.0044 0.0032 1.36Γ— 74%
βœ… np.amin (uint32) uint32 10,000,000 1.0859 1.0190 1.07Γ— 94%
β–« np.amin (uint64) uint64 1,000 0.0017 0.0008 2.12Γ— 47%
βœ… np.amin (uint64) uint64 100,000 0.0126 0.0097 1.29Γ— 77%
🟑 np.amin (uint64) uint64 10,000,000 3.6037 3.7516 0.96Γ— 104%
β–« np.amin (uint8) uint8 1,000 0.0016 0.0007 2.26Γ— 44%
βœ… np.amin (uint8) uint8 100,000 0.0028 0.0012 2.41Γ— 42%
🟑 np.amin (uint8) uint8 10,000,000 0.1350 0.1465 0.92Γ— 108%
🟑 np.amin axis=0 (complex128) complex128 1,000 0.0029 0.0030 0.99Γ— 101%
🟑 np.amin axis=0 (complex128) complex128 100,000 0.1409 0.1480 0.95Γ— 105%
βœ… np.amin axis=0 (complex128) complex128 10,000,000 15.7182 15.2730 1.03Γ— 97%
βœ… np.amin axis=0 (float16) float16 1,000 0.0040 0.0019 2.11Γ— 47%
🟑 np.amin axis=0 (float16) float16 100,000 0.4771 0.5006 0.95Γ— 105%
🟑 np.amin axis=0 (float16) float16 10,000,000 47.3591 77.6081 0.61Γ— 164%
β–« np.amin axis=0 (float32) float32 1,000 0.0021 0.0008 2.67Γ— 37%
βœ… np.amin axis=0 (float32) float32 100,000 0.0116 0.0098 1.18Γ— 85%
🟑 np.amin axis=0 (float32) float32 10,000,000 1.7252 1.8255 0.94Γ— 106%
β–« np.amin axis=0 (float64) float64 1,000 0.0021 0.0009 2.41Γ— 42%
🟑 np.amin axis=0 (float64) float64 100,000 0.0157 0.0165 0.95Γ— 105%
🟑 np.amin axis=0 (float64) float64 10,000,000 4.0124 4.1873 0.96Γ— 104%
β–« np.amin axis=0 (int16) int16 1,000 0.0020 0.0007 2.90Γ— 34%
βœ… np.amin axis=0 (int16) int16 100,000 0.0065 0.0037 1.74Γ— 58%
βœ… np.amin axis=0 (int16) int16 10,000,000 0.5065 0.3754 1.35Γ— 74%
β–« np.amin axis=0 (int32) int32 1,000 0.0023 0.0007 3.32Γ— 30%
βœ… np.amin axis=0 (int32) int32 100,000 0.0088 0.0055 1.60Γ— 62%
βœ… np.amin axis=0 (int32) int32 10,000,000 2.0366 1.2825 1.59Γ— 63%
β–« np.amin axis=0 (int64) int64 1,000 0.0027 0.0008 3.32Γ— 30%
βœ… np.amin axis=0 (int64) int64 100,000 0.0193 0.0118 1.63Γ— 61%
βœ… np.amin axis=0 (int64) int64 10,000,000 4.3888 3.6438 1.20Γ— 83%
β–« np.amin axis=0 (int8) int8 1,000 0.0019 0.0006 2.99Γ— 33%
βœ… np.amin axis=0 (int8) int8 100,000 0.0077 0.0041 1.88Γ— 53%
βœ… np.amin axis=0 (int8) int8 10,000,000 0.2767 0.1726 1.60Γ— 62%
β–« np.amin axis=0 (uint16) uint16 1,000 0.0020 0.0007 2.98Γ— 34%
βœ… np.amin axis=0 (uint16) uint16 100,000 0.0065 0.0036 1.79Γ— 56%
βœ… np.amin axis=0 (uint16) uint16 10,000,000 0.4421 0.3803 1.16Γ— 86%
β–« np.amin axis=0 (uint32) uint32 1,000 0.0019 0.0007 2.77Γ— 36%
βœ… np.amin axis=0 (uint32) uint32 100,000 0.0084 0.0055 1.53Γ— 65%
βœ… np.amin axis=0 (uint32) uint32 10,000,000 1.8904 1.2875 1.47Γ— 68%
β–« np.amin axis=0 (uint64) uint64 1,000 0.0020 0.0008 2.38Γ— 42%
βœ… np.amin axis=0 (uint64) uint64 100,000 0.0177 0.0137 1.29Γ— 77%
βœ… np.amin axis=0 (uint64) uint64 10,000,000 4.4047 3.8707 1.14Γ— 88%
β–« np.amin axis=0 (uint8) uint8 1,000 0.0019 0.0007 2.86Γ— 35%
βœ… np.amin axis=0 (uint8) uint8 100,000 0.0076 0.0051 1.49Γ— 67%
βœ… np.amin axis=0 (uint8) uint8 10,000,000 0.2090 0.1721 1.22Γ— 82%
βœ… np.argmax (complex128) complex128 1,000 0.0020 0.0018 1.14Γ— 88%
🟑 np.argmax (complex128) complex128 100,000 0.1132 0.1141 0.99Γ— 101%
βœ… np.argmax (complex128) complex128 10,000,000 14.1968 13.5590 1.05Γ— 96%
βœ… np.argmax (float16) float16 1,000 0.0029 0.0021 1.41Γ— 71%
βœ… np.argmax (float16) float16 100,000 0.4331 0.1412 3.07Γ— 33%
βœ… np.argmax (float16) float16 10,000,000 43.8538 14.1652 3.10Γ— 32%
β–« np.argmax (float32) float32 1,000 0.0009 0.0012 0.78Γ— 129%
πŸ”΄ np.argmax (float32) float32 100,000 0.0087 0.0564 0.15Γ— 648%
🟠 np.argmax (float32) float32 10,000,000 2.3137 5.7594 0.40Γ— 249%
β–« np.argmax (float64) float64 1,000 0.0010 0.0012 0.82Γ— 122%
🟠 np.argmax (float64) float64 100,000 0.0193 0.0568 0.34Γ— 294%
🟑 np.argmax (float64) float64 10,000,000 4.1180 6.8003 0.61Γ— 165%
β–« np.argmax (int16) int16 1,000 0.0009 0.0007 1.23Γ— 82%
βœ… np.argmax (int16) int16 100,000 0.0034 0.0017 2.02Γ— 50%
βœ… np.argmax (int16) int16 10,000,000 0.6951 0.3548 1.96Γ— 51%
β–« np.argmax (int32) int32 1,000 0.0009 0.0007 1.23Γ— 82%
βœ… np.argmax (int32) int32 100,000 0.0056 0.0027 2.10Γ— 48%
βœ… np.argmax (int32) int32 10,000,000 1.8979 1.2026 1.58Γ— 63%
β–« np.argmax (int64) int64 1,000 0.0010 0.0009 1.11Γ— 90%
🟑 np.argmax (int64) int64 100,000 0.0146 0.0284 0.51Γ— 195%
🟑 np.argmax (int64) int64 10,000,000 4.1056 4.5513 0.90Γ— 111%
β–« np.argmax (int8) int8 1,000 0.0009 0.0007 1.25Γ— 80%
βœ… np.argmax (int8) int8 100,000 0.0023 0.0012 1.88Γ— 53%
βœ… np.argmax (int8) int8 10,000,000 0.1717 0.1469 1.17Γ— 86%
β–« np.argmax (uint16) uint16 1,000 0.0009 0.0007 1.27Γ— 79%
βœ… np.argmax (uint16) uint16 100,000 0.0049 0.0017 2.96Γ— 34%
βœ… np.argmax (uint16) uint16 10,000,000 0.5085 0.3549 1.43Γ— 70%
β–« np.argmax (uint32) uint32 1,000 0.0009 0.0007 1.30Γ— 77%
βœ… np.argmax (uint32) uint32 100,000 0.0104 0.0036 2.91Γ— 34%
βœ… np.argmax (uint32) uint32 10,000,000 1.8851 1.2169 1.55Γ— 65%
β–« np.argmax (uint64) uint64 1,000 0.0010 0.0009 1.04Γ— 96%
🟑 np.argmax (uint64) uint64 100,000 0.0171 0.0332 0.52Γ— 194%
🟑 np.argmax (uint64) uint64 10,000,000 4.3878 4.9463 0.89Γ— 113%
β–« np.argmax (uint8) uint8 1,000 0.0013 0.0007 1.95Γ— 51%
βœ… np.argmax (uint8) uint8 100,000 0.0032 0.0012 2.60Γ— 38%
βœ… np.argmax (uint8) uint8 10,000,000 0.2246 0.1465 1.53Γ— 65%
βœ… np.argmin (complex128) complex128 1,000 0.0019 0.0015 1.25Γ— 80%
🟑 np.argmin (complex128) complex128 100,000 0.1139 0.1141 1.00Γ— 100%
βœ… np.argmin (complex128) complex128 10,000,000 13.8711 13.6034 1.02Γ— 98%
βœ… np.argmin (float16) float16 1,000 0.0029 0.0020 1.42Γ— 70%
βœ… np.argmin (float16) float16 100,000 0.4248 0.1413 3.01Γ— 33%
βœ… np.argmin (float16) float16 10,000,000 42.5861 14.1619 3.01Γ— 33%
β–« np.argmin (float32) float32 1,000 0.0009 0.0012 0.80Γ— 125%
πŸ”΄ np.argmin (float32) float32 100,000 0.0087 0.0564 0.15Γ— 650%
🟠 np.argmin (float32) float32 10,000,000 2.7401 5.7656 0.47Γ— 210%
β–« np.argmin (float64) float64 1,000 0.0010 0.0012 0.83Γ— 121%
🟠 np.argmin (float64) float64 100,000 0.0276 0.0569 0.48Γ— 206%
🟑 np.argmin (float64) float64 10,000,000 4.2847 6.7686 0.63Γ— 158%
β–« np.argmin (int16) int16 1,000 0.0011 0.0007 1.52Γ— 66%
βœ… np.argmin (int16) int16 100,000 0.0034 0.0016 2.06Γ— 48%
βœ… np.argmin (int16) int16 10,000,000 0.7167 0.3613 1.98Γ— 50%
β–« np.argmin (int32) int32 1,000 0.0010 0.0007 1.38Γ— 73%
βœ… np.argmin (int32) int32 100,000 0.0055 0.0026 2.09Γ— 48%
βœ… np.argmin (int32) int32 10,000,000 1.7646 1.1707 1.51Γ— 66%
β–« np.argmin (int64) int64 1,000 0.0010 0.0009 1.11Γ— 90%
🟑 np.argmin (int64) int64 100,000 0.0142 0.0283 0.50Γ— 199%
🟑 np.argmin (int64) int64 10,000,000 4.0644 4.5666 0.89Γ— 112%
β–« np.argmin (int8) int8 1,000 0.0009 0.0007 1.28Γ— 78%
βœ… np.argmin (int8) int8 100,000 0.0023 0.0012 1.86Γ— 54%
βœ… np.argmin (int8) int8 10,000,000 0.1626 0.1468 1.11Γ— 90%
β–« np.argmin (uint16) uint16 1,000 0.0009 0.0007 1.32Γ— 76%
βœ… np.argmin (uint16) uint16 100,000 0.0050 0.0016 3.04Γ— 33%
βœ… np.argmin (uint16) uint16 10,000,000 0.5632 0.3583 1.57Γ— 64%
β–« np.argmin (uint32) uint32 1,000 0.0010 0.0007 1.36Γ— 73%
βœ… np.argmin (uint32) uint32 100,000 0.0101 0.0035 2.86Γ— 35%
βœ… np.argmin (uint32) uint32 10,000,000 1.8480 1.1772 1.57Γ— 64%
β–« np.argmin (uint64) uint64 1,000 0.0010 0.0009 1.03Γ— 97%
🟑 np.argmin (uint64) uint64 100,000 0.0180 0.0331 0.54Γ— 184%
🟑 np.argmin (uint64) uint64 10,000,000 4.2831 4.9246 0.87Γ— 115%
β–« np.argmin (uint8) uint8 1,000 0.0009 0.0007 1.28Γ— 78%
βœ… np.argmin (uint8) uint8 100,000 0.0033 0.0012 2.70Γ— 37%
βœ… np.argmin (uint8) uint8 10,000,000 0.2237 0.1465 1.53Γ— 66%
🟑 np.cumprod(a) (float16) float16 1,000 0.0061 0.0097 0.63Γ— 159%
🟠 np.cumprod(a) (float16) float16 100,000 0.4103 0.9506 0.43Γ— 232%
🟠 np.cumprod(a) (float16) float16 10,000,000 43.5457 94.2260 0.46Γ— 216%
βœ… np.cumprod(a) (float32) float32 1,000 0.0046 0.0028 1.65Γ— 61%
βœ… np.cumprod(a) (float32) float32 100,000 0.1700 0.1114 1.53Γ— 66%
βœ… np.cumprod(a) (float32) float32 10,000,000 20.8437 10.1707 2.05Γ— 49%
βœ… np.cumprod(a) (float64) float64 1,000 0.0046 0.0034 1.33Γ— 75%
βœ… np.cumprod(a) (float64) float64 100,000 0.1694 0.1446 1.17Γ— 85%
βœ… np.cumprod(a) (float64) float64 10,000,000 25.4983 14.0728 1.81Γ— 55%
🟑 np.cumsum (complex128) complex128 1,000 0.0030 0.0037 0.82Γ— 122%
βœ… np.cumsum (complex128) complex128 100,000 0.3769 0.2333 1.61Γ— 62%
βœ… np.cumsum (complex128) complex128 10,000,000 41.3487 24.9780 1.66Γ— 60%
🟑 np.cumsum (float16) float16 1,000 0.0071 0.0094 0.75Γ— 134%
🟑 np.cumsum (float16) float16 100,000 0.4728 0.9144 0.52Γ— 193%
🟑 np.cumsum (float16) float16 10,000,000 49.3071 90.7463 0.54Γ— 184%
βœ… np.cumsum (float32) float32 1,000 0.0029 0.0018 1.65Γ— 61%
βœ… np.cumsum (float32) float32 100,000 0.1656 0.0789 2.10Γ— 48%
βœ… np.cumsum (float32) float32 10,000,000 20.1855 7.3471 2.75Γ— 36%
βœ… np.cumsum (float64) float64 1,000 0.0028 0.0022 1.31Γ— 76%
βœ… np.cumsum (float64) float64 100,000 0.1698 0.1249 1.36Γ— 74%
βœ… np.cumsum (float64) float64 10,000,000 24.6822 13.3431 1.85Γ— 54%
βœ… np.cumsum (int16) int16 1,000 0.0025 0.0020 1.23Γ— 81%
βœ… np.cumsum (int16) int16 100,000 0.3253 0.1209 2.69Γ— 37%
βœ… np.cumsum (int16) int16 10,000,000 48.4266 10.6129 4.56Γ— 22%
βœ… np.cumsum (int32) int32 1,000 0.0024 0.0019 1.27Γ— 79%
βœ… np.cumsum (int32) int32 100,000 0.3303 0.1226 2.69Γ— 37%
βœ… np.cumsum (int32) int32 10,000,000 32.3880 11.1306 2.91Γ— 34%
🟑 np.cumsum (int64) int64 1,000 0.0017 0.0019 0.92Γ— 109%
🟠 np.cumsum (int64) int64 100,000 0.0315 0.1231 0.26Γ— 391%
βœ… np.cumsum (int64) int64 10,000,000 16.3798 12.7464 1.28Γ— 78%
βœ… np.cumsum (int8) int8 1,000 0.0025 0.0017 1.49Γ— 67%
βœ… np.cumsum (int8) int8 100,000 0.3124 0.1187 2.63Γ— 38%
βœ… np.cumsum (int8) int8 10,000,000 41.0555 10.2543 4.00Γ— 25%
βœ… np.cumsum (uint16) uint16 1,000 0.0026 0.0020 1.26Γ— 80%
βœ… np.cumsum (uint16) uint16 100,000 0.3256 0.1199 2.72Γ— 37%
βœ… np.cumsum (uint16) uint16 10,000,000 34.5917 10.5051 3.29Γ— 30%
βœ… np.cumsum (uint32) uint32 1,000 0.0024 0.0021 1.17Γ— 85%
βœ… np.cumsum (uint32) uint32 100,000 0.3374 0.1227 2.75Γ— 36%
βœ… np.cumsum (uint32) uint32 10,000,000 29.7223 11.0895 2.68Γ— 37%
🟑 np.cumsum (uint64) uint64 1,000 0.0017 0.0020 0.82Γ— 121%
🟠 np.cumsum (uint64) uint64 100,000 0.0312 0.1218 0.26Γ— 391%
βœ… np.cumsum (uint64) uint64 10,000,000 16.2415 12.7570 1.27Γ— 78%
βœ… np.cumsum (uint8) uint8 1,000 0.0025 0.0019 1.27Γ— 79%
βœ… np.cumsum (uint8) uint8 100,000 0.3198 0.1205 2.65Γ— 38%
βœ… np.cumsum (uint8) uint8 10,000,000 28.9566 10.2799 2.82Γ— 36%
β–« np.mean (complex128) complex128 1,000 0.0027 0.0009 2.85Γ— 35%
βœ… np.mean (complex128) complex128 100,000 0.0305 0.0101 3.01Γ— 33%
βœ… np.mean (complex128) complex128 10,000,000 8.5581 6.4565 1.33Γ— 75%
βœ… np.mean (float16) float16 1,000 0.0047 0.0012 3.86Γ— 26%
βœ… np.mean (float16) float16 100,000 0.1088 0.0802 1.36Γ— 74%
βœ… np.mean (float16) float16 10,000,000 10.4935 8.0190 1.31Γ— 76%
β–« np.mean (float32) float32 1,000 0.0040 0.0007 5.42Γ— 18%
βœ… np.mean (float32) float32 100,000 0.0178 0.0032 5.55Γ— 18%
βœ… np.mean (float32) float32 10,000,000 3.6083 1.0039 3.59Γ— 28%
β–« np.mean (float64) float64 1,000 0.0024 0.0007 3.25Γ— 31%
βœ… np.mean (float64) float64 100,000 0.0169 0.0040 4.21Γ— 24%
βœ… np.mean (float64) float64 10,000,000 4.6544 2.7943 1.67Γ— 60%
β–« np.mean (int16) int16 1,000 0.0031 0.0008 3.92Γ— 26%
βœ… np.mean (int16) int16 100,000 0.0532 0.0189 2.81Γ— 36%
βœ… np.mean (int16) int16 10,000,000 6.3750 1.9609 3.25Γ— 31%
β–« np.mean (int32) int32 1,000 0.0030 0.0008 3.71Γ— 27%
βœ… np.mean (int32) int32 100,000 0.0429 0.0191 2.24Γ— 45%
βœ… np.mean (int32) int32 10,000,000 4.9575 2.6752 1.85Γ— 54%
β–« np.mean (int64) int64 1,000 0.0029 0.0008 3.71Γ— 27%
βœ… np.mean (int64) int64 100,000 0.0344 0.0045 7.72Γ— 13%
βœ… np.mean (int64) int64 10,000,000 6.3414 2.7730 2.29Γ— 44%
β–« np.mean (int8) int8 1,000 0.0030 0.0008 3.58Γ— 28%
βœ… np.mean (int8) int8 100,000 0.0567 0.0186 3.04Γ— 33%
βœ… np.mean (int8) int8 10,000,000 5.6945 1.8461 3.08Γ— 32%
β–« np.mean (uint16) uint16 1,000 0.0031 0.0008 3.90Γ— 26%
βœ… np.mean (uint16) uint16 100,000 0.0526 0.0189 2.78Γ— 36%
βœ… np.mean (uint16) uint16 10,000,000 5.1914 1.9498 2.66Γ— 38%
β–« np.mean (uint32) uint32 1,000 0.0030 0.0008 3.70Γ— 27%
βœ… np.mean (uint32) uint32 100,000 0.0402 0.0191 2.11Γ— 47%
βœ… np.mean (uint32) uint32 10,000,000 4.6035 2.6686 1.73Γ— 58%
β–« np.mean (uint64) uint64 1,000 0.0032 0.0008 4.16Γ— 24%
βœ… np.mean (uint64) uint64 100,000 0.0539 0.0045 12.08Γ— 8%
βœ… np.mean (uint64) uint64 10,000,000 7.3769 2.7725 2.66Γ— 38%
β–« np.mean (uint8) uint8 1,000 0.0031 0.0008 3.81Γ— 26%
βœ… np.mean (uint8) uint8 100,000 0.0541 0.0187 2.90Γ— 34%
βœ… np.mean (uint8) uint8 10,000,000 5.0561 1.8459 2.74Γ— 36%
βœ… np.mean axis=0 (complex128) complex128 1,000 0.0033 0.0025 1.30Γ— 77%
βœ… np.mean axis=0 (complex128) complex128 100,000 0.0286 0.0241 1.19Γ— 84%
βœ… np.mean axis=0 (complex128) complex128 10,000,000 7.5298 7.0381 1.07Γ— 94%
βœ… np.mean axis=0 (float16) float16 1,000 0.0061 0.0035 1.75Γ— 57%
🟑 np.mean axis=0 (float16) float16 100,000 0.0790 0.1492 0.53Γ— 189%
🟑 np.mean axis=0 (float16) float16 10,000,000 7.3133 14.1963 0.52Γ— 194%
βœ… np.mean axis=0 (float32) float32 1,000 0.0039 0.0022 1.82Γ— 55%
🟑 np.mean axis=0 (float32) float32 100,000 0.0086 0.0099 0.87Γ— 115%
βœ… np.mean axis=0 (float32) float32 10,000,000 1.4901 1.3911 1.07Γ— 93%
βœ… np.mean axis=0 (float64) float64 1,000 0.0030 0.0023 1.29Γ— 78%
βœ… np.mean axis=0 (float64) float64 100,000 0.0166 0.0148 1.12Γ— 89%
🟑 np.mean axis=0 (float64) float64 10,000,000 3.3836 3.4775 0.97Γ— 103%
β–« np.mean axis=0 (int16) int16 1,000 0.0038 0.0008 4.83Γ— 21%
βœ… np.mean axis=0 (int16) int16 100,000 0.0550 0.0084 6.53Γ— 15%
βœ… np.mean axis=0 (int16) int16 10,000,000 5.3822 0.9630 5.59Γ— 18%
β–« np.mean axis=0 (int32) int32 1,000 0.0044 0.0008 5.78Γ— 17%
βœ… np.mean axis=0 (int32) int32 100,000 0.0359 0.0078 4.60Γ— 22%
βœ… np.mean axis=0 (int32) int32 10,000,000 4.5299 1.7225 2.63Γ— 38%
βœ… np.mean axis=0 (int64) int64 1,000 0.0043 0.0013 3.25Γ— 31%
🟑 np.mean axis=0 (int64) int64 100,000 0.0320 0.0609 0.53Γ— 190%
πŸ”΄ np.mean axis=0 (int64) int64 10,000,000 5.9854 37.4022 0.16Γ— 625%
β–« np.mean axis=0 (int8) int8 1,000 0.0038 0.0008 4.56Γ— 22%
βœ… np.mean axis=0 (int8) int8 100,000 0.0534 0.0082 6.49Γ— 15%
βœ… np.mean axis=0 (int8) int8 10,000,000 6.4497 0.8079 7.98Γ— 12%
β–« np.mean axis=0 (uint16) uint16 1,000 0.0037 0.0007 5.00Γ— 20%
βœ… np.mean axis=0 (uint16) uint16 100,000 0.0516 0.0084 6.10Γ— 16%
βœ… np.mean axis=0 (uint16) uint16 10,000,000 5.8879 0.9392 6.27Γ— 16%
β–« np.mean axis=0 (uint32) uint32 1,000 0.0044 0.0008 5.64Γ— 18%
βœ… np.mean axis=0 (uint32) uint32 100,000 0.0471 0.0093 5.04Γ— 20%
βœ… np.mean axis=0 (uint32) uint32 10,000,000 4.9815 2.0165 2.47Γ— 40%
βœ… np.mean axis=0 (uint64) uint64 1,000 0.0037 0.0017 2.20Γ— 46%
🟑 np.mean axis=0 (uint64) uint64 100,000 0.0479 0.0887 0.54Γ— 185%
πŸ”΄ np.mean axis=0 (uint64) uint64 10,000,000 7.1495 43.0435 0.17Γ— 602%
β–« np.mean axis=0 (uint8) uint8 1,000 0.0039 0.0007 5.20Γ— 19%
βœ… np.mean axis=0 (uint8) uint8 100,000 0.0545 0.0082 6.63Γ— 15%
βœ… np.mean axis=0 (uint8) uint8 10,000,000 5.3637 0.7883 6.80Γ— 15%
βœ… np.mean axis=1 (complex128) complex128 1,000 0.0032 0.0025 1.24Γ— 81%
βœ… np.mean axis=1 (complex128) complex128 100,000 0.0443 0.0348 1.27Γ— 79%
βœ… np.mean axis=1 (complex128) complex128 10,000,000 8.4055 8.0660 1.04Γ— 96%
βœ… np.mean axis=1 (float16) float16 1,000 0.0052 0.0039 1.31Γ— 76%
🟑 np.mean axis=1 (float16) float16 100,000 0.0952 0.1325 0.72Γ— 139%
🟑 np.mean axis=1 (float16) float16 10,000,000 7.9626 12.5326 0.64Γ— 157%
βœ… np.mean axis=1 (float32) float32 1,000 0.0036 0.0022 1.67Γ— 60%
βœ… np.mean axis=1 (float32) float32 100,000 0.0183 0.0127 1.45Γ— 69%
βœ… np.mean axis=1 (float32) float32 10,000,000 2.9697 1.9066 1.56Γ— 64%
βœ… np.mean axis=1 (float64) float64 1,000 0.0029 0.0022 1.33Γ— 75%
βœ… np.mean axis=1 (float64) float64 100,000 0.0198 0.0144 1.37Γ— 73%
βœ… np.mean axis=1 (float64) float64 10,000,000 5.1086 3.6854 1.39Γ— 72%
β–« np.mean axis=1 (int16) int16 1,000 0.0037 0.0008 4.55Γ— 22%
βœ… np.mean axis=1 (int16) int16 100,000 0.0573 0.0080 7.19Γ— 14%
βœ… np.mean axis=1 (int16) int16 10,000,000 6.0592 0.8322 7.28Γ— 14%
β–« np.mean axis=1 (int32) int32 1,000 0.0037 0.0007 5.00Γ— 20%
βœ… np.mean axis=1 (int32) int32 100,000 0.0428 0.0049 8.79Γ— 11%
βœ… np.mean axis=1 (int32) int32 10,000,000 4.8185 1.4394 3.35Γ— 30%
βœ… np.mean axis=1 (int64) int64 1,000 0.0034 0.0013 2.55Γ— 39%
🟑 np.mean axis=1 (int64) int64 100,000 0.0394 0.0596 0.66Γ— 151%
🟑 np.mean axis=1 (int64) int64 10,000,000 6.3625 6.9185 0.92Γ— 109%
β–« np.mean axis=1 (int8) int8 1,000 0.0036 0.0008 4.50Γ— 22%
βœ… np.mean axis=1 (int8) int8 100,000 0.0571 0.0079 7.21Γ— 14%
βœ… np.mean axis=1 (int8) int8 10,000,000 5.5023 0.7110 7.74Γ— 13%
β–« np.mean axis=1 (uint16) uint16 1,000 0.0038 0.0008 4.68Γ— 21%
βœ… np.mean axis=1 (uint16) uint16 100,000 0.0629 0.0080 7.90Γ— 13%
βœ… np.mean axis=1 (uint16) uint16 10,000,000 5.4615 0.8406 6.50Γ— 15%
β–« np.mean axis=1 (uint32) uint32 1,000 0.0034 0.0008 4.12Γ— 24%
βœ… np.mean axis=1 (uint32) uint32 100,000 0.0467 0.0091 5.12Γ— 20%
βœ… np.mean axis=1 (uint32) uint32 10,000,000 4.9555 1.8041 2.75Γ— 36%
βœ… np.mean axis=1 (uint64) uint64 1,000 0.0037 0.0016 2.23Γ— 45%
🟑 np.mean axis=1 (uint64) uint64 100,000 0.0569 0.0860 0.66Γ— 151%
🟑 np.mean axis=1 (uint64) uint64 10,000,000 7.3817 9.0110 0.82Γ— 122%
β–« np.mean axis=1 (uint8) uint8 1,000 0.0035 0.0008 4.50Γ— 22%
βœ… np.mean axis=1 (uint8) uint8 100,000 0.0587 0.0079 7.42Γ— 14%
βœ… np.mean axis=1 (uint8) uint8 10,000,000 5.2924 0.7077 7.48Γ— 13%
βœ… np.nanmax(a) (float16) float16 1,000 0.0054 0.0011 4.87Γ— 21%
βœ… np.nanmax(a) (float16) float16 100,000 0.5409 0.3172 1.71Γ— 59%
βœ… np.nanmax(a) (float16) float16 10,000,000 51.2440 32.5673 1.57Γ— 64%
β–« np.nanmax(a) (float32) float32 1,000 0.0030 0.0009 3.29Γ— 30%
🟠 np.nanmax(a) (float32) float32 100,000 0.0081 0.0287 0.28Γ— 356%
🟠 np.nanmax(a) (float32) float32 10,000,000 1.5124 3.2798 0.46Γ— 217%
βœ… np.nanmax(a) (float64) float64 1,000 0.0030 0.0012 2.52Γ— 40%
πŸ”΄ np.nanmax(a) (float64) float64 100,000 0.0115 0.0590 0.20Γ— 512%
🟑 np.nanmax(a) (float64) float64 10,000,000 3.5081 6.8740 0.51Γ— 196%
βœ… np.nanmean(a) (float16) float16 1,000 0.0127 0.0017 7.37Γ— 14%
βœ… np.nanmean(a) (float16) float16 100,000 0.3723 0.1054 3.53Γ— 28%
βœ… np.nanmean(a) (float16) float16 10,000,000 37.8624 10.5382 3.59Γ— 28%
β–« np.nanmean(a) (float32) float32 1,000 0.0102 0.0008 12.61Γ— 8%
βœ… np.nanmean(a) (float32) float32 100,000 0.0751 0.0383 1.96Γ— 51%
βœ… np.nanmean(a) (float32) float32 10,000,000 19.3182 4.1701 4.63Γ— 22%
βœ… np.nanmean(a) (float64) float64 1,000 0.0088 0.0012 7.49Γ— 13%
βœ… np.nanmean(a) (float64) float64 100,000 0.3101 0.0378 8.21Γ— 12%
βœ… np.nanmean(a) (float64) float64 10,000,000 29.7719 5.5602 5.35Γ— 19%
βœ… np.nanmedian(a) (float16) float16 1,000 0.0171 0.0043 3.93Γ— 26%
🟑 np.nanmedian(a) (float16) float16 100,000 0.9889 1.3085 0.76Γ— 132%
βœ… np.nanmedian(a) (float16) float16 10,000,000 114.7082 92.8901 1.24Γ— 81%
βœ… np.nanmedian(a) (float32) float32 1,000 0.0132 0.0022 5.94Γ— 17%
🟑 np.nanmedian(a) (float32) float32 100,000 0.4888 0.6965 0.70Γ— 142%
🟑 np.nanmedian(a) (float32) float32 10,000,000 77.3793 80.5553 0.96Γ— 104%
βœ… np.nanmedian(a) (float64) float64 1,000 0.0127 0.0023 5.54Γ— 18%
🟑 np.nanmedian(a) (float64) float64 100,000 0.5210 0.7022 0.74Γ— 135%
βœ… np.nanmedian(a) (float64) float64 10,000,000 92.4864 89.4458 1.03Γ— 97%
βœ… np.nanmin(a) (float16) float16 1,000 0.0053 0.0011 4.77Γ— 21%
βœ… np.nanmin(a) (float16) float16 100,000 0.5322 0.3019 1.76Γ— 57%
βœ… np.nanmin(a) (float16) float16 10,000,000 51.4324 31.1142 1.65Γ— 60%
β–« np.nanmin(a) (float32) float32 1,000 0.0030 0.0009 3.24Γ— 31%
🟠 np.nanmin(a) (float32) float32 100,000 0.0072 0.0287 0.25Γ— 400%
🟠 np.nanmin(a) (float32) float32 10,000,000 1.5001 3.3155 0.45Γ— 221%
β–« np.nanmin(a) (float64) float64 1,000 0.0042 0.0009 4.51Γ— 22%
πŸ”΄ np.nanmin(a) (float64) float64 100,000 0.0114 0.0589 0.19Γ— 519%
🟑 np.nanmin(a) (float64) float64 10,000,000 3.6863 6.8141 0.54Γ— 185%
βœ… np.nanpercentile(a, 50) (float16) float16 1,000 0.0365 0.0043 8.45Γ— 12%
βœ… np.nanpercentile(a, 50) (float16) float16 100,000 1.8857 1.3044 1.45Γ— 69%
βœ… np.nanpercentile(a, 50) (float16) float16 10,000,000 120.9498 92.9097 1.30Γ— 77%
βœ… np.nanpercentile(a, 50) (float32) float32 1,000 0.0267 0.0022 11.99Γ— 8%
βœ… np.nanpercentile(a, 50) (float32) float32 100,000 0.7602 0.6960 1.09Γ— 92%
🟑 np.nanpercentile(a, 50) (float32) float32 10,000,000 51.8789 80.6571 0.64Γ— 156%
βœ… np.nanpercentile(a, 50) (float64) float64 1,000 0.0265 0.0023 11.56Γ— 9%
βœ… np.nanpercentile(a, 50) (float64) float64 100,000 0.7628 0.7034 1.08Γ— 92%
🟑 np.nanpercentile(a, 50) (float64) float64 10,000,000 63.5626 89.5666 0.71Γ— 141%
βœ… np.nanprod(a) (float16) float16 1,000 0.0061 0.0013 4.73Γ— 21%
βœ… np.nanprod(a) (float16) float16 100,000 0.1701 0.0886 1.92Γ— 52%
βœ… np.nanprod(a) (float16) float16 10,000,000 20.5179 8.9271 2.30Γ— 44%
β–« np.nanprod(a) (float32) float32 1,000 0.0052 0.0008 6.31Γ— 16%
βœ… np.nanprod(a) (float32) float32 100,000 0.1604 0.0119 13.53Γ— 7%
βœ… np.nanprod(a) (float32) float32 10,000,000 18.0353 1.7540 10.28Γ— 10%
β–« np.nanprod(a) (float64) float64 1,000 0.0055 0.0008 6.96Γ— 14%
βœ… np.nanprod(a) (float64) float64 100,000 0.1079 0.0235 4.60Γ— 22%
βœ… np.nanprod(a) (float64) float64 10,000,000 28.6688 3.9531 7.25Γ— 14%
βœ… np.nanquantile(a, 0.5) (float16) float16 1,000 0.0336 0.0043 7.73Γ— 13%
βœ… np.nanquantile(a, 0.5) (float16) float16 100,000 1.8626 1.3071 1.43Γ— 70%
βœ… np.nanquantile(a, 0.5) (float16) float16 10,000,000 121.1817 92.8534 1.30Γ— 77%
βœ… np.nanquantile(a, 0.5) (float32) float32 1,000 0.0280 0.0022 12.60Γ— 8%
βœ… np.nanquantile(a, 0.5) (float32) float32 100,000 0.7231 0.6973 1.04Γ— 96%
🟑 np.nanquantile(a, 0.5) (float32) float32 10,000,000 51.1057 80.6773 0.63Γ— 158%
βœ… np.nanquantile(a, 0.5) (float64) float64 1,000 0.0257 0.0023 11.24Γ— 9%
βœ… np.nanquantile(a, 0.5) (float64) float64 100,000 0.7484 0.7037 1.06Γ— 94%
🟑 np.nanquantile(a, 0.5) (float64) float64 10,000,000 64.0584 89.4386 0.72Γ— 140%
βœ… np.nanstd(a) (float16) float16 1,000 0.0341 0.0028 12.26Γ— 8%
βœ… np.nanstd(a) (float16) float16 100,000 1.2279 0.2159 5.69Γ— 18%
βœ… np.nanstd(a) (float16) float16 10,000,000 119.9407 21.6231 5.55Γ— 18%
βœ… np.nanstd(a) (float32) float32 1,000 0.0202 0.0017 11.92Γ— 8%
βœ… np.nanstd(a) (float32) float32 100,000 0.1683 0.0864 1.95Γ— 51%
βœ… np.nanstd(a) (float32) float32 10,000,000 31.9536 9.2060 3.47Γ— 29%
βœ… np.nanstd(a) (float64) float64 1,000 0.0190 0.0015 12.52Γ— 8%
βœ… np.nanstd(a) (float64) float64 100,000 0.4497 0.0761 5.91Γ— 17%
βœ… np.nanstd(a) (float64) float64 10,000,000 49.6062 11.3264 4.38Γ— 23%
βœ… np.nansum(a) (float16) float16 1,000 0.0063 0.0013 4.84Γ— 21%
βœ… np.nansum(a) (float16) float16 100,000 0.2885 0.0901 3.20Γ— 31%
βœ… np.nansum(a) (float16) float16 10,000,000 31.6077 8.9086 3.55Γ— 28%
β–« np.nansum(a) (float32) float32 1,000 0.0037 0.0008 4.83Γ— 21%
βœ… np.nansum(a) (float32) float32 100,000 0.0321 0.0049 6.51Γ— 15%
βœ… np.nansum(a) (float32) float32 10,000,000 13.3987 1.4131 9.48Γ— 10%
β–« np.nansum(a) (float64) float64 1,000 0.0037 0.0008 4.61Γ— 22%
βœ… np.nansum(a) (float64) float64 100,000 0.0471 0.0097 4.88Γ— 20%
βœ… np.nansum(a) (float64) float64 10,000,000 23.8754 3.4851 6.85Γ— 15%
βœ… np.nanvar(a) (float16) float16 1,000 0.0324 0.0028 11.72Γ— 8%
βœ… np.nanvar(a) (float16) float16 100,000 1.2270 0.2160 5.68Γ— 18%
βœ… np.nanvar(a) (float16) float16 10,000,000 120.0573 21.5187 5.58Γ— 18%
βœ… np.nanvar(a) (float32) float32 1,000 0.0195 0.0017 11.49Γ— 9%
βœ… np.nanvar(a) (float32) float32 100,000 0.1645 0.0864 1.90Γ— 52%
βœ… np.nanvar(a) (float32) float32 10,000,000 32.0612 9.2119 3.48Γ— 29%
βœ… np.nanvar(a) (float64) float64 1,000 0.0198 0.0015 13.06Γ— 8%
βœ… np.nanvar(a) (float64) float64 100,000 0.4356 0.0762 5.72Γ— 18%
βœ… np.nanvar(a) (float64) float64 10,000,000 51.1759 11.2532 4.55Γ— 22%
β–« np.prod (float64) float64 1,000 0.0022 0.0008 2.89Γ— 35%
βœ… np.prod (float64) float64 100,000 2.3310 0.1700 13.71Γ— 7%
βœ… np.prod (float64) float64 10,000,000 239.6474 60.4092 3.97Γ— 25%
β–« np.prod (int64) int64 1,000 0.0021 0.0007 2.87Γ— 35%
βœ… np.prod (int64) int64 100,000 0.0572 0.0143 4.00Γ— 25%
βœ… np.prod (int64) int64 10,000,000 6.3161 3.8044 1.66Γ— 60%
β–« np.prod axis=0 (float64) float64 1,000 0.0019 0.0007 2.75Γ— 36%
βœ… np.prod axis=0 (float64) float64 100,000 0.0136 0.0089 1.54Γ— 65%
🟑 np.prod axis=0 (float64) float64 10,000,000 19.8072 19.8419 1.00Γ— 100%
β–« np.prod axis=0 (int64) int64 1,000 0.0020 0.0009 2.24Γ— 45%
βœ… np.prod axis=0 (int64) int64 100,000 0.0272 0.0152 1.79Γ— 56%
βœ… np.prod axis=0 (int64) int64 10,000,000 5.0107 4.1147 1.22Γ— 82%
β–« np.prod axis=1 (float64) float64 1,000 0.0019 0.0008 2.47Γ— 40%
βœ… np.prod axis=1 (float64) float64 100,000 0.0601 0.0050 12.13Γ— 8%
β–« np.prod axis=1 (float64) float64 10,000,000 69.9249 3.0274 23.10Γ— 4%
β–« np.prod axis=1 (int64) int64 1,000 0.0019 0.0010 1.96Γ— 51%
βœ… np.prod axis=1 (int64) int64 100,000 0.0458 0.0171 2.68Γ— 37%
βœ… np.prod axis=1 (int64) int64 10,000,000 6.2759 3.9188 1.60Γ— 62%
βœ… np.std (float16) float16 1,000 0.0203 0.0021 9.63Γ— 10%
βœ… np.std (float16) float16 100,000 0.9085 0.1830 4.96Γ— 20%
βœ… np.std (float16) float16 10,000,000 90.8149 18.0508 5.03Γ— 20%
β–« np.std (float32) float32 1,000 0.0086 0.0007 12.74Γ— 8%
βœ… np.std (float32) float32 100,000 0.0450 0.0096 4.67Γ— 21%
βœ… np.std (float32) float32 10,000,000 17.8322 2.6281 6.79Γ— 15%
β–« np.std (float64) float64 1,000 0.0068 0.0004 15.61Γ— 6%
βœ… np.std (float64) float64 100,000 0.0570 0.0190 3.00Γ— 33%
βœ… np.std (float64) float64 10,000,000 30.3403 6.6087 4.59Γ— 22%
βœ… np.std axis=0 (float16) float16 1,000 0.0214 0.0045 4.78Γ— 21%
βœ… np.std axis=0 (float16) float16 100,000 1.1043 0.3567 3.10Γ— 32%
βœ… np.std axis=0 (float16) float16 10,000,000 110.0006 83.8826 1.31Γ— 76%
βœ… np.std axis=0 (float32) float32 1,000 0.0087 0.0016 5.57Γ— 18%
βœ… np.std axis=0 (float32) float32 100,000 0.0377 0.0231 1.63Γ— 61%
βœ… np.std axis=0 (float32) float32 10,000,000 14.2545 4.6258 3.08Γ— 32%
β–« np.std axis=0 (float64) float64 1,000 0.0076 0.0009 8.36Γ— 12%
βœ… np.std axis=0 (float64) float64 100,000 0.0637 0.0263 2.42Γ— 41%
βœ… np.std axis=0 (float64) float64 10,000,000 30.0409 7.5189 4.00Γ— 25%
β–« np.sum (complex128) complex128 1,000 0.0018 0.0009 2.02Γ— 50%
βœ… np.sum (complex128) complex128 100,000 0.0294 0.0101 2.91Γ— 34%
βœ… np.sum (complex128) complex128 10,000,000 8.9925 6.4940 1.39Γ— 72%
βœ… np.sum (float16) float16 1,000 0.0040 0.0012 3.33Γ— 30%
βœ… np.sum (float16) float16 100,000 0.1981 0.0802 2.47Γ— 40%
βœ… np.sum (float16) float16 10,000,000 19.9449 8.0365 2.48Γ— 40%
β–« np.sum (float32) float32 1,000 0.0017 0.0008 2.26Γ— 44%
βœ… np.sum (float32) float32 100,000 0.0171 0.0032 5.40Γ— 18%
βœ… np.sum (float32) float32 10,000,000 3.0579 1.0257 2.98Γ— 34%
β–« np.sum (float64) float64 1,000 0.0017 0.0008 2.24Γ— 45%
πŸ”΄ np.sum (float64) float64 100,000 0.0166 0.2090 0.079Γ— 1260%
βœ… np.sum (float64) float64 10,000,000 4.8117 2.8908 1.66Γ— 60%
β–« np.sum (int16) int16 1,000 0.0020 0.0008 2.55Γ— 39%
βœ… np.sum (int16) int16 100,000 0.0339 0.0189 1.79Γ— 56%
βœ… np.sum (int16) int16 10,000,000 3.5547 1.9468 1.83Γ— 55%
β–« np.sum (int32) int32 1,000 0.0023 0.0008 2.85Γ— 35%
βœ… np.sum (int32) int32 100,000 0.0345 0.0190 1.82Γ— 55%
βœ… np.sum (int32) int32 10,000,000 4.7348 2.6909 1.76Γ— 57%
β–« np.sum (int64) int64 1,000 0.0018 0.0008 2.27Γ— 44%
βœ… np.sum (int64) int64 100,000 0.0153 0.0045 3.42Γ— 29%
βœ… np.sum (int64) int64 10,000,000 4.1490 2.8310 1.47Γ— 68%
β–« np.sum (int8) int8 1,000 0.0022 0.0008 2.77Γ— 36%
βœ… np.sum (int8) int8 100,000 0.0342 0.0186 1.84Γ— 54%
βœ… np.sum (int8) int8 10,000,000 3.2333 1.8404 1.76Γ— 57%
β–« np.sum (uint16) uint16 1,000 0.0022 0.0008 2.84Γ— 35%
βœ… np.sum (uint16) uint16 100,000 0.0334 0.0189 1.77Γ— 57%
βœ… np.sum (uint16) uint16 10,000,000 3.7579 1.9368 1.94Γ— 52%
β–« np.sum (uint32) uint32 1,000 0.0023 0.0008 2.83Γ— 35%
βœ… np.sum (uint32) uint32 100,000 0.0332 0.0190 1.75Γ— 57%
βœ… np.sum (uint32) uint32 10,000,000 4.0560 2.6922 1.51Γ— 66%
β–« np.sum (uint64) uint64 1,000 0.0018 0.0008 2.28Γ— 44%
βœ… np.sum (uint64) uint64 100,000 0.0200 0.0044 4.52Γ— 22%
βœ… np.sum (uint64) uint64 10,000,000 4.2549 2.9226 1.46Γ— 69%
β–« np.sum (uint8) uint8 1,000 0.0024 0.0008 3.07Γ— 32%
βœ… np.sum (uint8) uint8 100,000 0.0348 0.0186 1.87Γ— 54%
βœ… np.sum (uint8) uint8 10,000,000 3.2589 1.8460 1.76Γ— 57%
βœ… np.sum axis=0 (complex128) complex128 1,000 0.0020 0.0017 1.16Γ— 86%
βœ… np.sum axis=0 (complex128) complex128 100,000 0.0309 0.0204 1.51Γ— 66%
βœ… np.sum axis=0 (complex128) complex128 10,000,000 7.4501 7.3478 1.01Γ— 99%
βœ… np.sum axis=0 (float16) float16 1,000 0.0053 0.0040 1.32Γ— 76%
βœ… np.sum axis=0 (float16) float16 100,000 0.2950 0.1473 2.00Γ— 50%
βœ… np.sum axis=0 (float16) float16 10,000,000 29.0440 14.1979 2.05Γ— 49%
βœ… np.sum axis=0 (float32) float32 1,000 0.0022 0.0019 1.18Γ— 85%
βœ… np.sum axis=0 (float32) float32 100,000 0.0083 0.0080 1.04Γ— 96%
βœ… np.sum axis=0 (float32) float32 10,000,000 1.8895 1.3370 1.41Γ— 71%
βœ… np.sum axis=0 (float64) float64 1,000 0.0020 0.0019 1.03Γ— 97%
βœ… np.sum axis=0 (float64) float64 100,000 0.0142 0.0115 1.23Γ— 81%
βœ… np.sum axis=0 (float64) float64 10,000,000 3.4762 3.4200 1.02Γ— 98%
β–« np.sum axis=0 (int16) int16 1,000 0.0025 0.0009 2.70Γ— 37%
βœ… np.sum axis=0 (int16) int16 100,000 0.0474 0.0047 10.08Γ— 10%
βœ… np.sum axis=0 (int16) int16 10,000,000 5.0614 0.5369 9.43Γ— 11%
β–« np.sum axis=0 (int32) int32 1,000 0.0028 0.0007 3.80Γ— 26%
βœ… np.sum axis=0 (int32) int32 100,000 0.0485 0.0086 5.62Γ— 18%
βœ… np.sum axis=0 (int32) int32 10,000,000 5.6694 1.8929 3.00Γ— 33%
β–« np.sum axis=0 (int64) int64 1,000 0.0020 0.0007 2.74Γ— 36%
βœ… np.sum axis=0 (int64) int64 100,000 0.0278 0.0104 2.67Γ— 37%
βœ… np.sum axis=0 (int64) int64 10,000,000 5.6011 3.2402 1.73Γ— 58%
β–« np.sum axis=0 (int8) int8 1,000 0.0024 0.0009 2.52Γ— 40%
βœ… np.sum axis=0 (int8) int8 100,000 0.0474 0.0044 10.75Γ— 9%
βœ… np.sum axis=0 (int8) int8 10,000,000 4.6440 0.5247 8.85Γ— 11%
β–« np.sum axis=0 (uint16) uint16 1,000 0.0025 0.0009 2.71Γ— 37%
βœ… np.sum axis=0 (uint16) uint16 100,000 0.0479 0.0053 9.02Γ— 11%
βœ… np.sum axis=0 (uint16) uint16 10,000,000 4.7415 0.6972 6.80Γ— 15%
β–« np.sum axis=0 (uint32) uint32 1,000 0.0028 0.0007 3.86Γ— 26%
βœ… np.sum axis=0 (uint32) uint32 100,000 0.0506 0.0086 5.87Γ— 17%
βœ… np.sum axis=0 (uint32) uint32 10,000,000 5.5471 1.7971 3.09Γ— 32%
β–« np.sum axis=0 (uint64) uint64 1,000 0.0020 0.0007 2.73Γ— 37%
βœ… np.sum axis=0 (uint64) uint64 100,000 0.0274 0.0104 2.64Γ— 38%
βœ… np.sum axis=0 (uint64) uint64 10,000,000 5.1406 3.2350 1.59Γ— 63%
β–« np.sum axis=0 (uint8) uint8 1,000 0.0026 0.0009 2.85Γ— 35%
βœ… np.sum axis=0 (uint8) uint8 100,000 0.0513 0.0044 11.69Γ— 9%
βœ… np.sum axis=0 (uint8) uint8 10,000,000 4.5577 0.5260 8.66Γ— 12%
βœ… np.sum axis=1 (complex128) complex128 1,000 0.0021 0.0018 1.17Γ— 86%
βœ… np.sum axis=1 (complex128) complex128 100,000 0.0340 0.0306 1.11Γ— 90%
βœ… np.sum axis=1 (complex128) complex128 10,000,000 9.2453 8.6134 1.07Γ— 93%
βœ… np.sum axis=1 (float16) float16 1,000 0.0039 0.0038 1.04Γ— 96%
βœ… np.sum axis=1 (float16) float16 100,000 0.1987 0.1303 1.52Γ— 66%
βœ… np.sum axis=1 (float16) float16 10,000,000 19.7912 12.4799 1.59Γ— 63%
βœ… np.sum axis=1 (float32) float32 1,000 0.0030 0.0019 1.53Γ— 65%
βœ… np.sum axis=1 (float32) float32 100,000 0.0162 0.0104 1.55Γ— 64%
βœ… np.sum axis=1 (float32) float32 10,000,000 3.3850 1.8916 1.79Γ— 56%
βœ… np.sum axis=1 (float64) float64 1,000 0.0019 0.0016 1.21Γ— 83%
βœ… np.sum axis=1 (float64) float64 100,000 0.0200 0.0127 1.58Γ— 63%
βœ… np.sum axis=1 (float64) float64 10,000,000 5.1036 3.6624 1.39Γ— 72%
β–« np.sum axis=1 (int16) int16 1,000 0.0023 0.0007 3.51Γ— 28%
βœ… np.sum axis=1 (int16) int16 100,000 0.0376 0.0038 9.79Γ— 10%
βœ… np.sum axis=1 (int16) int16 10,000,000 3.6422 0.4546 8.01Γ— 12%
β–« np.sum axis=1 (int32) int32 1,000 0.0025 0.0007 3.66Γ— 27%
βœ… np.sum axis=1 (int32) int32 100,000 0.0396 0.0053 7.49Γ— 13%
βœ… np.sum axis=1 (int32) int32 10,000,000 4.2337 1.6246 2.61Γ— 38%
β–« np.sum axis=1 (int64) int64 1,000 0.0019 0.0007 2.60Γ— 38%
βœ… np.sum axis=1 (int64) int64 100,000 0.0175 0.0075 2.33Γ— 43%
βœ… np.sum axis=1 (int64) int64 10,000,000 4.7220 2.8722 1.64Γ— 61%
β–« np.sum axis=1 (int8) int8 1,000 0.0023 0.0007 3.54Γ— 28%
βœ… np.sum axis=1 (int8) int8 100,000 0.0379 0.0039 9.63Γ— 10%
βœ… np.sum axis=1 (int8) int8 10,000,000 3.5111 0.2640 13.30Γ— 8%
β–« np.sum axis=1 (uint16) uint16 1,000 0.0027 0.0008 3.44Γ— 29%
βœ… np.sum axis=1 (uint16) uint16 100,000 0.0375 0.0037 10.00Γ— 10%
βœ… np.sum axis=1 (uint16) uint16 10,000,000 3.8775 0.4583 8.46Γ— 12%
β–« np.sum axis=1 (uint32) uint32 1,000 0.0026 0.0007 3.63Γ— 28%
βœ… np.sum axis=1 (uint32) uint32 100,000 0.0413 0.0053 7.79Γ— 13%
βœ… np.sum axis=1 (uint32) uint32 10,000,000 4.2817 1.6385 2.61Γ— 38%
β–« np.sum axis=1 (uint64) uint64 1,000 0.0019 0.0007 2.69Γ— 37%
βœ… np.sum axis=1 (uint64) uint64 100,000 0.0173 0.0075 2.30Γ— 44%
βœ… np.sum axis=1 (uint64) uint64 10,000,000 4.6457 2.8809 1.61Γ— 62%
β–« np.sum axis=1 (uint8) uint8 1,000 0.0025 0.0007 3.81Γ— 26%
βœ… np.sum axis=1 (uint8) uint8 100,000 0.0402 0.0038 10.47Γ— 10%
βœ… np.sum axis=1 (uint8) uint8 10,000,000 3.2063 0.2647 12.11Γ— 8%
βœ… np.var (float16) float16 1,000 0.0200 0.0021 9.51Γ— 10%
βœ… np.var (float16) float16 100,000 0.9060 0.1822 4.97Γ— 20%
βœ… np.var (float16) float16 10,000,000 91.4660 18.1038 5.05Γ— 20%
β–« np.var (float32) float32 1,000 0.0083 0.0007 11.92Γ— 8%
βœ… np.var (float32) float32 100,000 0.0451 0.0096 4.69Γ— 21%
βœ… np.var (float32) float32 10,000,000 17.1259 2.6208 6.54Γ— 15%
β–« np.var (float64) float64 1,000 0.0067 0.0008 8.40Γ— 12%
βœ… np.var (float64) float64 100,000 0.0573 0.0191 3.00Γ— 33%
βœ… np.var (float64) float64 10,000,000 30.5902 6.6728 4.58Γ— 22%
βœ… np.var axis=0 (float16) float16 1,000 0.0200 0.0044 4.51Γ— 22%
βœ… np.var axis=0 (float16) float16 100,000 1.1366 0.3566 3.19Γ— 31%
βœ… np.var axis=0 (float16) float16 10,000,000 109.8825 83.9268 1.31Γ— 76%
βœ… np.var axis=0 (float32) float32 1,000 0.0086 0.0017 5.19Γ— 19%
βœ… np.var axis=0 (float32) float32 100,000 0.0371 0.0226 1.64Γ— 61%
βœ… np.var axis=0 (float32) float32 10,000,000 14.0847 4.7475 2.97Γ— 34%
β–« np.var axis=0 (float64) float64 1,000 0.0075 0.0009 7.97Γ— 12%
βœ… np.var axis=0 (float64) float64 100,000 0.0680 0.0252 2.70Γ— 37%
βœ… np.var axis=0 (float64) float64 10,000,000 28.5127 7.5344 3.78Γ— 26%

Broadcasting

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
βšͺ matrix + col_vector (N,M)+(N,1) float64 1,000 0.0013 - - -
βšͺ matrix + col_vector (N,M)+(N,1) float64 100,000 0.1968 - - -
βœ… matrix + col_vector (N,M)+(N,1) float64 10,000,000 16.0261 13.9778 1.15Γ— 87%
βšͺ matrix + row_vector (N,M)+(M,) float64 1,000 0.0012 - - -
βšͺ matrix + row_vector (N,M)+(M,) float64 100,000 0.1942 - - -
βœ… matrix + row_vector (N,M)+(M,) float64 10,000,000 16.3420 13.3161 1.23Γ— 82%
βšͺ matrix + scalar float64 1,000 0.0007 - - -
βšͺ matrix + scalar float64 100,000 0.0142 - - -
βœ… matrix + scalar float64 10,000,000 15.6849 13.5809 1.16Γ— 87%
βšͺ np.broadcast_to(row, (N,M)) float64 1,000 0.0018 - - -
βšͺ np.broadcast_to(row, (N,M)) float64 100,000 0.0021 - - -
β–« np.broadcast_to(row, (N,M)) float64 10,000,000 0.0018 0.0006 3.22Γ— 31%

Creation

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
β–« np.copy (float32) float32 1,000 0.0006 0.0117 0.050Γ— 1983%
🟑 np.copy (float32) float32 100,000 0.0061 0.0071 0.86Γ— 117%
βœ… np.copy (float32) float32 10,000,000 6.4782 1.8708 3.46Γ— 29%
β–« np.copy (float64) float64 1,000 0.0006 0.0198 0.031Γ— 3272%
🟑 np.copy (float64) float64 100,000 0.0113 0.0135 0.83Γ— 120%
βœ… np.copy (float64) float64 10,000,000 13.0404 12.7447 1.02Γ— 98%
β–« np.copy (int32) int32 1,000 0.0006 0.0116 0.051Γ— 1958%
🟑 np.copy (int32) int32 100,000 0.0060 0.0069 0.88Γ— 114%
βœ… np.copy (int32) int32 10,000,000 6.3440 1.8390 3.45Γ— 29%
β–« np.copy (int64) int64 1,000 0.0006 0.0133 0.046Γ— 2177%
🟑 np.copy (int64) int64 100,000 0.0115 0.0140 0.82Γ— 122%
βœ… np.copy (int64) int64 10,000,000 13.2030 12.7437 1.04Γ— 96%
β–« np.empty (float32) float32 1,000 0.0003 0.0085 0.039Γ— 2532%
β–« np.empty (float32) float32 100,000 0.0003 0.0141 0.024Γ— 4090%
🟑 np.empty (float32) float32 10,000,000 0.0087 0.0143 0.61Γ— 165%
β–« np.empty (float64) float64 1,000 0.0005 0.0139 0.038Γ— 2598%
β–« np.empty (float64) float64 100,000 0.0003 0.0140 0.021Γ— 4722%
🟑 np.empty (float64) float64 10,000,000 0.0080 0.0138 0.58Γ— 172%
β–« np.empty (int32) int32 1,000 0.0003 0.0089 0.038Γ— 2635%
β–« np.empty (int32) int32 100,000 0.0003 0.0133 0.026Γ— 3857%
🟑 np.empty (int32) int32 10,000,000 0.0108 0.0140 0.77Γ— 130%
β–« np.empty (int64) int64 1,000 0.0003 0.0150 0.021Γ— 4695%
β–« np.empty (int64) int64 100,000 0.0003 0.0152 0.022Γ— 4622%
🟑 np.empty (int64) int64 10,000,000 0.0119 0.0141 0.85Γ— 118%
β–« np.full (float32) float32 1,000 0.0010 0.0117 0.084Γ— 1196%
🟠 np.full (float32) float32 100,000 0.0053 0.0126 0.42Γ— 239%
βœ… np.full (float32) float32 10,000,000 7.3482 1.8309 4.01Γ— 25%
β–« np.full (float64) float64 1,000 0.0010 0.0142 0.068Γ— 1466%
🟑 np.full (float64) float64 100,000 0.0098 0.0148 0.66Γ— 151%
βœ… np.full (float64) float64 10,000,000 14.6927 12.3279 1.19Γ— 84%
β–« np.full (int32) int32 1,000 0.0009 0.0104 0.088Γ— 1138%
🟠 np.full (int32) int32 100,000 0.0054 0.0123 0.44Γ— 228%
βœ… np.full (int32) int32 10,000,000 7.3322 1.9121 3.83Γ— 26%
β–« np.full (int64) int64 1,000 0.0009 0.0135 0.064Γ— 1571%
🟑 np.full (int64) int64 100,000 0.0098 0.0150 0.65Γ— 153%
βœ… np.full (int64) int64 10,000,000 14.7304 12.3185 1.20Γ— 84%
β–« np.ones (float32) float32 1,000 0.0010 0.0094 0.10Γ— 953%
🟠 np.ones (float32) float32 100,000 0.0054 0.0124 0.43Γ— 232%
βœ… np.ones (float32) float32 10,000,000 7.3143 1.8034 4.06Γ— 25%
β–« np.ones (float64) float64 1,000 0.0009 0.0119 0.073Γ— 1370%
🟑 np.ones (float64) float64 100,000 0.0098 0.0150 0.66Γ— 152%
βœ… np.ones (float64) float64 10,000,000 14.5911 12.4361 1.17Γ— 85%
β–« np.ones (int32) int32 1,000 0.0009 0.0111 0.080Γ— 1257%
🟠 np.ones (int32) int32 100,000 0.0053 0.0124 0.43Γ— 234%
βœ… np.ones (int32) int32 10,000,000 7.1344 2.0772 3.44Γ— 29%
β–« np.ones (int64) int64 1,000 0.0009 0.0145 0.059Γ— 1685%
🟑 np.ones (int64) int64 100,000 0.0099 0.0148 0.67Γ— 149%
βœ… np.ones (int64) int64 10,000,000 14.7038 12.3182 1.19Γ— 84%
β–« np.zeros (float32) float32 1,000 0.0004 0.0107 0.039Γ— 2555%
βœ… np.zeros (float32) float32 100,000 0.0048 0.0020 2.37Γ— 42%
βœ… np.zeros (float32) float32 10,000,000 0.0090 0.0020 4.51Γ— 22%
β–« np.zeros (float64) float64 1,000 0.0004 0.0137 0.026Γ— 3875%
βœ… np.zeros (float64) float64 100,000 0.0093 0.0026 3.62Γ— 28%
βœ… np.zeros (float64) float64 10,000,000 0.0083 0.0022 3.70Γ— 27%
β–« np.zeros (int32) int32 1,000 0.0004 0.0107 0.036Γ— 2816%
βœ… np.zeros (int32) int32 100,000 0.0049 0.0020 2.45Γ— 41%
βœ… np.zeros (int32) int32 10,000,000 0.0111 0.0065 1.71Γ— 58%
β–« np.zeros (int64) int64 1,000 0.0004 0.0140 0.027Γ— 3638%
βœ… np.zeros (int64) int64 100,000 0.0094 0.0026 3.70Γ— 27%
βœ… np.zeros (int64) int64 10,000,000 0.0114 0.0057 1.99Γ— 50%
πŸ”΄ np.zeros_like (float32) float32 1,000 0.0011 0.0091 0.12Γ— 861%
βœ… np.zeros_like (float32) float32 100,000 0.0055 0.0021 2.63Γ— 38%
β–« np.zeros_like (float32) float32 10,000,000 7.1806 0.0021 3422.48Γ— 0%
πŸ”΄ np.zeros_like (float64) float64 1,000 0.0012 0.0135 0.092Γ— 1086%
βœ… np.zeros_like (float64) float64 100,000 0.0099 0.0027 3.70Γ— 27%
β–« np.zeros_like (float64) float64 10,000,000 14.8132 0.0023 6363.47Γ— 0%
πŸ”΄ np.zeros_like (int32) int32 1,000 0.0011 0.0089 0.12Γ— 842%
βœ… np.zeros_like (int32) int32 100,000 0.0057 0.0020 2.78Γ— 36%
β–« np.zeros_like (int32) int32 10,000,000 7.2566 0.0066 1091.90Γ— 0%
πŸ”΄ np.zeros_like (int64) int64 1,000 0.0010 0.0132 0.079Γ— 1261%
βœ… np.zeros_like (int64) int64 100,000 0.0100 0.0026 3.79Γ— 26%
β–« np.zeros_like (int64) int64 10,000,000 14.7069 0.0056 2623.48Γ— 0%

Manipulation

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
βšͺ a.T (2D) float64 1,000 0.0001 - - -
βšͺ a.T (2D) float64 100,000 0.0001 - - -
βšͺ a.T (2D) float64 10,000,000 0.0001 - - -
βšͺ a.flatten float64 1,000 0.0005 - - -
πŸ”΄ a.flatten float64 100,000 0.0113 0.0883 0.13Γ— 782%
βœ… a.flatten float64 10,000,000 13.0852 11.4613 1.14Γ— 88%
βšͺ np.concatenate float64 1,000 0.0010 - - -
βšͺ np.concatenate float64 100,000 0.3154 - - -
βšͺ np.concatenate float64 10,000,000 32.8142 - - -
βšͺ np.ravel float64 1,000 0.0004 - - -
β–« np.ravel float64 100,000 0.0003 0.0005 0.69Γ— 145%
β–« np.ravel float64 10,000,000 0.0003 0.0005 0.62Γ— 162%
βšͺ np.stack float64 1,000 0.0022 - - -
βšͺ np.stack float64 100,000 0.3130 - - -
βšͺ np.stack float64 10,000,000 33.9601 - - -
βšͺ np.transpose (2D) float64 1,000 0.0004 - - -
βšͺ np.transpose (2D) float64 100,000 0.0004 - - -
βšͺ np.transpose (2D) float64 10,000,000 0.0004 - - -
βšͺ reshape 1D->2D float64 1,000 0.0002 - - -
βšͺ reshape 1D->2D float64 100,000 0.0002 - - -
βšͺ reshape 1D->2D float64 10,000,000 0.0002 - - -
βšͺ reshape 2D->1D float64 1,000 0.0002 - - -
β–« reshape 2D->1D float64 100,000 0.0002 0.0005 0.33Γ— 304%
β–« reshape 2D->1D float64 10,000,000 0.0002 0.0006 0.32Γ— 317%

Slicing

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
βšͺ a[100:1000] (contiguous) float64 1,000 0.0002 - - -
βšͺ a[100:1000] (contiguous) float64 100,000 0.0001 - - -
βšͺ a[100:1000] (contiguous) float64 10,000,000 0.0001 - - -
βšͺ a[::-1] (reversed) float64 1,000 0.0001 - - -
β–« a[::-1] (reversed) float64 100,000 0.0002 0.0012 0.13Γ— 781%
β–« a[::-1] (reversed) float64 10,000,000 0.0002 0.0012 0.13Γ— 789%
βšͺ a[::2] (strided) float64 1,000 0.0002 - - -
βšͺ a[::2] (strided) float64 100,000 0.0001 - - -
βšͺ a[::2] (strided) float64 10,000,000 0.0001 - - -
βšͺ np.sum(contiguous_slice) float64 900 0.0017 - - -
βšͺ np.sum(contiguous_slice) float64 900 0.0017 - - -
βšͺ np.sum(contiguous_slice) float64 900 0.0016 - - -
βšͺ np.sum(strided_slice) float64 500 0.0016 - - -
βšͺ np.sum(strided_slice) float64 50,000 0.0096 - - -
βšͺ np.sum(strided_slice) float64 5,000,000 4.6738 - - -

Comparison

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
β–« a != b (float32) float32 1,000 0.0004 0.0007 0.60Γ— 166%
🟠 a != b (float32) float32 100,000 0.0059 0.0188 0.31Γ— 321%
βœ… a != b (float32) float32 10,000,000 3.9247 3.3366 1.18Γ— 85%
β–« a != b (float64) float64 1,000 0.0005 0.0008 0.62Γ— 162%
🟠 a != b (float64) float64 100,000 0.0110 0.0263 0.42Γ— 239%
βœ… a != b (float64) float64 10,000,000 6.7684 5.8470 1.16Γ— 86%
β–« a != b (int32) int32 1,000 0.0004 0.0008 0.54Γ— 186%
🟠 a != b (int32) int32 100,000 0.0069 0.0201 0.34Γ— 291%
βœ… a != b (int32) int32 10,000,000 4.2916 3.4612 1.24Γ— 81%
β–« a != b (int64) int64 1,000 0.0005 0.0008 0.60Γ— 166%
🟑 a != b (int64) int64 100,000 0.0140 0.0260 0.54Γ— 186%
βœ… a != b (int64) int64 10,000,000 7.2974 5.8513 1.25Γ— 80%
β–« a < b (float32) float32 1,000 0.0004 0.0007 0.56Γ— 179%
🟠 a < b (float32) float32 100,000 0.0056 0.0189 0.29Γ— 339%
βœ… a < b (float32) float32 10,000,000 3.8362 3.2974 1.16Γ— 86%
β–« a < b (float64) float64 1,000 0.0005 0.0008 0.62Γ— 162%
🟠 a < b (float64) float64 100,000 0.0106 0.0279 0.38Γ— 264%
βœ… a < b (float64) float64 10,000,000 6.5961 5.7503 1.15Γ— 87%
β–« a < b (int32) int32 1,000 0.0004 0.0007 0.62Γ— 162%
🟠 a < b (int32) int32 100,000 0.0071 0.0187 0.38Γ— 265%
βœ… a < b (int32) int32 10,000,000 4.3674 3.2941 1.33Γ— 75%
β–« a < b (int64) int64 1,000 0.0005 0.0007 0.73Γ— 137%
🟑 a < b (int64) int64 100,000 0.0182 0.0250 0.73Γ— 137%
βœ… a < b (int64) int64 10,000,000 7.0769 5.6821 1.25Γ— 80%
β–« a <= b (float32) float32 1,000 0.0006 0.0007 0.80Γ— 126%
🟠 a <= b (float32) float32 100,000 0.0063 0.0181 0.35Γ— 289%
βœ… a <= b (float32) float32 10,000,000 3.8528 3.2691 1.18Γ— 85%
β–« a <= b (float64) float64 1,000 0.0004 0.0007 0.60Γ— 167%
🟠 a <= b (float64) float64 100,000 0.0104 0.0283 0.37Γ— 272%
βœ… a <= b (float64) float64 10,000,000 6.4781 5.7355 1.13Γ— 88%
β–« a <= b (int32) int32 1,000 0.0004 0.0007 0.58Γ— 173%
🟠 a <= b (int32) int32 100,000 0.0070 0.0192 0.37Γ— 273%
βœ… a <= b (int32) int32 10,000,000 4.2354 3.3183 1.28Γ— 78%
β–« a <= b (int64) int64 1,000 0.0005 0.0007 0.72Γ— 138%
🟑 a <= b (int64) int64 100,000 0.0186 0.0268 0.69Γ— 144%
βœ… a <= b (int64) int64 10,000,000 8.2513 5.9870 1.38Γ— 73%
β–« a == b (float32) float32 1,000 0.0005 0.0007 0.61Γ— 163%
🟠 a == b (float32) float32 100,000 0.0059 0.0199 0.29Γ— 339%
βœ… a == b (float32) float32 10,000,000 3.9574 3.2149 1.23Γ— 81%
β–« a == b (float64) float64 1,000 0.0004 0.0007 0.58Γ— 172%
🟠 a == b (float64) float64 100,000 0.0114 0.0279 0.41Γ— 244%
βœ… a == b (float64) float64 10,000,000 7.1028 5.6882 1.25Γ— 80%
β–« a == b (int32) int32 1,000 0.0004 0.0007 0.60Γ— 167%
🟠 a == b (int32) int32 100,000 0.0072 0.0183 0.40Γ— 253%
βœ… a == b (int32) int32 10,000,000 4.1736 3.3406 1.25Γ— 80%
β–« a == b (int64) int64 1,000 0.0004 0.0008 0.58Γ— 172%
🟑 a == b (int64) int64 100,000 0.0131 0.0248 0.53Γ— 189%
βœ… a == b (int64) int64 10,000,000 7.1546 5.7300 1.25Γ— 80%
β–« a > b (float32) float32 1,000 0.0004 0.0007 0.56Γ— 178%
🟠 a > b (float32) float32 100,000 0.0056 0.0185 0.31Γ— 327%
βœ… a > b (float32) float32 10,000,000 3.8956 3.3476 1.16Γ— 86%
β–« a > b (float64) float64 1,000 0.0004 0.0008 0.58Γ— 171%
🟠 a > b (float64) float64 100,000 0.0105 0.0262 0.40Γ— 248%
βœ… a > b (float64) float64 10,000,000 6.6876 5.7415 1.17Γ— 86%
β–« a > b (int32) int32 1,000 0.0004 0.0008 0.54Γ— 186%
🟠 a > b (int32) int32 100,000 0.0070 0.0195 0.36Γ— 280%
βœ… a > b (int32) int32 10,000,000 4.1882 3.3117 1.26Γ— 79%
β–« a > b (int64) int64 1,000 0.0005 0.0007 0.74Γ— 134%
🟑 a > b (int64) int64 100,000 0.0231 0.0256 0.90Γ— 111%
βœ… a > b (int64) int64 10,000,000 7.6396 5.7329 1.33Γ— 75%
β–« a >= b (float32) float32 1,000 0.0004 0.0007 0.61Γ— 165%
🟠 a >= b (float32) float32 100,000 0.0063 0.0186 0.34Γ— 295%
βœ… a >= b (float32) float32 10,000,000 3.8402 3.2664 1.18Γ— 85%
β–« a >= b (float64) float64 1,000 0.0005 0.0007 0.60Γ— 166%
🟠 a >= b (float64) float64 100,000 0.0118 0.0241 0.49Γ— 203%
βœ… a >= b (float64) float64 10,000,000 7.1505 5.6739 1.26Γ— 79%
β–« a >= b (int32) int32 1,000 0.0004 0.0008 0.56Γ— 177%
🟠 a >= b (int32) int32 100,000 0.0069 0.0191 0.36Γ— 277%
βœ… a >= b (int32) int32 10,000,000 4.5128 3.3235 1.36Γ— 74%
β–« a >= b (int64) int64 1,000 0.0008 0.0008 1.00Γ— 100%
🟑 a >= b (int64) int64 100,000 0.0188 0.0266 0.71Γ— 142%
βœ… a >= b (int64) int64 10,000,000 7.8543 5.9554 1.32Γ— 76%

Bitwise

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
β–« a & b (bool) bool 1,000 0.0004 0.0016 0.24Γ— 409%
πŸ”΄ a & b (bool) bool 100,000 0.0028 0.0215 0.13Γ— 763%
🟑 a & b (bool) bool 10,000,000 1.8589 3.0929 0.60Γ— 166%
β–« a & b (int16) int16 1,000 0.0008 0.0027 0.29Γ— 349%
βœ… a & b (int16) int16 100,000 0.0290 0.0169 1.72Γ— 58%
βœ… a & b (int16) int16 10,000,000 5.2942 2.9661 1.78Γ— 56%
β–« a & b (int32) int32 1,000 0.0008 0.0060 0.13Γ— 779%
🟑 a & b (int32) int32 100,000 0.0286 0.0342 0.84Γ— 120%
βœ… a & b (int32) int32 10,000,000 9.1881 5.3408 1.72Γ— 58%
β–« a & b (int64) int64 1,000 0.0008 0.0069 0.11Γ— 891%
🟑 a & b (int64) int64 100,000 0.0338 0.0634 0.53Γ— 188%
βœ… a & b (int64) int64 10,000,000 17.1008 16.6525 1.03Γ— 97%
β–« a & b (int8) int8 1,000 0.0007 0.0013 0.49Γ— 204%
βœ… a & b (int8) int8 100,000 0.0286 0.0100 2.86Γ— 35%
βœ… a & b (int8) int8 10,000,000 3.8854 1.5338 2.53Γ— 40%
β–« a & b (uint16) uint16 1,000 0.0008 0.0034 0.23Γ— 440%
βœ… a & b (uint16) uint16 100,000 0.0301 0.0180 1.68Γ— 60%
βœ… a & b (uint16) uint16 10,000,000 5.2834 3.0212 1.75Γ— 57%
β–« a & b (uint32) uint32 1,000 0.0008 0.0039 0.20Γ— 492%
🟑 a & b (uint32) uint32 100,000 0.0339 0.0400 0.85Γ— 118%
βœ… a & b (uint32) uint32 10,000,000 8.5821 6.0168 1.43Γ— 70%
β–« a & b (uint64) uint64 1,000 0.0008 0.0024 0.32Γ— 310%
🟠 a & b (uint64) uint64 100,000 0.0356 0.0739 0.48Γ— 207%
βœ… a & b (uint64) uint64 10,000,000 17.0644 16.1487 1.06Γ— 95%
β–« a & b (uint8) uint8 1,000 0.0006 0.0010 0.62Γ— 162%
βœ… a & b (uint8) uint8 100,000 0.0296 0.0103 2.88Γ— 35%
βœ… a & b (uint8) uint8 10,000,000 3.8191 1.5272 2.50Γ— 40%
β–« a ^ b (bool) bool 1,000 0.0004 0.0017 0.22Γ— 447%
πŸ”΄ a ^ b (bool) bool 100,000 0.0026 0.0214 0.12Γ— 822%
🟑 a ^ b (bool) bool 10,000,000 1.8620 3.0807 0.60Γ— 166%
β–« a ^ b (int16) int16 1,000 0.0008 0.0026 0.30Γ— 328%
βœ… a ^ b (int16) int16 100,000 0.0285 0.0149 1.92Γ— 52%
βœ… a ^ b (int16) int16 10,000,000 5.2041 2.9252 1.78Γ— 56%
β–« a ^ b (int32) int32 1,000 0.0008 0.0047 0.16Γ— 615%
🟑 a ^ b (int32) int32 100,000 0.0288 0.0321 0.90Γ— 111%
βœ… a ^ b (int32) int32 10,000,000 8.9067 5.3599 1.66Γ— 60%
β–« a ^ b (int64) int64 1,000 0.0008 0.0040 0.20Γ— 511%
🟑 a ^ b (int64) int64 100,000 0.0337 0.0666 0.51Γ— 198%
βœ… a ^ b (int64) int64 10,000,000 17.2489 15.6910 1.10Γ— 91%
β–« a ^ b (int8) int8 1,000 0.0007 0.0012 0.52Γ— 191%
βœ… a ^ b (int8) int8 100,000 0.0295 0.0102 2.90Γ— 34%
βœ… a ^ b (int8) int8 10,000,000 3.8764 1.5503 2.50Γ— 40%
β–« a ^ b (uint16) uint16 1,000 0.0008 0.0028 0.28Γ— 361%
βœ… a ^ b (uint16) uint16 100,000 0.0287 0.0163 1.77Γ— 57%
βœ… a ^ b (uint16) uint16 10,000,000 5.2129 2.9215 1.78Γ— 56%
β–« a ^ b (uint32) uint32 1,000 0.0008 0.0048 0.16Γ— 610%
🟑 a ^ b (uint32) uint32 100,000 0.0285 0.0315 0.91Γ— 110%
βœ… a ^ b (uint32) uint32 10,000,000 8.4267 5.7479 1.47Γ— 68%
β–« a ^ b (uint64) uint64 1,000 0.0009 0.0111 0.078Γ— 1287%
🟑 a ^ b (uint64) uint64 100,000 0.0341 0.0681 0.50Γ— 200%
βœ… a ^ b (uint64) uint64 10,000,000 16.9004 16.6136 1.02Γ— 98%
β–« a ^ b (uint8) uint8 1,000 0.0006 0.0012 0.53Γ— 187%
βœ… a ^ b (uint8) uint8 100,000 0.0288 0.0119 2.42Γ— 41%
βœ… a ^ b (uint8) uint8 10,000,000 3.8171 1.4591 2.62Γ— 38%
β–« a b (bool) bool 1,000 0.0004 0.0015 0.31Γ— 326%
πŸ”΄ a b (bool) bool 100,000 0.0025 0.0232 0.11Γ— 912%
🟑 a b (bool) bool 10,000,000 1.8887 2.8568 0.66Γ— 151%
β–« a b (int16) int16 1,000 0.0008 0.0023 0.35Γ— 288%
βœ… a b (int16) int16 100,000 0.0285 0.0178 1.60Γ— 62%
βœ… a b (int16) int16 10,000,000 5.2268 2.9832 1.75Γ— 57%
β–« a b (int32) int32 1,000 0.0008 0.0074 0.10Γ— 950%
🟑 a b (int32) int32 100,000 0.0286 0.0380 0.75Γ— 133%
βœ… a b (int32) int32 10,000,000 9.0217 5.4574 1.65Γ— 60%
β–« a b (int64) int64 1,000 0.0008 0.0079 0.10Γ— 1003%
🟠 a b (int64) int64 100,000 0.0339 0.0707 0.48Γ— 209%
βœ… a b (int64) int64 10,000,000 17.1245 15.6955 1.09Γ— 92%
β–« a b (int8) int8 1,000 0.0007 0.0014 0.48Γ— 210%
βœ… a b (int8) int8 100,000 0.0300 0.0116 2.58Γ— 39%
βœ… a b (int8) int8 10,000,000 4.1649 1.5132 2.75Γ— 36%
β–« a b (uint16) uint16 1,000 0.0008 0.0019 0.43Γ— 234%
βœ… a b (uint16) uint16 100,000 0.0291 0.0168 1.73Γ— 58%
βœ… a b (uint16) uint16 10,000,000 5.1942 2.8924 1.80Γ— 56%
β–« a b (uint32) uint32 1,000 0.0008 0.0035 0.22Γ— 446%
🟑 a b (uint32) uint32 100,000 0.0285 0.0334 0.85Γ— 117%
βœ… a b (uint32) uint32 10,000,000 8.5824 5.4787 1.57Γ— 64%
β–« a b (uint64) uint64 1,000 0.0008 0.0022 0.35Γ— 282%
🟑 a b (uint64) uint64 100,000 0.0353 0.0677 0.52Γ— 192%
βœ… a b (uint64) uint64 10,000,000 16.8283 16.1102 1.04Γ— 96%
β–« a b (uint8) uint8 1,000 0.0007 0.0012 0.56Γ— 177%
βœ… a b (uint8) uint8 100,000 0.0296 0.0105 2.83Γ— 35%
βœ… a b (uint8) uint8 10,000,000 4.1042 1.4855 2.76Γ— 36%
β–« np.invert(a) (bool) bool 1,000 0.0004 0.0015 0.24Γ— 409%
πŸ”΄ np.invert(a) (bool) bool 100,000 0.0021 0.0230 0.092Γ— 1083%
🟑 np.invert(a) (bool) bool 10,000,000 1.6689 2.5576 0.65Γ— 153%
β–« np.invert(a) (int16) int16 1,000 0.0007 0.0018 0.40Γ— 247%
βœ… np.invert(a) (int16) int16 100,000 0.0257 0.0140 1.83Γ— 55%
βœ… np.invert(a) (int16) int16 10,000,000 4.7670 2.5132 1.90Γ— 53%
β–« np.invert(a) (int32) int32 1,000 0.0008 0.0058 0.13Γ— 758%
🟑 np.invert(a) (int32) int32 100,000 0.0264 0.0305 0.86Γ— 116%
βœ… np.invert(a) (int32) int32 10,000,000 8.1792 4.7721 1.71Γ— 58%
β–« np.invert(a) (int64) int64 1,000 0.0007 0.0059 0.13Γ— 796%
🟠 np.invert(a) (int64) int64 100,000 0.0263 0.0661 0.40Γ— 251%
βœ… np.invert(a) (int64) int64 10,000,000 15.1634 14.2955 1.06Γ— 94%
β–« np.invert(a) (int8) int8 1,000 0.0006 0.0014 0.46Γ— 218%
βœ… np.invert(a) (int8) int8 100,000 0.0293 0.0108 2.72Γ— 37%
βœ… np.invert(a) (int8) int8 10,000,000 3.5390 1.3133 2.69Γ— 37%
β–« np.invert(a) (uint16) uint16 1,000 0.0007 0.0022 0.33Γ— 302%
βœ… np.invert(a) (uint16) uint16 100,000 0.0258 0.0206 1.25Γ— 80%
βœ… np.invert(a) (uint16) uint16 10,000,000 4.7281 2.4541 1.93Γ— 52%
β–« np.invert(a) (uint32) uint32 1,000 0.0008 0.0036 0.22Γ— 459%
βœ… np.invert(a) (uint32) uint32 100,000 0.0332 0.0290 1.15Γ— 87%
βœ… np.invert(a) (uint32) uint32 10,000,000 7.8329 4.8460 1.62Γ— 62%
β–« np.invert(a) (uint64) uint64 1,000 0.0007 0.0035 0.21Γ— 484%
🟠 np.invert(a) (uint64) uint64 100,000 0.0263 0.0652 0.40Γ— 248%
🟑 np.invert(a) (uint64) uint64 10,000,000 15.2896 15.3374 1.00Γ— 100%
β–« np.invert(a) (uint8) uint8 1,000 0.0006 0.0014 0.46Γ— 216%
βœ… np.invert(a) (uint8) uint8 100,000 0.0268 0.0110 2.45Γ— 41%
βœ… np.invert(a) (uint8) uint8 10,000,000 3.5162 1.3311 2.64Γ— 38%
πŸ”΄ np.left_shift(a, 2) (bool) bool 1,000 0.0015 0.0125 0.12Γ— 845%
🟑 np.left_shift(a, 2) (bool) bool 100,000 0.0430 0.0779 0.55Γ— 181%
βœ… np.left_shift(a, 2) (bool) bool 10,000,000 15.2024 10.3241 1.47Γ— 68%
🟠 np.left_shift(a, 2) (int16) int16 1,000 0.0010 0.0031 0.33Γ— 302%
βœ… np.left_shift(a, 2) (int16) int16 100,000 0.0285 0.0150 1.90Γ— 53%
βœ… np.left_shift(a, 2) (int16) int16 10,000,000 4.9855 2.6983 1.85Γ— 54%
β–« np.left_shift(a, 2) (int32) int32 1,000 0.0010 0.0057 0.18Γ— 569%
🟑 np.left_shift(a, 2) (int32) int32 100,000 0.0190 0.0373 0.51Γ— 196%
βœ… np.left_shift(a, 2) (int32) int32 10,000,000 7.6421 4.5654 1.67Γ— 60%
β–« np.left_shift(a, 2) (int64) int64 1,000 0.0009 0.0038 0.24Γ— 420%
🟠 np.left_shift(a, 2) (int64) int64 100,000 0.0190 0.0672 0.28Γ— 353%
βœ… np.left_shift(a, 2) (int64) int64 10,000,000 15.2053 14.9107 1.02Γ— 98%
β–« np.left_shift(a, 2) (int8) int8 1,000 0.0009 0.0019 0.49Γ— 204%
βœ… np.left_shift(a, 2) (int8) int8 100,000 0.0305 0.0085 3.58Γ— 28%
βœ… np.left_shift(a, 2) (int8) int8 10,000,000 3.7477 1.2738 2.94Γ— 34%
🟠 np.left_shift(a, 2) (uint16) uint16 1,000 0.0011 0.0023 0.45Γ— 222%
βœ… np.left_shift(a, 2) (uint16) uint16 100,000 0.0290 0.0163 1.78Γ— 56%
βœ… np.left_shift(a, 2) (uint16) uint16 10,000,000 5.3571 2.5057 2.14Γ— 47%
β–« np.left_shift(a, 2) (uint32) uint32 1,000 0.0010 0.0045 0.22Γ— 456%
🟑 np.left_shift(a, 2) (uint32) uint32 100,000 0.0192 0.0272 0.70Γ— 142%
βœ… np.left_shift(a, 2) (uint32) uint32 10,000,000 7.9134 5.0757 1.56Γ— 64%
β–« np.left_shift(a, 2) (uint64) uint64 1,000 0.0010 0.0096 0.10Γ— 1000%
🟠 np.left_shift(a, 2) (uint64) uint64 100,000 0.0194 0.0697 0.28Γ— 359%
🟑 np.left_shift(a, 2) (uint64) uint64 10,000,000 15.2926 15.7026 0.97Γ— 103%
β–« np.left_shift(a, 2) (uint8) uint8 1,000 0.0009 0.0023 0.40Γ— 250%
βœ… np.left_shift(a, 2) (uint8) uint8 100,000 0.0292 0.0131 2.22Γ— 45%
βœ… np.left_shift(a, 2) (uint8) uint8 10,000,000 3.6979 1.2844 2.88Γ— 35%
πŸ”΄ np.right_shift(a, 2) (bool) bool 1,000 0.0016 0.0135 0.12Γ— 844%
🟑 np.right_shift(a, 2) (bool) bool 100,000 0.0529 0.0750 0.71Γ— 142%
βœ… np.right_shift(a, 2) (bool) bool 10,000,000 15.2744 9.3866 1.63Γ— 62%
🟠 np.right_shift(a, 2) (int16) int16 1,000 0.0011 0.0026 0.44Γ— 226%
βœ… np.right_shift(a, 2) (int16) int16 100,000 0.0377 0.0158 2.38Γ— 42%
βœ… np.right_shift(a, 2) (int16) int16 10,000,000 5.7282 2.6585 2.15Γ— 46%
🟠 np.right_shift(a, 2) (int32) int32 1,000 0.0011 0.0038 0.28Γ— 354%
🟑 np.right_shift(a, 2) (int32) int32 100,000 0.0288 0.0378 0.76Γ— 131%
βœ… np.right_shift(a, 2) (int32) int32 10,000,000 7.8870 4.3972 1.79Γ— 56%
🟠 np.right_shift(a, 2) (int64) int64 1,000 0.0013 0.0039 0.32Γ— 309%
🟠 np.right_shift(a, 2) (int64) int64 100,000 0.0287 0.0702 0.41Γ— 244%
βœ… np.right_shift(a, 2) (int64) int64 10,000,000 15.0917 14.2202 1.06Γ— 94%
🟑 np.right_shift(a, 2) (int8) int8 1,000 0.0010 0.0019 0.54Γ— 185%
βœ… np.right_shift(a, 2) (int8) int8 100,000 0.0436 0.0108 4.02Γ— 25%
βœ… np.right_shift(a, 2) (int8) int8 10,000,000 4.7856 1.2716 3.76Γ— 27%
🟠 np.right_shift(a, 2) (uint16) uint16 1,000 0.0011 0.0029 0.36Γ— 275%
βœ… np.right_shift(a, 2) (uint16) uint16 100,000 0.0283 0.0170 1.67Γ— 60%
βœ… np.right_shift(a, 2) (uint16) uint16 10,000,000 5.1786 2.5878 2.00Γ— 50%
β–« np.right_shift(a, 2) (uint32) uint32 1,000 0.0010 0.0036 0.27Γ— 368%
🟑 np.right_shift(a, 2) (uint32) uint32 100,000 0.0205 0.0284 0.72Γ— 138%
βœ… np.right_shift(a, 2) (uint32) uint32 10,000,000 7.7130 4.7119 1.64Γ— 61%
β–« np.right_shift(a, 2) (uint64) uint64 1,000 0.0010 0.0108 0.091Γ— 1100%
🟠 np.right_shift(a, 2) (uint64) uint64 100,000 0.0212 0.0750 0.28Γ— 354%
🟑 np.right_shift(a, 2) (uint64) uint64 10,000,000 14.9083 16.6474 0.90Γ— 112%
β–« np.right_shift(a, 2) (uint8) uint8 1,000 0.0009 0.0021 0.44Γ— 227%
βœ… np.right_shift(a, 2) (uint8) uint8 100,000 0.0296 0.0095 3.12Γ— 32%
βœ… np.right_shift(a, 2) (uint8) uint8 10,000,000 3.7353 1.2943 2.89Γ— 35%

Logic

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
βšͺ np.all(a) (bool) bool 1,000 0.0015 - - -
βšͺ np.all(a) (bool) bool 100,000 0.0014 - - -
βšͺ np.all(a) (bool) bool 10,000,000 0.0014 - - -
βšͺ np.allclose(a, b) (float16) float16 1,000 0.0305 - - -
βšͺ np.allclose(a, b) (float16) float16 100,000 1.7794 - - -
βšͺ np.allclose(a, b) (float16) float16 10,000,000 192.9692 - - -
βšͺ np.allclose(a, b) (float32) float32 1,000 0.0132 - - -
βšͺ np.allclose(a, b) (float32) float32 100,000 0.3660 - - -
βšͺ np.allclose(a, b) (float32) float32 10,000,000 55.8239 - - -
βšͺ np.allclose(a, b) (float64) float64 1,000 0.0165 - - -
βšͺ np.allclose(a, b) (float64) float64 100,000 0.6299 - - -
βšͺ np.allclose(a, b) (float64) float64 10,000,000 107.5215 - - -
βšͺ np.any(a) (bool) bool 1,000 0.0015 - - -
βšͺ np.any(a) (bool) bool 100,000 0.0017 - - -
βšͺ np.any(a) (bool) bool 10,000,000 0.0014 - - -
βœ… np.array_equal(a, b) (float16) float16 1,000 0.0025 0.0013 1.90Γ— 53%
βœ… np.array_equal(a, b) (float16) float16 100,000 0.0873 0.0697 1.25Γ— 80%
βœ… np.array_equal(a, b) (float16) float16 10,000,000 9.5077 6.1828 1.54Γ— 65%
β–« np.array_equal(a, b) (float32) float32 1,000 0.0016 0.0008 1.95Γ— 51%
🟠 np.array_equal(a, b) (float32) float32 100,000 0.0067 0.0186 0.36Γ— 276%
βœ… np.array_equal(a, b) (float32) float32 10,000,000 3.9686 3.4029 1.17Γ— 86%
β–« np.array_equal(a, b) (float64) float64 1,000 0.0018 0.0007 2.36Γ— 42%
🟠 np.array_equal(a, b) (float64) float64 100,000 0.0121 0.0248 0.49Γ— 204%
βœ… np.array_equal(a, b) (float64) float64 10,000,000 6.8297 5.8386 1.17Γ— 86%
βšͺ np.isclose(a, b) (float16) float16 1,000 0.0300 - - -
βšͺ np.isclose(a, b) (float16) float16 100,000 1.7764 - - -
βšͺ np.isclose(a, b) (float16) float16 10,000,000 195.6207 - - -
βšͺ np.isclose(a, b) (float32) float32 1,000 0.0113 - - -
βšͺ np.isclose(a, b) (float32) float32 100,000 0.3666 - - -
βšͺ np.isclose(a, b) (float32) float32 10,000,000 55.1472 - - -
βšͺ np.isclose(a, b) (float64) float64 1,000 0.0116 - - -
βšͺ np.isclose(a, b) (float64) float64 100,000 0.6275 - - -
βšͺ np.isclose(a, b) (float64) float64 10,000,000 104.7217 - - -
β–« np.isfinite(a) (float16) float16 1,000 0.0008 0.0015 0.57Γ— 175%
βœ… np.isfinite(a) (float16) float16 100,000 0.0496 0.0388 1.28Γ— 78%
βœ… np.isfinite(a) (float16) float16 10,000,000 5.8734 3.1098 1.89Γ— 53%
β–« np.isfinite(a) (float32) float32 1,000 0.0004 0.0012 0.33Γ— 302%
πŸ”΄ np.isfinite(a) (float32) float32 100,000 0.0059 0.0364 0.16Γ— 617%
🟑 np.isfinite(a) (float32) float32 10,000,000 3.3272 3.8128 0.87Γ— 115%
β–« np.isfinite(a) (float64) float64 1,000 0.0005 0.0014 0.32Γ— 314%
🟠 np.isfinite(a) (float64) float64 100,000 0.0098 0.0365 0.27Γ— 374%
🟑 np.isfinite(a) (float64) float64 10,000,000 5.3098 5.6920 0.93Γ— 107%
β–« np.isinf(a) (float16) float16 1,000 0.0009 0.0012 0.76Γ— 132%
βœ… np.isinf(a) (float16) float16 100,000 0.0506 0.0386 1.31Γ— 76%
βœ… np.isinf(a) (float16) float16 10,000,000 6.0644 3.1035 1.95Γ— 51%
β–« np.isinf(a) (float32) float32 1,000 0.0006 0.0013 0.41Γ— 241%
πŸ”΄ np.isinf(a) (float32) float32 100,000 0.0058 0.0416 0.14Γ— 721%
🟑 np.isinf(a) (float32) float32 10,000,000 3.0154 3.9983 0.75Γ— 133%
β–« np.isinf(a) (float64) float64 1,000 0.0005 0.0015 0.32Γ— 312%
🟠 np.isinf(a) (float64) float64 100,000 0.0101 0.0433 0.23Γ— 429%
🟑 np.isinf(a) (float64) float64 10,000,000 5.2606 5.9503 0.88Γ— 113%
βœ… np.isnan(a) (float16) float16 1,000 0.0014 0.0012 1.12Γ— 89%
βœ… np.isnan(a) (float16) float16 100,000 0.0692 0.0397 1.74Γ— 57%
βœ… np.isnan(a) (float16) float16 10,000,000 7.7981 3.1130 2.50Γ— 40%
β–« np.isnan(a) (float32) float32 1,000 0.0005 0.0016 0.34Γ— 298%
πŸ”΄ np.isnan(a) (float32) float32 100,000 0.0044 0.0482 0.092Γ— 1091%
🟑 np.isnan(a) (float32) float32 10,000,000 2.9244 4.7104 0.62Γ— 161%
β–« np.isnan(a) (float64) float64 1,000 0.0004 0.0013 0.33Γ— 300%
πŸ”΄ np.isnan(a) (float64) float64 100,000 0.0085 0.0483 0.18Γ— 569%
🟑 np.isnan(a) (float64) float64 10,000,000 4.9310 6.0302 0.82Γ— 122%
βœ… np.maximum(a, b) (float16) float16 1,000 0.0031 0.0030 1.02Γ— 98%
βœ… np.maximum(a, b) (float16) float16 100,000 0.7598 0.6663 1.14Γ— 88%
βœ… np.maximum(a, b) (float16) float16 10,000,000 80.9858 66.1452 1.22Γ— 82%
β–« np.maximum(a, b) (float32) float32 1,000 0.0006 0.0013 0.45Γ— 223%
🟠 np.maximum(a, b) (float32) float32 100,000 0.0084 0.0343 0.25Γ— 407%
βœ… np.maximum(a, b) (float32) float32 10,000,000 8.3101 4.3746 1.90Γ— 53%
β–« np.maximum(a, b) (float64) float64 1,000 0.0006 0.0018 0.31Γ— 323%
🟠 np.maximum(a, b) (float64) float64 100,000 0.0293 0.0803 0.36Γ— 274%
🟑 np.maximum(a, b) (float64) float64 10,000,000 16.5750 17.2376 0.96Γ— 104%
βœ… np.minimum(a, b) (float16) float16 1,000 0.0032 0.0031 1.03Γ— 97%
βœ… np.minimum(a, b) (float16) float16 100,000 0.7620 0.6658 1.14Γ— 87%
βœ… np.minimum(a, b) (float16) float16 10,000,000 81.4032 65.4062 1.25Γ— 80%
β–« np.minimum(a, b) (float32) float32 1,000 0.0005 0.0013 0.42Γ— 240%
🟠 np.minimum(a, b) (float32) float32 100,000 0.0084 0.0345 0.24Γ— 411%
βœ… np.minimum(a, b) (float32) float32 10,000,000 8.4413 4.4356 1.90Γ— 52%
β–« np.minimum(a, b) (float64) float64 1,000 0.0006 0.0013 0.44Γ— 228%
🟠 np.minimum(a, b) (float64) float64 100,000 0.0290 0.0866 0.34Γ— 298%
🟑 np.minimum(a, b) (float64) float64 10,000,000 16.8958 20.5756 0.82Γ— 122%

Statistics

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
βœ… np.average(a) (float16) float16 1,000 0.0054 0.0012 4.48Γ— 22%
βœ… np.average(a) (float16) float16 100,000 0.1147 0.0798 1.44Γ— 70%
βœ… np.average(a) (float16) float16 10,000,000 10.5817 8.0311 1.32Γ— 76%
β–« np.average(a) (float32) float32 1,000 0.0042 0.0007 5.80Γ— 17%
βœ… np.average(a) (float32) float32 100,000 0.0177 0.0032 5.57Γ— 18%
βœ… np.average(a) (float32) float32 10,000,000 2.8186 0.9734 2.90Γ— 34%
β–« np.average(a) (float64) float64 1,000 0.0029 0.0007 3.89Γ— 26%
βœ… np.average(a) (float64) float64 100,000 0.0171 0.0040 4.26Γ— 23%
βœ… np.average(a) (float64) float64 10,000,000 4.6529 2.8474 1.63Γ— 61%
β–« np.count_nonzero(a) (float16) float16 1,000 0.0018 0.0008 2.29Γ— 44%
βœ… np.count_nonzero(a) (float16) float16 100,000 0.1447 0.0436 3.32Γ— 30%
βœ… np.count_nonzero(a) (float16) float16 10,000,000 15.7587 4.3062 3.66Γ— 27%
β–« np.count_nonzero(a) (float32) float32 1,000 0.0006 0.0003 1.87Γ— 53%
βœ… np.count_nonzero(a) (float32) float32 100,000 0.0438 0.0050 8.69Γ— 12%
βœ… np.count_nonzero(a) (float32) float32 10,000,000 4.2117 1.6445 2.56Γ— 39%
β–« np.count_nonzero(a) (float64) float64 1,000 0.0007 0.0004 1.82Γ— 55%
βœ… np.count_nonzero(a) (float64) float64 100,000 0.0376 0.0090 4.19Γ— 24%
βœ… np.count_nonzero(a) (float64) float64 10,000,000 5.6444 3.9133 1.44Γ— 69%
βœ… np.median(a) (float16) float16 1,000 0.0144 0.0041 3.52Γ— 28%
🟑 np.median(a) (float16) float16 100,000 0.8796 1.2503 0.70Γ— 142%
βœ… np.median(a) (float16) float16 10,000,000 105.7899 88.7294 1.19Γ— 84%
βœ… np.median(a) (float32) float32 1,000 0.0110 0.0023 4.80Γ— 21%
🟑 np.median(a) (float32) float32 100,000 0.4686 0.6988 0.67Γ— 149%
🟑 np.median(a) (float32) float32 10,000,000 73.7480 79.7326 0.93Γ— 108%
βœ… np.median(a) (float64) float64 1,000 0.0098 0.0023 4.23Γ— 24%
🟑 np.median(a) (float64) float64 100,000 0.4653 0.7089 0.66Γ— 152%
🟑 np.median(a) (float64) float64 10,000,000 86.4309 88.8375 0.97Γ— 103%
βœ… np.percentile(a, 50) (float16) float16 1,000 0.0288 0.0041 6.97Γ— 14%
βœ… np.percentile(a, 50) (float16) float16 100,000 1.7825 1.2489 1.43Γ— 70%
βœ… np.percentile(a, 50) (float16) float16 10,000,000 113.4806 88.7652 1.28Γ— 78%
βœ… np.percentile(a, 50) (float32) float32 1,000 0.0243 0.0023 10.61Γ— 9%
βœ… np.percentile(a, 50) (float32) float32 100,000 0.7026 0.7007 1.00Γ— 100%
🟑 np.percentile(a, 50) (float32) float32 10,000,000 47.5374 79.7748 0.60Γ— 168%
βœ… np.percentile(a, 50) (float64) float64 1,000 0.0258 0.0023 11.00Γ— 9%
🟑 np.percentile(a, 50) (float64) float64 100,000 0.7045 0.7086 0.99Γ— 101%
🟑 np.percentile(a, 50) (float64) float64 10,000,000 58.5689 88.9709 0.66Γ— 152%
βœ… np.ptp(a) (float16) float16 1,000 0.0077 0.0037 2.10Γ— 48%
βœ… np.ptp(a) (float16) float16 100,000 1.0004 0.6489 1.54Γ— 65%
βœ… np.ptp(a) (float16) float16 10,000,000 103.1114 67.0357 1.54Γ— 65%
βœ… np.ptp(a) (float32) float32 1,000 0.0035 0.0022 1.59Γ— 63%
βœ… np.ptp(a) (float32) float32 100,000 0.0114 0.0080 1.44Γ— 70%
βœ… np.ptp(a) (float32) float32 10,000,000 2.6949 2.4569 1.10Γ— 91%
βœ… np.ptp(a) (float64) float64 1,000 0.0037 0.0020 1.88Γ— 53%
βœ… np.ptp(a) (float64) float64 100,000 0.0200 0.0134 1.49Γ— 67%
βœ… np.ptp(a) (float64) float64 10,000,000 6.9463 6.2250 1.12Γ— 90%
βœ… np.quantile(a, 0.5) (float16) float16 1,000 0.0283 0.0041 6.89Γ— 14%
βœ… np.quantile(a, 0.5) (float16) float16 100,000 1.7668 1.2481 1.42Γ— 71%
βœ… np.quantile(a, 0.5) (float16) float16 10,000,000 112.7790 88.6407 1.27Γ— 79%
βœ… np.quantile(a, 0.5) (float32) float32 1,000 0.0237 0.0023 10.32Γ— 10%
🟑 np.quantile(a, 0.5) (float32) float32 100,000 0.6938 0.7016 0.99Γ— 101%
🟑 np.quantile(a, 0.5) (float32) float32 10,000,000 47.6198 79.7894 0.60Γ— 168%
βœ… np.quantile(a, 0.5) (float64) float64 1,000 0.0239 0.0023 10.21Γ— 10%
🟑 np.quantile(a, 0.5) (float64) float64 100,000 0.7004 0.7083 0.99Γ— 101%
🟑 np.quantile(a, 0.5) (float64) float64 10,000,000 58.1853 89.0162 0.65Γ— 153%

Sorting

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
🟑 np.argsort(a) (float32) float32 1,000 0.0120 0.0223 0.54Γ— 186%
βœ… np.argsort(a) (float32) float32 100,000 1.5922 1.0142 1.57Γ— 64%
βœ… np.argsort(a) (float32) float32 10,000,000 1348.2730 132.4664 10.18Γ— 10%
🟑 np.argsort(a) (float64) float64 1,000 0.0104 0.0177 0.59Γ— 171%
🟑 np.argsort(a) (float64) float64 100,000 1.4280 2.5193 0.57Γ— 176%
βœ… np.argsort(a) (float64) float64 10,000,000 1768.7035 251.4880 7.03Γ— 14%
🟑 np.argsort(a) (int32) int32 1,000 0.0113 0.0221 0.51Γ— 196%
🟠 np.argsort(a) (int32) int32 100,000 0.4031 0.8504 0.47Γ— 211%
βœ… np.argsort(a) (int32) int32 10,000,000 174.0979 107.5057 1.62Γ— 62%
🟑 np.argsort(a) (int64) int64 1,000 0.0131 0.0167 0.78Γ— 128%
🟠 np.argsort(a) (int64) int64 100,000 0.4917 2.2549 0.22Γ— 459%
βœ… np.argsort(a) (int64) int64 10,000,000 310.5208 188.5734 1.65Γ— 61%
βœ… np.nonzero(a) (float32) float32 1,000 0.0027 0.0021 1.25Γ— 80%
βœ… np.nonzero(a) (float32) float32 100,000 0.1988 0.1946 1.02Γ— 98%
βœ… np.nonzero(a) (float32) float32 10,000,000 39.8712 14.1945 2.81Γ— 36%
βœ… np.nonzero(a) (float64) float64 1,000 0.0029 0.0020 1.44Γ— 70%
🟑 np.nonzero(a) (float64) float64 100,000 0.1923 0.2002 0.96Γ— 104%
βœ… np.nonzero(a) (float64) float64 10,000,000 42.6329 17.6206 2.42Γ— 41%
🟑 np.nonzero(a) (int32) int32 1,000 0.0017 0.0028 0.61Γ— 164%
🟑 np.nonzero(a) (int32) int32 100,000 0.1051 0.1932 0.54Γ— 184%
βœ… np.nonzero(a) (int32) int32 10,000,000 20.1149 14.3503 1.40Γ— 71%
🟑 np.nonzero(a) (int64) int64 1,000 0.0018 0.0026 0.69Γ— 144%
🟑 np.nonzero(a) (int64) int64 100,000 0.1073 0.2034 0.53Γ— 190%
βœ… np.nonzero(a) (int64) int64 10,000,000 23.7474 18.2560 1.30Γ— 77%
βœ… np.searchsorted(a, v) (float32) float32 1,000 0.0083 0.0053 1.56Γ— 64%
βœ… np.searchsorted(a, v) (float32) float32 100,000 2.0222 1.7299 1.17Γ— 86%
βœ… np.searchsorted(a, v) (float32) float32 10,000,000 312.1823 191.5647 1.63Γ— 61%
βœ… np.searchsorted(a, v) (float64) float64 1,000 0.0083 0.0053 1.56Γ— 64%
βœ… np.searchsorted(a, v) (float64) float64 100,000 2.0961 1.7424 1.20Γ— 83%
βœ… np.searchsorted(a, v) (float64) float64 10,000,000 310.2307 192.5449 1.61Γ— 62%
βœ… np.searchsorted(a, v) (int32) int32 1,000 0.0190 0.0075 2.54Γ— 39%
βœ… np.searchsorted(a, v) (int32) int32 100,000 2.8983 2.2559 1.28Γ— 78%
βœ… np.searchsorted(a, v) (int32) int32 10,000,000 390.1343 243.3194 1.60Γ— 62%
βœ… np.searchsorted(a, v) (int64) int64 1,000 0.0186 0.0071 2.61Γ— 38%
βœ… np.searchsorted(a, v) (int64) int64 100,000 2.9016 2.2381 1.30Γ— 77%
βœ… np.searchsorted(a, v) (int64) int64 10,000,000 568.2151 243.9343 2.33Γ— 43%

LinearAlgebra

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
β–« np.dot(a, b) (float64) float64 1,000 0.0007 0.0007 1.06Γ— 94%
βœ… np.dot(a, b) (float64) float64 100,000 0.1123 0.0093 12.05Γ— 8%
🟠 np.dot(a, b) (float64) float64 10,000,000 0.8690 3.0303 0.29Γ— 349%
🟠 np.matmul(A, B) (float64) float64 1,000 0.0027 0.0060 0.45Γ— 223%
🟠 np.matmul(A, B) (float64) float64 100,000 0.5771 2.7815 0.21Γ— 482%
πŸ”΄ np.matmul(A, B) (float64) float64 10,000,000 0.6896 4.4742 0.15Γ— 649%
🟠 np.outer(a, b) (float64) float64 1,000 0.0022 0.0061 0.35Γ— 284%
🟑 np.outer(a, b) (float64) float64 100,000 0.0380 0.0708 0.54Γ— 186%
βœ… np.outer(a, b) (float64) float64 10,000,000 13.4954 11.7542 1.15Γ— 87%

Selection

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
β–« np.where(cond) (float64) float64 1,000 0.0009 0.0014 0.66Γ— 152%
🟠 np.where(cond) (float64) float64 100,000 0.0294 0.0981 0.30Γ— 333%
βœ… np.where(cond) (float64) float64 10,000,000 7.4500 6.9913 1.07Γ— 94%
🟑 np.where(cond, a, b) (float64) float64 1,000 0.0017 0.0020 0.85Γ— 117%
🟑 np.where(cond, a, b) (float64) float64 100,000 0.0399 0.0688 0.58Γ— 173%
βœ… np.where(cond, a, b) (float64) float64 10,000,000 17.1294 14.8189 1.16Γ— 86%

NDIter iterator benchmark

Complementary harness: measures the iterator machinery itself (construction, traversal, reductions, selection, dtypes, pathologies, dividends) across cache tiers β€” not part of the op/dtype/N matrix above. speedup = NumPy / NumSharp; NA = section ignored due to a known intermittent NumSharp AccessViolation.

NumSharp NDIter β€” canonical benchmark Β· 2026-06-29 Β· speedup = NumPy Γ· NumSharp (>1.0Γ— = NumSharp faster)
198 measured pairs (35 NA) Β· best-of-rounds, Release Β· matched kernels/ids
%NumPyπŸ• = NumSharp Γ· NumPy Γ— 100 = share of NumPy's time NumSharp uses (8% = takes only 8% as long; <100% = faster)

AV POLICY β€” a NumSharp section that crashes all retries (known intermittent
AccessViolation, an unmanaged-storage lifetime bug) is reported NA / IGNORED
and excluded from every geomean below.  THIS RUN: NA across selection.

HEADLINE β€” operation matrix: 1.20Γ— geomean Β· 83%πŸ• of NumPy's time Β· 77 win / 53 lose over 130 cells

OPERATIONS β€” BY SIZE TIER  (geomean over all families)
        slower ◄───────── 1.0 (parity) ─────────► faster
scalar     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ ......   1.26Γ—    79%πŸ•  ( 17 win /  9 lose)
1K         β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ .......   1.16Γ—    86%πŸ•  ( 15 win / 11 lose)
100K       β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ ........   1.07Γ—    94%πŸ•  ( 12 win / 14 lose)
1M         β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ ......   1.30Γ—    77%πŸ•  ( 17 win /  9 lose)
10M        β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž ......   1.23Γ—    82%πŸ•  ( 16 win / 10 lose)
ALL        β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ .......   1.20Γ—    83%πŸ•  ( 77 win / 53 lose)

OPERATIONS β€” BY CATEGORY  (geomean over its families, all sizes)
        slower ◄───────── 1.0 (parity) ─────────► faster
elementwiseβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š ......   1.28Γ—    78%πŸ•  ( 31 win /  9 lose)
reductions β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–     1.74Γ—    57%πŸ•  ( 29 win / 11 lose)
selection  (no data)
copy/cast  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž ...........   0.73Γ—   138%πŸ•  (  9 win / 16 lose)  β—„ SLOWER
index-math β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ ...........   0.77Γ—   130%πŸ•  (  4 win /  6 lose)  β—„ SLOWER
dtypes     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ .......   1.16Γ—    86%πŸ•  (  4 win / 11 lose)

CATEGORY Γ— TIER geomean
category       scalar       1K     100K       1M      10M
elementwise     1.65Γ—    1.54Γ—    1.14Γ—    1.10Γ—    1.08Γ—
reductions      2.68Γ—    2.00Γ—    1.51Γ—    1.43Γ—    1.38Γ—
selection           -        -        -        -        -
copy/cast       0.59Γ—    0.53Γ—    0.41Γ—    1.40Γ—    1.12Γ—
index-math      0.34Γ—    0.51Γ—    0.99Γ—    1.23Γ—    1.26Γ—
dtypes          0.70Γ—    0.81Γ—    1.87Γ—    1.39Γ—    1.44Γ—

PER-FAMILY Γ— TIER  (NumPy Γ· NumSharp; >1.0 = NumSharp faster)
family        scalar       1K     100K       1M      10M    geomean
-- elementwise
  add          1.61Γ—    1.43Γ—    0.96Γ—    1.00Γ—    1.02Γ—     1.18Γ—
  sqrt         1.67Γ—    1.16Γ—    1.01Γ—    1.00Γ—    1.01Γ—     1.15Γ—
  copy         1.67Γ—    2.35Γ—    1.62Γ—    1.39Γ—    1.64Γ—     1.71Γ—
  strided      1.65Γ—    1.28Γ—    0.93Γ—    1.01Γ—    0.99Γ—     1.15Γ—
  bcast        1.68Γ—    1.32Γ—    0.89Γ—    0.95Γ—    0.95Γ—     1.12Γ—
  reversed     1.65Γ—    1.26Γ—    0.93Γ—    0.99Γ—    0.95Γ—     1.13Γ—
  castbuf      1.87Γ—    2.20Γ—    1.63Γ—    1.36Γ—    1.12Γ—     1.59Γ—
  mixbuf       1.42Γ—    1.72Γ—    1.41Γ—    1.20Γ—    1.07Γ—     1.35Γ—
-- reductions
  sum          1.92Γ—    1.85Γ—    2.58Γ—    1.76Γ—    1.60Γ—     1.92Γ—
  sum ax0      1.71Γ—    0.86Γ—    1.10Γ—    0.96Γ—    0.96Γ—     1.09Γ—
  sum ax1      1.81Γ—    0.92Γ—    1.52Γ—    1.79Γ—    1.58Γ—     1.48Γ—
  sum dt=      1.89Γ—    1.35Γ—    0.48Γ—    0.46Γ—    0.54Γ—     0.79Γ—
  amin         1.69Γ—    1.62Γ—    0.71Γ—    0.71Γ—    0.76Γ—     1.01Γ—
  cumsum       1.35Γ—    1.13Γ—    1.07Γ—    1.87Γ—    1.65Γ—     1.38Γ—
  any(F)      10.04Γ—    8.39Γ—    2.00Γ—    1.23Γ—    1.00Γ—     2.90Γ—
  any(hit)    10.25Γ—    8.49Γ—    8.50Γ—    7.88Γ—    7.98Γ—     8.58Γ—
-- selection
  where           NA       NA       NA       NA       NA
  a[mask]         NA       NA       NA       NA       NA
  a[mask]=        NA       NA       NA       NA       NA
  count_nz        NA       NA       NA       NA       NA
  argwhere        NA       NA       NA       NA       NA
  a[idx]          NA       NA       NA       NA       NA
  a[idx]=         NA       NA       NA       NA       NA
-- copy/cast
  flatten      0.41Γ—    0.33Γ—    0.17Γ—    2.21Γ—    1.13Γ—     0.56Γ—
  astype       0.31Γ—    0.53Γ—    0.54Γ—    1.94Γ—    1.89Γ—     0.80Γ—
  ravel.T      0.50Γ—    0.58Γ—    0.53Γ—    2.22Γ—    1.09Γ—     0.82Γ—
  in-place     1.45Γ—    0.77Γ—    0.96Γ—    1.03Γ—    1.04Γ—     1.03Γ—
  less->b      0.81Γ—    0.52Γ—    0.25Γ—    0.55Γ—    0.75Γ—     0.53Γ—
-- index-math
  unravel      0.36Γ—    0.50Γ—    0.96Γ—    1.00Γ—    1.04Γ—     0.71Γ—
  ravel_mi     0.32Γ—    0.53Γ—    1.01Γ—    1.53Γ—    1.54Γ—     0.83Γ—
-- dtypes
  complex      0.71Γ—    0.58Γ—    0.97Γ—    0.77Γ—    0.93Γ—     0.78Γ—
  float16      0.72Γ—    0.64Γ—    0.58Γ—    0.56Γ—    0.57Γ—     0.61Γ—
  int8         0.66Γ—    1.43Γ—   11.53Γ—    6.16Γ—    5.66Γ—     3.28Γ—

CONSTRUCTION β€” iterator build+dispose vs np.nditer (size-invariant, 1K)
        slower ◄───────── 1.0 (parity) ─────────► faster
1op          β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ .........   0.97Γ—   103%πŸ•  (  0 win /  1 lose)  β—„ SLOWER
3op_exl      β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ά   2.44Γ—    41%πŸ•  (  1 win /  0 lose)
ufunc        β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ά   2.91Γ—    34%πŸ•  (  1 win /  0 lose)
bufcast      β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ά   2.56Γ—    39%πŸ•  (  1 win /  0 lose)
multiindex   β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ .....   1.40Γ—    72%πŸ•  (  1 win /  0 lose)
8op          β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ά   3.67Γ—    27%πŸ•  (  1 win /  0 lose)
4d           β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š     1.78Γ—    56%πŸ•  (  1 win /  0 lose)
8d           β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    1.85Γ—    54%πŸ•  (  1 win /  0 lose)
strided2d    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   1.95Γ—    51%πŸ•  (  1 win /  0 lose)
geomean      β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ά   2.03Γ—    49%πŸ•  (  8 win /  1 lose)

CHUNK-WIDTH dispatch β€” strided rows, 2M total, inner width w (NumPy = np.positive)
        slower ◄───────── 1.0 (parity) ─────────► faster
w=4          β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ ............   0.69Γ—   145%πŸ•  (  0 win /  1 lose)  β—„ SLOWER
w=16         β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š .........   0.98Γ—   102%πŸ•  (  0 win /  1 lose)  β—„ PARITY
w=64         β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– ........   1.02Γ—    98%πŸ•  (  1 win /  0 lose)  β—„ PARITY
w=256        β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ ....   1.45Γ—    69%πŸ•  (  1 win /  0 lose)
w=1024       β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ ......   1.31Γ—    76%πŸ•  (  1 win /  0 lose)

PATHOLOGY canaries β€” known taxes/losses to track (NumPy Γ· NumSharp)
  bcast_reduce    522.42Γ—   (522.4Γ— faster, faster)
  allocate          1.06Γ—   (1.1Γ— faster, faster)
  overlap_copy      1.77Γ—   (1.8Γ— faster, faster)
  forder_out        1.17Γ—   (1.2Γ— faster, faster)
  zerodim           1.55Γ—   (1.6Γ— faster, faster)

DIVIDENDS β€” NumSharp-only machinery (NumPy baseline = closest it can do)
                scalar       1K     100K       1M      10M   note
fuse7           12.55Γ—    3.86Γ—    1.44Γ—    1.67Γ—    2.09Γ—   vs chained 6Γ— add
reuse            6.06Γ—    6.12Γ—    1.07Γ—    1.00Γ—    1.00Γ—   vs rebuild each call
par8                 -    0.67Γ—    2.78Γ—    3.95Γ—    5.40Γ—   vs single-thread

biggest NumSharp wins: i8@100K 11.53Γ— Β· anyeh@1 10.25Γ— Β· anyff@1 10.04Γ— Β· anyeh@100K 8.50Γ— Β· anyeh@1K 8.49Γ—
most behind:           flatten@100K 0.17Γ— Β· lessbool@100K 0.25Γ— Β· astype@1 0.31Γ— Β· ravelmi@1 0.32Γ— Β· flatten@1K 0.33Γ—

Layout suite β€” reduction / copy / elementwise Γ— memory layout Γ— dtype

ratio = NumPy_ms / NumSharp_ms β€” >1.0 = NumSharp faster. βœ…β‰₯1.0 🟑β‰₯0.5 🟠β‰₯0.2 πŸ”΄<0.2. Layouts (8, harmonized with the cast subsystem): C, F (Fortran), T (transpose), strided [:, ::2], sliced (offset), negrow [::-1,:], negcol [:,::-1], bcast (stride-0). Fills the op-matrix's blind spot (it measures C-contiguous only). 100K + 1M elements, best-of-rounds.

Reduction (sum/min/max/prod, both axes)

Geomean by lay

size C F T strided negrow negcol sliced bcast
100K 0.99 🟑 1.02 βœ… 1.02 βœ… 0.55 🟑 0.70 🟑 0.70 🟑 0.72 🟑 0.74 🟑
1M 0.95 🟑 0.94 🟑 0.95 🟑 0.65 🟑 0.87 🟑 0.73 🟑 0.75 🟑 0.68 🟑

Geomean by dt

size f64 f32 c128 dec f16 i32 i64
100K 0.87 🟑 1.00 🟑 0.98 🟑 0.08 πŸ”΄ 1.03 βœ… 1.33 βœ… 1.14 βœ…
1M 1.12 βœ… 1.15 βœ… 1.04 βœ… 0.07 πŸ”΄ 1.02 βœ… 1.19 βœ… 1.02 βœ…

Geomean by op

size sum min max prod
100K 0.80 🟑 0.66 🟑 0.66 🟑 1.19 βœ…
1M 0.84 🟑 0.65 🟑 0.64 🟑 1.28 βœ…

Worst 15 cells (NumSharp slowest vs NumPy)

key NumSharp ms NumPy ms ratio
1M|dec|bcast|sum|ax0 5.5269 0.0655 0.01 πŸ”΄
100K|dec|bcast|sum|ax0 0.5555 0.0087 0.02 πŸ”΄
100K|dec|F|sum|ax1 0.5585 0.0094 0.02 πŸ”΄
100K|dec|C|sum|ax0 0.5615 0.0111 0.02 πŸ”΄
100K|dec|T|sum|ax1 0.5582 0.0111 0.02 πŸ”΄
100K|dec|negrow|sum|ax0 0.5592 0.0114 0.02 πŸ”΄
100K|dec|sliced|sum|ax0 0.5517 0.0115 0.02 πŸ”΄
1M|dec|sliced|sum|ax0 5.5802 0.1240 0.02 πŸ”΄
1M|dec|negrow|sum|ax0 5.5707 0.1242 0.02 πŸ”΄
1M|dec|F|sum|ax1 5.6157 0.1254 0.02 πŸ”΄
1M|dec|T|sum|ax1 5.5849 0.1278 0.02 πŸ”΄
1M|dec|C|sum|ax0 5.5736 0.1524 0.03 πŸ”΄
100K|dec|C|min|ax0 0.3021 0.0141 0.05 πŸ”΄
1M|dec|negcol|sum|ax0 5.6678 0.2866 0.05 πŸ”΄
100K|dec|negcol|sum|ax0 0.5594 0.0302 0.05 πŸ”΄

Copy / identity-ufunc (np.positive)

Geomean by lay

size C F T strided sliced negrow negcol bcast
100K 1.22 βœ… 1.51 βœ… 1.28 βœ… 0.83 🟑 1.54 βœ… 1.48 βœ… 2.20 βœ… 1.62 βœ…
1M 2.82 βœ… 2.89 βœ… 2.88 βœ… 2.08 βœ… 2.58 βœ… 2.64 βœ… 3.16 βœ… 2.66 βœ…

Geomean by dt

size u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 c128
100K 0.92 🟑 1.03 βœ… 1.51 βœ… 1.99 βœ… 1.02 βœ… 1.09 βœ… 1.65 βœ… 1.08 βœ… 2.56 βœ… 2.47 βœ… 1.15 βœ… 0.85 🟑 2.56 βœ…
1M 4.60 βœ… 4.87 βœ… 2.13 βœ… 2.14 βœ… 2.11 βœ… 2.12 βœ… 2.56 βœ… 2.46 βœ… 2.20 βœ… 2.10 βœ… 2.14 βœ… 2.59 βœ… 5.47 βœ…

Worst 15 cells (NumSharp slowest vs NumPy)

key NumSharp ms NumPy ms ratio
100K|f64|strided|pos 0.0243 0.0100 0.41 🟠
100K|u64|strided|pos 0.0241 0.0110 0.46 🟠
100K|i64|strided|pos 0.0237 0.0109 0.46 🟠
100K|f32|strided|pos 0.0216 0.0100 0.46 🟠
100K|i32|strided|pos 0.0213 0.0110 0.52 🟑
100K|i64|C|pos 0.0400 0.0210 0.53 🟑
100K|i64|T|pos 0.0387 0.0208 0.54 🟑
100K|i8|sliced|pos 0.0423 0.0228 0.54 🟑
100K|u8|bcast|pos 0.0416 0.0229 0.55 🟑
100K|u8|sliced|pos 0.0410 0.0227 0.55 🟑
100K|u8|negrow|pos 0.0410 0.0231 0.56 🟑
100K|u32|strided|pos 0.0191 0.0109 0.57 🟑
100K|f64|T|pos 0.0389 0.0227 0.58 🟑
100K|f64|F|pos 0.0362 0.0227 0.63 🟑
100K|f64|C|pos 0.0361 0.0228 0.63 🟑

Elementwise (add/mul/neg/abs/sqrt/less/copy)

Geomean by lay

size C F T strided sliced negrow negcol bcast
100K 0.73 🟑 0.70 🟑 0.68 🟑 0.53 🟑 0.84 🟑 0.85 🟑 1.18 βœ… 0.85 🟑
1M 1.54 βœ… 1.48 βœ… 1.48 βœ… 1.12 βœ… 1.64 βœ… 1.65 βœ… 1.80 βœ… 1.63 βœ…

Geomean by dt

size f64 f32 c128 f16 i32 i64
100K 0.67 🟑 0.57 🟑 1.15 βœ… 0.75 🟑 0.82 🟑 0.81 🟑
1M 1.86 βœ… 1.53 βœ… 1.73 βœ… 0.94 🟑 1.54 βœ… 1.79 βœ…

Geomean by op

size add mul neg abs sqrt less copy
100K 1.04 βœ… 0.99 🟑 0.76 🟑 0.74 🟑 0.94 🟑 0.61 🟑 0.51 🟑
1M 1.81 βœ… 1.78 βœ… 2.11 βœ… 1.62 βœ… 1.50 βœ… 0.68 🟑 1.75 βœ…

Worst 15 cells (NumSharp slowest vs NumPy)

key NumSharp ms NumPy ms ratio
100K|f64|strided|abs 0.0466 0.0077 0.17 πŸ”΄
100K|f64|strided|neg 0.0473 0.0088 0.19 πŸ”΄
100K|i32|bcast|copy 0.0233 0.0050 0.21 🟠
100K|f16|bcast|copy 0.0134 0.0030 0.22 🟠
100K|f16|negrow|copy 0.0168 0.0038 0.23 🟠
100K|f32|C|copy 0.0244 0.0059 0.24 🟠
100K|i64|strided|neg 0.0296 0.0076 0.26 🟠
100K|f64|strided|copy 0.0413 0.0108 0.26 🟠
100K|f64|negrow|copy 0.0595 0.0160 0.27 🟠
100K|f16|sliced|copy 0.0134 0.0037 0.27 🟠
100K|f64|sliced|copy 0.0592 0.0162 0.27 🟠
100K|i32|negrow|copy 0.0234 0.0064 0.28 🟠
100K|f32|C|add 0.0240 0.0066 0.28 🟠
100K|f64|strided|mul 0.0509 0.0142 0.28 🟠
100K|f64|strided|add 0.0516 0.0147 0.28 🟠

Operand & broadcast layouts β€” 1-D / scalar / mixed-operand / broadcast

The layout classes the per-operand layout grid (benchmark/layout) can't express. ratio = NumPy_ms / NumSharp_ms β€” >1.0 = NumSharp faster. βœ…β‰₯1.0 🟑β‰₯0.5 🟠β‰₯0.2 πŸ”΄<0.2. 1M elements, best-of-3.

case f64 f32 f16 i32 i64 c128 geomean
1-D contiguous (a+a) 2.41 βœ… 2.16 βœ… 0.63 🟑 2.13 βœ… 2.45 βœ… 2.35 βœ… 1.85 βœ…
1-D strided a[::2] 1.84 βœ… 1.46 βœ… 0.53 🟑 1.51 βœ… 1.81 βœ… 1.93 βœ… 1.40 βœ…
1-D reversed a[::-1] 2.49 βœ… 1.95 βœ… 0.56 🟑 2.14 βœ… 2.29 βœ… 2.22 βœ… 1.76 βœ…
array + scalar 2.72 βœ… 1.93 βœ… 0.63 🟑 1.91 βœ… 2.26 βœ… 2.64 βœ… 1.83 βœ…
scalar + array 2.40 βœ… 1.98 βœ… 0.64 🟑 2.01 βœ… 2.19 βœ… 2.69 βœ… 1.82 βœ…
mixed C + F 2.29 βœ… 2.02 βœ… 0.62 🟑 2.02 βœ… 2.09 βœ… 1.87 βœ… 1.68 βœ…
mixed C + T 2.53 βœ… 2.04 βœ… 0.62 🟑 2.01 βœ… 2.33 βœ… 2.30 βœ… 1.80 βœ…
binary broadcast +row(1,C) 2.71 βœ… 2.09 βœ… 0.63 🟑 1.95 βœ… 2.52 βœ… 2.58 βœ… 1.89 βœ…
binary broadcast +col(R,1) 2.61 βœ… 2.02 βœ… 0.56 🟑 2.07 βœ… 2.54 βœ… 2.96 βœ… 1.89 βœ…
col-broadcast unary (inner stride-0) 2.54 βœ… 1.56 βœ… 0.88 🟑 1.65 βœ… 2.64 βœ… 6.22 βœ… 2.13 βœ…

Worst 12 cells

key NumSharp ms NumPy ms ratio
1d_strided f16 2.6261 1.3926 0.53 🟑
1d_rev f16 5.2838 2.9653 0.56 🟑
bcast_col f16 5.2887 2.9837 0.56 🟑
mix_C_T f16 5.3031 3.2873 0.62 🟑
mix_C_F f16 5.3153 3.3015 0.62 🟑
1d_C f16 4.7456 2.9682 0.63 🟑
bcast_row f16 4.7695 2.9999 0.63 🟑
scalar_rhs f16 4.7058 2.9602 0.63 🟑
scalar_lhs f16 4.6383 2.9742 0.64 🟑
colbcast_unary f16 0.4753 0.4173 0.88 🟑
1d_strided f32 0.2366 0.3444 1.46 βœ…
1d_strided i32 0.2433 0.3676 1.51 βœ…

60 comparable cells.


Cast matrix — astype src→dst × layout × dtype

Full astype(dst, copy:true) sweep over every srcβ†’dst dtype pair Γ— 8 memory layouts at 1M elements, best-of-3. ratio = NumPy_ms / NumSharp_ms β€” >1.0 = NumSharp faster. βœ…β‰₯1.0 🟑β‰₯0.5 🟠β‰₯0.2 πŸ”΄<0.2 Β· β€” = no NumPy counterpart (Decimal has no NumPy dtype).

Summary

  • 118 / 1568 comparable cells lag (<1.0); 1450 win (β‰₯1.0).
  • πŸ”΄ <0.2 β€” 0 cells.
  • 🟠 0.2–0.5 β€” 1 cells. Top: 1Γ— * β†’ bool
  • 🟑 0.5–1.0 β€” 117 cells. Top: 23Γ— int β†’ sub-word (narrow); 21Γ— float/cplx β†’ narrow-int (bool/u8/i8/i16/u16/char); 8Γ— f16 β†’ f64

float/complex β†’ narrow-int geomean by src (the historical cliff): f32β†’narrow 1.96, f64β†’narrow 1.38, f16β†’narrow 3.71, c128β†’narrow 1.08.

Geomean by layout (all srcΓ—dst, excl. Decimal)

C F T sliced negrow negcol strided bcast
1.86 βœ… 1.88 βœ… 1.93 βœ… 1.95 βœ… 1.97 βœ… 1.82 βœ… 1.47 βœ… 2.25 βœ…

Geomean by src dtype (all layoutsΓ—dst)

bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
2.35 βœ… 2.18 βœ… 2.16 βœ… 2.19 βœ… 2.14 βœ… 1.92 βœ… 1.88 βœ… 1.62 βœ… 1.55 βœ… 1.98 βœ… 2.36 βœ… 1.75 βœ… 1.43 βœ… nan ? 1.23 βœ…

Geomean by dst dtype (all layoutsΓ—src)

bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
2.17 βœ… 1.94 βœ… 1.93 βœ… 1.61 βœ… 1.60 βœ… 1.80 βœ… 1.64 βœ… 1.89 βœ… 1.73 βœ… 1.60 βœ… 2.48 βœ… 1.60 βœ… 2.03 βœ… nan ? 2.59 βœ…

Layout: C (rows=src, cols=dst)

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 3.04βœ… 2.60βœ… 2.76βœ… 2.10βœ… 1.98βœ… 1.53βœ… 1.46βœ… 2.04βœ… 2.25βœ… 1.73βœ… 3.29βœ… 1.71βœ… 2.49βœ… β€” 2.94βœ…
u8 3.55βœ… 1.55βœ… 3.56βœ… 1.69βœ… 1.83βœ… 2.01βœ… 1.89βœ… 2.21βœ… 2.47βœ… 1.62βœ… 3.90βœ… 1.38βœ… 2.41βœ… β€” 3.07βœ…
i8 2.61βœ… 3.17βœ… 0.91🟑 1.82βœ… 1.76βœ… 1.95βœ… 1.95βœ… 2.35βœ… 2.66βœ… 1.76βœ… 3.94βœ… 1.79βœ… 2.64βœ… β€” 2.98βœ…
i16 2.20βœ… 2.29βœ… 2.59βœ… 1.39βœ… 2.11βœ… 2.09βœ… 1.95βœ… 2.42βœ… 2.52βœ… 1.57βœ… 3.71βœ… 1.92βœ… 2.61βœ… β€” 2.79βœ…
u16 2.22βœ… 2.80βœ… 2.81βœ… 2.12βœ… 1.24βœ… 2.09βœ… 2.14βœ… 2.63βœ… 2.22βœ… 1.08βœ… 3.71βœ… 1.93βœ… 2.46βœ… β€” 2.97βœ…
i32 1.50βœ… 1.15βœ… 1.16βœ… 1.46βœ… 1.51βœ… 1.70βœ… 2.12βœ… 2.26βœ… 2.27βœ… 1.43βœ… 3.64βœ… 1.64βœ… 2.62βœ… β€” 2.86βœ…
u32 1.77βœ… 1.18βœ… 1.17βœ… 1.35βœ… 1.44βœ… 2.17βœ… 1.65βœ… 2.19βœ… 2.29βœ… 1.48βœ… 3.66βœ… 1.47βœ… 2.34βœ… β€” 2.69βœ…
i64 1.08βœ… 0.98🟑 0.96🟑 1.23βœ… 1.27βœ… 1.83βœ… 1.78βœ… 1.87βœ… 2.76βœ… 1.38βœ… 1.81βœ… 1.81βœ… 2.22βœ… β€” 2.52βœ…
u64 1.14βœ… 0.92🟑 0.95🟑 1.22βœ… 1.18βœ… 1.73βœ… 1.73βœ… 2.56βœ… 2.09βœ… 1.30βœ… 1.65βœ… 1.14βœ… 1.79βœ… β€” 2.45βœ…
char 2.07βœ… 2.02βœ… 2.14βœ… 1.49βœ… 0.97🟑 1.55βœ… 1.53βœ… 2.26βœ… 2.20βœ… 1.21βœ… 3.67βœ… 1.42βœ… 2.11βœ… β€” 2.62βœ…
f16 4.51βœ… 5.42βœ… 5.35βœ… 3.82βœ… 3.94βœ… 3.80βœ… 1.96βœ… 2.94βœ… 0.99🟑 4.16βœ… 1.25βœ… 1.10βœ… 0.92🟑 β€” 1.64βœ…
f32 2.82βœ… 1.92βœ… 2.05βœ… 1.64βœ… 1.55βœ… 1.84βœ… 1.38βœ… 0.83🟑 0.87🟑 1.48βœ… 3.59βœ… 1.76βœ… 2.21βœ… β€” 2.35βœ…
f64 1.81βœ… 0.81🟑 0.81🟑 1.32βœ… 1.29βœ… 1.68βœ… 1.51βœ… 0.86🟑 0.89🟑 1.38βœ… 1.04βœ… 1.72βœ… 2.05βœ… β€” 2.60βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 1.11βœ… 0.93🟑 0.94🟑 1.19βœ… 1.13βœ… 1.69βœ… 1.35βœ… 0.92🟑 0.84🟑 1.10βœ… 1.50βœ… 1.39βœ… 1.75βœ… β€” 3.18βœ…

Layout: F (rows=src, cols=dst)

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 0.24🟠 2.72βœ… 2.71βœ… 1.94βœ… 1.91βœ… 1.43βœ… 1.42βœ… 2.24βœ… 2.40βœ… 1.89βœ… 4.03βœ… 1.74βœ… 2.55βœ… β€” 2.98βœ…
u8 4.01βœ… 1.11βœ… 3.48βœ… 1.70βœ… 1.71βœ… 2.07βœ… 2.06βœ… 2.11βœ… 2.33βœ… 1.62βœ… 3.89βœ… 1.39βœ… 2.49βœ… β€” 3.06βœ…
i8 3.53βœ… 3.24βœ… 1.05βœ… 1.93βœ… 1.80βœ… 2.14βœ… 2.13βœ… 2.59βœ… 2.51βœ… 1.71βœ… 3.88βœ… 1.77βœ… 2.40βœ… β€” 2.95βœ…
i16 1.87βœ… 2.06βœ… 2.52βœ… 1.31βœ… 1.98βœ… 1.84βœ… 2.01βœ… 2.59βœ… 2.39βœ… 2.19βœ… 3.71βœ… 2.05βœ… 2.39βœ… β€” 3.01βœ…
u16 2.26βœ… 2.74βœ… 2.63βœ… 1.93βœ… 1.27βœ… 1.88βœ… 2.02βœ… 2.68βœ… 2.26βœ… 1.35βœ… 3.65βœ… 1.96βœ… 2.17βœ… β€” 2.85βœ…
i32 1.69βœ… 1.11βœ… 1.18βœ… 1.48βœ… 1.49βœ… 1.76βœ… 2.17βœ… 2.46βœ… 2.48βœ… 1.50βœ… 3.90βœ… 1.72βœ… 2.33βœ… β€” 2.85βœ…
u32 1.85βœ… 1.13βœ… 1.06βœ… 1.54βœ… 1.43βœ… 2.15βœ… 1.64βœ… 2.31βœ… 2.26βœ… 1.50βœ… 3.87βœ… 1.55βœ… 2.16βœ… β€” 2.46βœ…
i64 1.11βœ… 0.94🟑 0.92🟑 1.17βœ… 1.26βœ… 1.88βœ… 1.75βœ… 2.16βœ… 2.70βœ… 1.28βœ… 1.87βœ… 1.55βœ… 2.17βœ… β€” 2.24βœ…
u64 1.15βœ… 0.92🟑 0.94🟑 1.21βœ… 1.13βœ… 1.73βœ… 1.73βœ… 2.46βœ… 2.05βœ… 1.39βœ… 2.48βœ… 1.14βœ… 1.76βœ… β€” 2.34βœ…
char 2.08βœ… 2.63βœ… 2.03βœ… 1.90βœ… 1.20βœ… 1.67βœ… 1.69βœ… 2.52βœ… 2.46βœ… 1.20βœ… 3.60βœ… 1.41βœ… 2.10βœ… β€” 2.89βœ…
f16 4.49βœ… 6.02βœ… 6.33βœ… 3.79βœ… 4.31βœ… 3.73βœ… 2.06βœ… 2.85βœ… 1.11βœ… 4.33βœ… 1.24βœ… 2.44βœ… 0.95🟑 β€” 1.62βœ…
f32 3.44βœ… 2.12βœ… 2.26βœ… 1.62βœ… 1.64βœ… 1.92βœ… 1.35βœ… 0.82🟑 0.84🟑 1.69βœ… 3.63βœ… 1.67βœ… 2.21βœ… β€” 2.26βœ…
f64 1.90βœ… 1.27βœ… 1.33βœ… 1.40βœ… 1.43βœ… 1.95βœ… 1.47βœ… 0.87🟑 0.90🟑 1.41βœ… 1.61βœ… 1.73βœ… 2.05βœ… β€” 2.69βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 0.99🟑 0.91🟑 0.88🟑 1.15βœ… 1.07βœ… 1.57βœ… 1.33βœ… 0.96🟑 0.81🟑 1.09βœ… 1.49βœ… 1.15βœ… 1.75βœ… β€” 3.26βœ…

Layout: T (rows=src, cols=dst)

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 3.40βœ… 3.39βœ… 3.74βœ… 1.71βœ… 1.80βœ… 1.47βœ… 1.41βœ… 2.31βœ… 2.32βœ… 1.91βœ… 4.20βœ… 1.78βœ… 2.68βœ… β€” 2.99βœ…
u8 3.94βœ… 1.21βœ… 2.55βœ… 1.68βœ… 1.68βœ… 2.05βœ… 1.92βœ… 2.21βœ… 2.56βœ… 1.67βœ… 3.98βœ… 1.41βœ… 2.41βœ… β€” 2.98βœ…
i8 2.58βœ… 3.43βœ… 0.85🟑 1.84βœ… 1.75βœ… 2.01βœ… 2.12βœ… 2.50βœ… 2.42βœ… 1.76βœ… 3.79βœ… 1.80βœ… 2.46βœ… β€” 3.04βœ…
i16 2.29βœ… 2.12βœ… 3.21βœ… 1.25βœ… 2.11βœ… 2.01βœ… 2.04βœ… 2.43βœ… 2.25βœ… 2.00βœ… 3.86βœ… 2.02βœ… 2.46βœ… β€” 3.02βœ…
u16 2.23βœ… 2.51βœ… 2.45βœ… 1.91βœ… 1.26βœ… 2.03βœ… 1.99βœ… 2.44βœ… 2.39βœ… 1.44βœ… 3.67βœ… 1.90βœ… 2.29βœ… β€” 2.50βœ…
i32 1.77βœ… 1.13βœ… 1.19βœ… 1.52βœ… 1.52βœ… 1.69βœ… 2.31βœ… 2.07βœ… 2.11βœ… 1.66βœ… 3.96βœ… 1.65βœ… 2.57βœ… β€” 2.95βœ…
u32 1.89βœ… 1.16βœ… 1.16βœ… 1.49βœ… 1.47βœ… 2.25βœ… 1.72βœ… 2.18βœ… 2.15βœ… 1.47βœ… 3.71βœ… 1.49βœ… 2.27βœ… β€” 2.82βœ…
i64 1.28βœ… 1.04βœ… 0.93🟑 1.25βœ… 1.27βœ… 1.79βœ… 1.78βœ… 2.09βœ… 2.64βœ… 1.33βœ… 1.86βœ… 1.74βœ… 2.23βœ… β€” 2.69βœ…
u64 1.20βœ… 0.94🟑 0.95🟑 1.21βœ… 1.16βœ… 1.79βœ… 1.62βœ… 2.52βœ… 2.00βœ… 1.36βœ… 2.47βœ… 1.12βœ… 1.90βœ… β€” 2.54βœ…
char 2.14βœ… 2.15βœ… 2.63βœ… 1.84βœ… 1.22βœ… 1.61βœ… 1.62βœ… 2.24βœ… 2.47βœ… 1.31βœ… 3.50βœ… 1.44βœ… 2.32βœ… β€” 2.56βœ…
f16 5.17βœ… 6.28βœ… 6.15βœ… 4.27βœ… 4.26βœ… 3.56βœ… 2.03βœ… 3.02βœ… 1.14βœ… 4.33βœ… 1.18βœ… 2.84βœ… 1.00🟑 β€” 1.65βœ…
f32 3.33βœ… 2.16βœ… 2.30βœ… 1.77βœ… 1.63βœ… 2.04βœ… 1.38βœ… 0.83🟑 0.86🟑 1.63βœ… 3.75βœ… 1.70βœ… 2.56βœ… β€” 2.20βœ…
f64 2.00βœ… 1.35βœ… 1.35βœ… 1.37βœ… 1.41βœ… 1.81βœ… 1.48βœ… 0.87🟑 0.89🟑 1.31βœ… 1.63βœ… 1.74βœ… 1.93βœ… β€” 2.61βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 1.00βœ… 1.11βœ… 1.21βœ… 1.27βœ… 1.18βœ… 1.66βœ… 1.28βœ… 0.90🟑 0.85🟑 1.11βœ… 1.53βœ… 1.41βœ… 1.79βœ… β€” 3.42βœ…

Layout: sliced (rows=src, cols=dst)

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 3.14βœ… 5.84βœ… 5.99βœ… 1.96βœ… 2.00βœ… 1.49βœ… 1.56βœ… 2.38βœ… 2.06βœ… 1.99βœ… 3.95βœ… 1.74βœ… 2.66βœ… β€” 3.02βœ…
u8 2.74βœ… 1.25βœ… 3.91βœ… 1.79βœ… 1.88βœ… 2.24βœ… 2.14βœ… 2.44βœ… 2.55βœ… 1.72βœ… 3.71βœ… 1.40βœ… 2.83βœ… β€” 3.17βœ…
i8 2.96βœ… 3.03βœ… 0.92🟑 1.75βœ… 1.74βœ… 1.99βœ… 1.92βœ… 2.30βœ… 2.14βœ… 1.65βœ… 3.86βœ… 1.69βœ… 2.48βœ… β€” 3.07βœ…
i16 2.25βœ… 2.82βœ… 2.56βœ… 1.45βœ… 1.71βœ… 1.93βœ… 1.90βœ… 2.47βœ… 2.50βœ… 1.62βœ… 3.54βœ… 2.06βœ… 2.58βœ… β€” 2.85βœ…
u16 2.98βœ… 2.66βœ… 2.90βœ… 1.46βœ… 1.33βœ… 2.06βœ… 1.96βœ… 2.50βœ… 2.20βœ… 1.36βœ… 3.62βœ… 1.88βœ… 2.45βœ… β€” 3.01βœ…
i32 1.94βœ… 2.20βœ… 2.10βœ… 1.43βœ… 1.54βœ… 1.90βœ… 1.81βœ… 2.14βœ… 2.23βœ… 1.55βœ… 3.70βœ… 1.58βœ… 2.39βœ… β€” 2.86βœ…
u32 1.99βœ… 2.01βœ… 2.13βœ… 1.44βœ… 1.53βœ… 2.02βœ… 1.85βœ… 2.10βœ… 2.22βœ… 1.55βœ… 3.72βœ… 1.47βœ… 2.12βœ… β€” 2.74βœ…
i64 1.20βœ… 1.18βœ… 1.28βœ… 1.42βœ… 1.33βœ… 1.78βœ… 1.78βœ… 2.22βœ… 2.35βœ… 1.42βœ… 1.82βœ… 1.52βœ… 2.36βœ… β€” 2.68βœ…
u64 1.29βœ… 1.24βœ… 1.22βœ… 1.33βœ… 1.30βœ… 1.74βœ… 1.79βœ… 2.14βœ… 2.22βœ… 1.36βœ… 2.39βœ… 0.97🟑 1.58βœ… β€” 2.45βœ…
char 2.16βœ… 2.26βœ… 2.43βœ… 1.50βœ… 1.31βœ… 1.61βœ… 1.60βœ… 2.27βœ… 2.32βœ… 1.31βœ… 3.47βœ… 1.42βœ… 2.23βœ… β€” 2.80βœ…
f16 4.70βœ… 4.95βœ… 4.99βœ… 4.11βœ… 4.05βœ… 4.02βœ… 1.97βœ… 3.08βœ… 1.10βœ… 4.21βœ… 1.33βœ… 2.70βœ… 0.96🟑 β€” 1.49βœ…
f32 3.63βœ… 2.20βœ… 2.35βœ… 1.64βœ… 1.67βœ… 1.90βœ… 1.34βœ… 0.86🟑 0.88🟑 1.59βœ… 3.62βœ… 1.97βœ… 2.04βœ… β€” 2.35βœ…
f64 2.01βœ… 1.26βœ… 1.31βœ… 1.42βœ… 1.33βœ… 0.70🟑 1.49βœ… 0.84🟑 0.84🟑 1.34βœ… 1.58βœ… 1.71βœ… 2.49βœ… β€” 2.58βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 0.97🟑 1.07βœ… 0.96🟑 1.13βœ… 1.14βœ… 1.72βœ… 1.30βœ… 0.93🟑 0.80🟑 0.91🟑 1.47βœ… 1.40βœ… 1.75βœ… β€” 2.20βœ…

Layout: negrow (rows=src, cols=dst)

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 3.38βœ… 4.26βœ… 4.97βœ… 1.92βœ… 2.03βœ… 1.41βœ… 1.57βœ… 2.32βœ… 2.40βœ… 1.98βœ… 3.91βœ… 1.79βœ… 2.59βœ… β€” 3.34βœ…
u8 3.67βœ… 1.14βœ… 3.99βœ… 1.71βœ… 1.63βœ… 2.15βœ… 2.24βœ… 2.37βœ… 2.35βœ… 1.87βœ… 3.81βœ… 1.44βœ… 2.29βœ… β€” 3.05βœ…
i8 3.35βœ… 3.21βœ… 0.97🟑 2.04βœ… 1.87βœ… 2.02βœ… 2.04βœ… 2.32βœ… 2.48βœ… 1.72βœ… 3.67βœ… 1.73βœ… 2.58βœ… β€” 3.25βœ…
i16 3.19βœ… 2.80βœ… 2.70βœ… 1.39βœ… 1.68βœ… 1.99βœ… 2.03βœ… 2.29βœ… 2.48βœ… 1.78βœ… 3.72βœ… 2.09βœ… 2.42βœ… β€” 3.13βœ…
u16 2.41βœ… 2.59βœ… 2.35βœ… 1.53βœ… 1.32βœ… 1.77βœ… 1.84βœ… 2.45βœ… 2.56βœ… 1.53βœ… 3.57βœ… 2.04βœ… 2.46βœ… β€” 2.82βœ…
i32 2.01βœ… 2.01βœ… 2.04βœ… 1.52βœ… 1.53βœ… 1.97βœ… 1.89βœ… 2.21βœ… 2.32βœ… 1.57βœ… 3.58βœ… 1.54βœ… 2.04βœ… β€” 2.86βœ…
u32 1.96βœ… 2.10βœ… 2.14βœ… 1.47βœ… 1.49βœ… 1.80βœ… 1.91βœ… 2.27βœ… 2.52βœ… 1.59βœ… 3.59βœ… 1.50βœ… 2.18βœ… β€” 2.54βœ…
i64 1.17βœ… 1.21βœ… 1.33βœ… 1.39βœ… 1.41βœ… 1.84βœ… 1.78βœ… 2.65βœ… 2.22βœ… 1.31βœ… 1.84βœ… 1.46βœ… 2.33βœ… β€” 2.59βœ…
u64 1.13βœ… 1.26βœ… 1.29βœ… 1.33βœ… 1.37βœ… 1.83βœ… 1.96βœ… 2.17βœ… 2.39βœ… 1.31βœ… 2.35βœ… 1.00🟑 1.59βœ… β€” 2.32βœ…
char 2.36βœ… 2.38βœ… 2.28βœ… 1.71βœ… 1.37βœ… 1.57βœ… 1.58βœ… 2.34βœ… 2.32βœ… 1.33βœ… 3.52βœ… 1.49βœ… 2.37βœ… β€” 2.79βœ…
f16 5.08βœ… 4.80βœ… 4.78βœ… 3.80βœ… 3.83βœ… 3.85βœ… 2.03βœ… 3.13βœ… 1.09βœ… 3.83βœ… 1.34βœ… 2.87βœ… 0.97🟑 β€” 1.60βœ…
f32 3.30βœ… 2.23βœ… 2.25βœ… 1.60βœ… 1.67βœ… 1.91βœ… 1.36βœ… 0.84🟑 0.85🟑 1.66βœ… 3.58βœ… 1.95βœ… 2.09βœ… β€” 2.25βœ…
f64 1.87βœ… 1.23βœ… 1.33βœ… 1.44βœ… 1.48βœ… 1.87βœ… 1.44βœ… 0.80🟑 0.88🟑 1.46βœ… 1.58βœ… 1.69βœ… 2.36βœ… β€” 2.54βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 1.10βœ… 0.94🟑 1.01βœ… 1.15βœ… 1.11βœ… 1.47βœ… 1.37βœ… 0.87🟑 0.92🟑 1.26βœ… 1.41βœ… 1.37βœ… 1.61βœ… β€” 2.29βœ…

Layout: negcol (rows=src, cols=dst)

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 4.56βœ… 7.06βœ… 6.59βœ… 2.26βœ… 2.21βœ… 1.54βœ… 1.48βœ… 2.25βœ… 2.21βœ… 2.40βœ… 2.80βœ… 1.88βœ… 2.48βœ… β€” 3.10βœ…
u8 1.42βœ… 3.55βœ… 3.38βœ… 2.00βœ… 1.85βœ… 1.77βœ… 1.83βœ… 2.16βœ… 2.24βœ… 1.88βœ… 2.52βœ… 1.47βœ… 2.46βœ… β€” 3.02βœ…
i8 1.31βœ… 4.32βœ… 2.73βœ… 1.70βœ… 1.89βœ… 1.82βœ… 1.83βœ… 2.24βœ… 2.26βœ… 1.73βœ… 2.63βœ… 1.65βœ… 2.37βœ… β€” 3.10βœ…
i16 3.46βœ… 2.49βœ… 2.83βœ… 1.78βœ… 1.77βœ… 1.66βœ… 1.68βœ… 2.17βœ… 2.25βœ… 1.70βœ… 2.01βœ… 1.78βœ… 2.24βœ… β€” 2.86βœ…
u16 3.61βœ… 3.01βœ… 3.11βœ… 1.76βœ… 1.62βœ… 1.68βœ… 1.75βœ… 2.43βœ… 2.22βœ… 1.69βœ… 2.02βœ… 1.43βœ… 2.38βœ… β€” 2.92βœ…
i32 2.10βœ… 1.95βœ… 1.67βœ… 1.60βœ… 1.61βœ… 1.55βœ… 1.55βœ… 2.56βœ… 2.15βœ… 1.68βœ… 2.06βœ… 1.65βœ… 2.06βœ… β€” 2.76βœ…
u32 2.08βœ… 1.60βœ… 1.53βœ… 1.59βœ… 1.58βœ… 1.48βœ… 1.61βœ… 2.46βœ… 2.30βœ… 1.63βœ… 2.02βœ… 1.47βœ… 2.34βœ… β€” 2.84βœ…
i64 1.33βœ… 0.96🟑 0.97🟑 1.29βœ… 1.41βœ… 1.75βœ… 1.87βœ… 2.41βœ… 2.36βœ… 1.39βœ… 1.30βœ… 1.58βœ… 2.17βœ… β€” 2.44βœ…
u64 1.26βœ… 1.01βœ… 0.93🟑 1.27βœ… 1.33βœ… 1.72βœ… 1.69βœ… 2.32βœ… 2.19βœ… 1.34βœ… 1.65βœ… 1.05βœ… 1.50βœ… β€” 2.50βœ…
char 3.38βœ… 2.34βœ… 3.24βœ… 1.67βœ… 1.60βœ… 1.67βœ… 1.65βœ… 2.21βœ… 2.35βœ… 1.64βœ… 2.03βœ… 1.56βœ… 2.27βœ… β€” 2.96βœ…
f16 4.65βœ… 1.73βœ… 1.73βœ… 1.74βœ… 1.76βœ… 2.23βœ… 1.33βœ… 2.07βœ… 0.89🟑 1.76βœ… 1.61βœ… 1.56βœ… 0.96🟑 β€” 1.51βœ…
f32 2.48βœ… 1.71βœ… 1.67βœ… 1.65βœ… 1.62βœ… 1.90βœ… 1.08βœ… 0.85🟑 0.81🟑 1.61βœ… 1.94βœ… 1.62βœ… 1.20βœ… β€” 2.30βœ…
f64 1.45βœ… 1.12βœ… 1.10βœ… 1.33βœ… 1.38βœ… 1.75βœ… 1.10βœ… 0.83🟑 0.83🟑 1.39βœ… 1.19βœ… 1.65βœ… 2.67βœ… β€” 2.68βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 1.02βœ… 0.98🟑 1.08βœ… 1.19βœ… 1.10βœ… 1.54βœ… 1.16βœ… 0.98🟑 0.90🟑 1.22βœ… 0.95🟑 1.49βœ… 1.71βœ… β€” 2.26βœ…

Layout: strided (rows=src, cols=dst)

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 2.26βœ… 3.65βœ… 3.30βœ… 3.63βœ… 3.72βœ… 1.18βœ… 1.12βœ… 1.74βœ… 1.77βœ… 2.09βœ… 2.71βœ… 1.41βœ… 1.75βœ… β€” 2.30βœ…
u8 0.97🟑 2.00βœ… 2.27βœ… 2.28βœ… 1.89βœ… 1.30βœ… 1.27βœ… 2.06βœ… 1.84βœ… 1.90βœ… 2.55βœ… 1.13βœ… 1.78βœ… β€” 2.61βœ…
i8 0.91🟑 2.13βœ… 2.46βœ… 1.91βœ… 1.77βœ… 1.35βœ… 1.55βœ… 2.04βœ… 1.89βœ… 1.86βœ… 2.45βœ… 1.33βœ… 1.92βœ… β€” 2.34βœ…
i16 2.41βœ… 1.68βœ… 1.97βœ… 1.14βœ… 2.07βœ… 1.21βœ… 1.26βœ… 1.90βœ… 1.96βœ… 1.70βœ… 1.89βœ… 1.18βœ… 1.73βœ… β€” 2.39βœ…
u16 2.39βœ… 1.77βœ… 1.76βœ… 1.37βœ… 1.41βœ… 1.29βœ… 1.32βœ… 1.89βœ… 1.90βœ… 1.52βœ… 1.90βœ… 1.04βœ… 1.81βœ… β€” 2.32βœ…
i32 1.60βœ… 1.43βœ… 1.39βœ… 1.16βœ… 1.16βœ… 1.23βœ… 1.08βœ… 1.86βœ… 1.78βœ… 1.26βœ… 1.88βœ… 1.28βœ… 1.76βœ… β€” 2.44βœ…
u32 1.74βœ… 1.22βœ… 1.18βœ… 1.10βœ… 1.25βœ… 1.13βœ… 1.14βœ… 1.86βœ… 1.84βœ… 1.18βœ… 1.95βœ… 1.13βœ… 1.77βœ… β€” 2.24βœ…
i64 1.11βœ… 0.95🟑 0.94🟑 0.86🟑 0.94🟑 1.22βœ… 1.35βœ… 1.77βœ… 1.74βœ… 0.91🟑 1.19βœ… 1.26βœ… 1.74βœ… β€” 2.43βœ…
u64 1.07βœ… 0.93🟑 0.94🟑 0.83🟑 1.01βœ… 1.20βœ… 1.27βœ… 1.58βœ… 1.70βœ… 1.03βœ… 1.48βœ… 0.74🟑 1.47βœ… β€” 2.17βœ…
char 2.39βœ… 1.80βœ… 1.68βœ… 1.26βœ… 1.49βœ… 1.21βœ… 1.30βœ… 1.85βœ… 1.75βœ… 1.51βœ… 1.83βœ… 1.13βœ… 1.73βœ… β€” 2.34βœ…
f16 2.62βœ… 1.49βœ… 1.52βœ… 1.59βœ… 1.66βœ… 1.76βœ… 1.14βœ… 1.85βœ… 0.89🟑 1.59βœ… 1.11βœ… 1.23βœ… 0.95🟑 β€” 1.44βœ…
f32 1.98βœ… 1.31βœ… 1.31βœ… 1.30βœ… 1.37βœ… 1.34βœ… 0.91🟑 0.94🟑 0.80🟑 1.30βœ… 1.78βœ… 1.16βœ… 1.20βœ… β€” 2.43βœ…
f64 1.25βœ… 0.98🟑 0.97🟑 0.91🟑 0.86🟑 1.22βœ… 0.94🟑 0.89🟑 0.80🟑 0.94🟑 1.06βœ… 1.07βœ… 1.81βœ… β€” 2.08βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 1.07βœ… 1.14βœ… 0.99🟑 0.93🟑 0.91🟑 1.15βœ… 1.03βœ… 0.97🟑 0.83🟑 0.94🟑 0.89🟑 1.08βœ… 1.59βœ… β€” 1.66βœ…

Layout: bcast (rows=src, cols=dst)

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 1.26βœ… 5.38βœ… 6.24βœ… 2.28βœ… 2.24βœ… 1.51βœ… 1.46βœ… 2.32βœ… 2.18βœ… 2.26βœ… 3.97βœ… 1.91βœ… 2.37βœ… β€” 3.14βœ…
u8 4.95βœ… 0.89🟑 4.29βœ… 1.87βœ… 1.88βœ… 2.08βœ… 2.14βœ… 2.52βœ… 2.39βœ… 1.87βœ… 3.76βœ… 2.32βœ… 2.15βœ… β€” 2.95βœ…
i8 5.13βœ… 4.15βœ… 0.80🟑 1.82βœ… 1.87βœ… 2.12βœ… 2.43βœ… 2.55βœ… 2.38βœ… 1.91βœ… 3.81βœ… 2.16βœ… 2.28βœ… β€” 3.14βœ…
i16 4.77βœ… 3.50βœ… 3.80βœ… 1.60βœ… 1.72βœ… 1.98βœ… 1.91βœ… 2.18βœ… 2.32βœ… 1.69βœ… 3.62βœ… 2.22βœ… 2.52βœ… β€” 3.12βœ…
u16 4.57βœ… 4.20βœ… 3.20βœ… 1.85βœ… 1.63βœ… 1.98βœ… 1.89βœ… 2.26βœ… 2.27βœ… 1.66βœ… 3.72βœ… 2.08βœ… 2.26βœ… β€” 2.70βœ…
i32 3.42βœ… 2.89βœ… 3.25βœ… 1.70βœ… 1.67βœ… 2.12βœ… 1.92βœ… 2.09βœ… 2.34βœ… 1.94βœ… 3.82βœ… 2.24βœ… 2.67βœ… β€” 3.00βœ…
u32 3.64βœ… 3.72βœ… 2.42βœ… 1.66βœ… 1.77βœ… 2.02βœ… 1.99βœ… 2.23βœ… 2.31βœ… 1.90βœ… 3.73βœ… 2.29βœ… 2.27βœ… β€” 2.94βœ…
i64 2.70βœ… 2.23βœ… 2.29βœ… 1.73βœ… 1.72βœ… 2.04βœ… 2.10βœ… 2.41βœ… 2.12βœ… 1.72βœ… 1.85βœ… 2.08βœ… 2.00βœ… β€” 2.67βœ…
u64 2.57βœ… 2.40βœ… 2.16βœ… 1.60βœ… 1.66βœ… 2.08βœ… 1.92βœ… 2.24βœ… 2.29βœ… 1.75βœ… 2.43βœ… 2.26βœ… 2.14βœ… β€” 2.72βœ…
char 4.78βœ… 3.81βœ… 3.84βœ… 1.74βœ… 1.50βœ… 1.65βœ… 1.66βœ… 2.17βœ… 2.36βœ… 1.65βœ… 3.64βœ… 1.54βœ… 2.36βœ… β€” 2.75βœ…
f16 6.87βœ… 5.51βœ… 5.35βœ… 4.23βœ… 4.21βœ… 3.88βœ… 2.04βœ… 3.04βœ… 1.09βœ… 3.86βœ… 1.46βœ… 2.87βœ… 0.96🟑 β€” 1.55βœ…
f32 4.89βœ… 3.29βœ… 2.71βœ… 1.88βœ… 2.02βœ… 2.15βœ… 1.47βœ… 2.21βœ… 0.86🟑 1.84βœ… 3.65βœ… 2.09βœ… 2.11βœ… β€” 2.29βœ…
f64 2.70βœ… 2.15βœ… 2.14βœ… 1.78βœ… 1.77βœ… 2.11βœ… 1.49βœ… 1.99βœ… 0.88🟑 1.81βœ… 1.58βœ… 2.04βœ… 2.51βœ… β€” 2.66βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 1.09βœ… 1.06βœ… 1.05βœ… 1.38βœ… 1.40βœ… 1.75βœ… 1.35βœ… 0.84🟑 0.80🟑 1.39βœ… 1.50βœ… 1.56βœ… 2.01βœ… β€” 2.94βœ…

Lagging cells (<1.0) β€” the worklist (118 cells)

key NumSharp ms NumPy ms ratio
bool|F|bool 0.0595 0.0144 0.24 🟠
f64|sliced|i32 0.9124 0.6414 0.70 🟑
u64|strided|f32 0.5215 0.3885 0.74 🟑
c128|bcast|u64 1.5413 1.2301 0.80 🟑
f32|strided|u64 0.7987 0.6399 0.80 🟑
i8|bcast|i8 0.0619 0.0496 0.80 🟑
c128|sliced|u64 1.7479 1.4021 0.80 🟑
f64|strided|u64 0.7758 0.6243 0.80 🟑
f64|negrow|i64 1.5209 1.2241 0.80 🟑
c128|F|u64 1.7023 1.3717 0.81 🟑
f32|negcol|u64 1.5659 1.2627 0.81 🟑
f64|C|i8 0.2927 0.2376 0.81 🟑
f64|C|u8 0.2892 0.2350 0.81 🟑
f32|F|i64 1.4588 1.1945 0.82 🟑
c128|strided|u64 0.9366 0.7745 0.83 🟑
u64|strided|i16 0.1726 0.1432 0.83 🟑
f32|C|i64 1.4773 1.2276 0.83 🟑
f64|negcol|u64 1.5574 1.2946 0.83 🟑
f32|T|i64 1.4640 1.2208 0.83 🟑
f64|negcol|i64 1.4625 1.2196 0.83 🟑
c128|C|u64 1.6652 1.3911 0.84 🟑
f32|negrow|i64 1.4768 1.2373 0.84 🟑
f32|F|u64 1.4675 1.2315 0.84 🟑
f64|sliced|i64 1.4533 1.2221 0.84 🟑
c128|bcast|i64 1.4280 1.2013 0.84 🟑
f64|sliced|u64 1.4453 1.2198 0.84 🟑
i8|T|i8 0.0613 0.0519 0.85 🟑
c128|T|u64 1.6154 1.3692 0.85 🟑
f32|negrow|u64 1.4957 1.2720 0.85 🟑
f32|negcol|i64 1.4173 1.2088 0.85 🟑
f64|C|i64 1.4556 1.2468 0.86 🟑
i64|strided|i16 0.1748 0.1499 0.86 🟑
f32|sliced|i64 1.4408 1.2354 0.86 🟑
f64|strided|u16 0.1706 0.1469 0.86 🟑
f32|T|u64 1.4532 1.2546 0.86 🟑
f32|bcast|u64 1.4571 1.2602 0.86 🟑
c128|negrow|i64 1.5665 1.3619 0.87 🟑
f64|F|i64 1.4506 1.2612 0.87 🟑
f64|T|i64 1.4409 1.2540 0.87 🟑
f32|C|u64 1.4695 1.2834 0.87 🟑
f64|bcast|u64 1.4020 1.2277 0.88 🟑
f64|negrow|u64 1.4430 1.2673 0.88 🟑
c128|F|i8 0.3572 0.3148 0.88 🟑
f32|sliced|u64 1.4888 1.3174 0.88 🟑
f16|negcol|u64 2.1147 1.8765 0.89 🟑
u8|bcast|u8 0.0587 0.0522 0.89 🟑
f64|strided|i64 0.7057 0.6283 0.89 🟑
f64|C|u64 1.4293 1.2761 0.89 🟑
f16|strided|u64 1.0346 0.9241 0.89 🟑
c128|strided|f16 0.8811 0.7874 0.89 🟑
f64|T|u64 1.4221 1.2717 0.89 🟑
c128|T|i64 1.5151 1.3650 0.90 🟑
c128|negcol|u64 1.6586 1.4945 0.90 🟑
f64|F|u64 1.4496 1.3097 0.90 🟑
f32|strided|u32 0.3838 0.3480 0.91 🟑
c128|sliced|char 0.5601 0.5081 0.91 🟑
f64|strided|i16 0.1641 0.1489 0.91 🟑
c128|F|u8 0.3391 0.3083 0.91 🟑
i64|strided|char 0.1534 0.1397 0.91 🟑
i8|strided|bool 0.1632 0.1489 0.91 🟑
i8|C|i8 0.0595 0.0543 0.91 🟑
c128|strided|u16 0.3051 0.2789 0.91 🟑
c128|C|i64 1.5153 1.3895 0.92 🟑
u64|F|u8 0.2149 0.1979 0.92 🟑
c128|negrow|u64 1.7009 1.5680 0.92 🟑
i64|F|i8 0.2150 0.1982 0.92 🟑
f16|C|f64 1.5894 1.4665 0.92 🟑
u64|C|u8 0.2155 0.1988 0.92 🟑
i8|sliced|i8 0.0575 0.0530 0.92 🟑
c128|strided|i16 0.3130 0.2897 0.93 🟑
c128|C|u8 0.3526 0.3283 0.93 🟑
u64|negcol|i8 0.2475 0.2306 0.93 🟑
i64|T|i8 0.2114 0.1973 0.93 🟑
c128|sliced|i64 1.4869 1.3889 0.93 🟑
u64|strided|u8 0.1409 0.1316 0.93 🟑
c128|strided|char 0.2944 0.2754 0.94 🟑
f32|strided|i64 0.7048 0.6596 0.94 🟑
c128|C|i8 0.3417 0.3201 0.94 🟑
i64|strided|u16 0.1550 0.1454 0.94 🟑
u64|F|i8 0.2121 0.1991 0.94 🟑
u64|strided|i8 0.1389 0.1305 0.94 🟑
u64|T|u8 0.2105 0.1978 0.94 🟑
i64|F|u8 0.2204 0.2078 0.94 🟑
c128|negrow|u8 0.3492 0.3294 0.94 🟑
f64|strided|char 0.1593 0.1504 0.94 🟑
f64|strided|u32 0.3797 0.3587 0.94 🟑
i64|strided|i8 0.1438 0.1358 0.94 🟑
u64|C|i8 0.2096 0.1981 0.95 🟑
f16|strided|f64 0.7709 0.7306 0.95 🟑
f16|F|f64 1.5066 1.4286 0.95 🟑
i64|strided|u8 0.1424 0.1351 0.95 🟑
u64|T|i8 0.2094 0.1987 0.95 🟑
c128|negcol|f16 1.8203 1.7315 0.95 🟑
f16|sliced|f64 1.4890 1.4241 0.96 🟑
c128|F|i64 1.5008 1.4359 0.96 🟑
i64|negcol|u8 0.2439 0.2335 0.96 🟑
f16|bcast|f64 1.5177 1.4532 0.96 🟑
c128|sliced|i8 0.3253 0.3118 0.96 🟑
i64|C|i8 0.2090 0.2004 0.96 🟑
f16|negcol|f64 1.5238 1.4668 0.96 🟑
char|C|u16 0.2540 0.2457 0.97 🟑
c128|sliced|bool 0.4498 0.4355 0.97 🟑
c128|strided|i64 0.8006 0.7755 0.97 🟑
u64|sliced|f32 0.7665 0.7425 0.97 🟑
f16|negrow|f64 1.5293 1.4823 0.97 🟑
f64|strided|i8 0.1454 0.1413 0.97 🟑
i8|negrow|i8 0.0558 0.0542 0.97 🟑
u8|strided|bool 0.1537 0.1495 0.97 🟑
i64|negcol|i8 0.2480 0.2414 0.97 🟑
i64|C|u8 0.2108 0.2062 0.98 🟑
c128|negcol|u8 0.3485 0.3423 0.98 🟑
f64|strided|u8 0.1456 0.1431 0.98 🟑
c128|negcol|i64 1.6104 1.5838 0.98 🟑
f16|C|u64 1.8886 1.8634 0.99 🟑
c128|F|bool 0.4151 0.4098 0.99 🟑
c128|strided|i8 0.2650 0.2633 0.99 🟑
f16|T|f64 1.4800 1.4751 1.00 🟑
u64|negrow|f32 0.7923 0.7904 1.00 🟑

1568 comparable cells (1800 NumSharp rows; 118 lagging <1.0).


Fusion β€” np.evaluate vs unfused chains

np.evaluate runs a whole expression tree in one NDIter pass (no intermediates). Fixed-expression gate plus an operand-layout sweep of the flagship a*b+c (C/F/T/strided/bcast β€” does the fused single-pass win survive non-contiguous operands?), not a dtype/layout matrix β€” so reported as-is.

NumSharp β€” fused np.evaluate vs unfused np.* chains (4M elements, best-of-9; (Nx) = unfused Γ· fused, >1 = fusion faster):

correctness cross-checks ok

4M float64, best of 9:
  a*b+c       fused    3.53 ms   unfused    6.08 ms   (1.72x)
  (a-b)/(a+b) fused    3.16 ms   unfused   12.32 ms   (3.90x)
  sum(a*b)    fused    2.30 ms   unfused    4.33 ms   (1.88x)
  sum(af*bf)  fused    1.43 ms   unfused    1.57 ms   (1.10x)  [f32]
  a*b+c out=  fused    3.56 ms   [1-pass fused-into-out]
  i4*2+f8     fused    2.78 ms   unfused    4.04 ms   (1.45x)

  a*b+c across operand layouts (2-D 2000x2000, all 3 operands same layout):
    [C      ] fused    3.43 ms   unfused    6.05 ms   (1.77x)
    [F      ] fused    3.52 ms   unfused    6.18 ms   (1.75x)
    [T      ] fused    3.50 ms   unfused    6.27 ms   (1.79x)
    [strided] fused    3.31 ms   unfused    4.72 ms   (1.43x)
    [bcast  ] fused    1.06 ms   unfused    3.75 ms   (3.53x)

NumPy β€” absolutes on the same box (context for the unfused column):

numpy 2.4.2, 4M float64, best of 9:
  a*b+c         12.35 ms
  (a-b)/(a+b)   18.75 ms
  sum(a*b)       8.60 ms
  sum(af*bf)     4.14 ms  [f32]
  a*b+c out=     4.68 ms  [two-pass with out=]
  i4*2+f8        9.67 ms
  a*b+c across operand layouts (2-D 2000x2000, unfused):
    [C      ]   12.52 ms
    [F      ]   12.54 ms
    [T      ]   12.51 ms
    [strided]    7.91 ms
    [bcast  ]   11.95 ms