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 | βœ… 792 | 🟑 357 | 🟠 177 | πŸ”΄ 72 | β–« 384 | βšͺ 69

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 115 69 27 13 366 25 1.14x 87%
50,000 1 0 0 0 0 0 1 - -
100,000 615 280 138 119 48 9 21 0.90x 111%
5,000,000 1 0 0 0 0 0 1 - -
10,000,000 615 397 150 31 11 9 17 1.26x 80%

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

Ranked over 1398 credible comparisons (both sides β‰₯1Β΅s, within 20Γ—); 384 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.dot(a, b) (float64) float64 100,000 0.099 0.007 14.17Γ— 7%
βœ… np.prod (float64) float64 100,000 2.336 0.170 13.75Γ— 7%
βœ… np.nanstd(a) (float64) float64 1,000 0.020 0.002 13.33Γ— 8%
βœ… np.nanstd(a) (float16) float16 1,000 0.034 0.003 12.50Γ— 8%
βœ… np.percentile(a, 50) (float64) float64 1,000 0.030 0.003 12.18Γ— 8%
βœ… np.nanquantile(a, 0.5) (float32) float32 1,000 0.028 0.002 11.86Γ— 8%
βœ… np.nanvar(a) (float16) float16 1,000 0.032 0.003 11.67Γ— 9%
βœ… np.nanpercentile(a, 50) (float32) float32 1,000 0.027 0.002 11.51Γ— 9%
βœ… np.nanpercentile(a, 50) (float64) float64 1,000 0.030 0.003 11.42Γ— 9%
βœ… np.nanvar(a) (float64) float64 1,000 0.017 0.002 11.42Γ— 9%
βœ… np.nanstd(a) (float32) float32 1,000 0.019 0.002 11.39Γ— 9%
βœ… np.nanvar(a) (float32) float32 1,000 0.019 0.002 11.19Γ— 9%
βœ… np.sum axis=0 (int8) int8 10,000,000 4.456 0.399 11.16Γ— 9%
βœ… np.sum axis=0 (int8) int8 100,000 0.047 0.004 10.78Γ— 9%
βœ… np.percentile(a, 50) (float32) float32 1,000 0.024 0.002 10.51Γ— 10%

πŸ”» Top 15 Worst (Optimization priorities)

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
πŸ”΄ np.left_shift(a, 2) (int32) int32 100,000 0.019 0.390 0.049Γ— 2035%
πŸ”΄ np.left_shift(a, 2) (uint64) uint64 100,000 0.020 0.392 0.050Γ— 1992%
πŸ”΄ np.left_shift(a, 2) (int64) int64 100,000 0.020 0.392 0.051Γ— 1945%
πŸ”΄ np.left_shift(a, 2) (uint32) uint32 100,000 0.020 0.391 0.051Γ— 1944%
πŸ”΄ np.right_shift(a, 2) (uint64) uint64 100,000 0.021 0.393 0.052Γ— 1908%
πŸ”΄ np.right_shift(a, 2) (uint32) uint32 100,000 0.020 0.390 0.052Γ— 1930%
πŸ”΄ np.zeros_like (float64) float64 1,000 0.001 0.015 0.068Γ— 1471%
πŸ”΄ np.right_shift(a, 2) (int64) int64 100,000 0.029 0.393 0.074Γ— 1357%
πŸ”΄ np.right_shift(a, 2) (int32) int32 100,000 0.029 0.390 0.074Γ— 1353%
πŸ”΄ np.right_shift(a, 2) (uint16) uint16 100,000 0.029 0.387 0.074Γ— 1355%
πŸ”΄ np.left_shift(a, 2) (int16) int16 100,000 0.028 0.381 0.074Γ— 1350%
πŸ”΄ np.sum (float64) float64 100,000 0.016 0.214 0.074Γ— 1345%
πŸ”΄ np.left_shift(a, 2) (uint8) uint8 100,000 0.028 0.375 0.075Γ— 1330%
πŸ”΄ np.left_shift(a, 2) (uint16) uint16 100,000 0.029 0.388 0.076Γ— 1322%
πŸ”΄ np.right_shift(a, 2) (uint8) uint8 100,000 0.029 0.376 0.076Γ— 1315%

Arithmetic

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
🟑 a % 7 (literal) (float32) float32 1,000 0.0142 0.0165 0.86Γ— 116%
🟑 a % 7 (literal) (float32) float32 100,000 1.6193 1.8327 0.88Γ— 113%
🟑 a % 7 (literal) (float32) float32 10,000,000 165.1953 184.8168 0.89Γ— 112%
🟑 a % 7 (literal) (float64) float64 1,000 0.0113 0.0189 0.60Γ— 168%
🟑 a % 7 (literal) (float64) float64 100,000 1.4311 1.6867 0.85Γ— 118%
🟑 a % 7 (literal) (float64) float64 10,000,000 150.3030 165.2969 0.91Γ— 110%
🟑 a % 7 (literal) (int32) int32 1,000 0.0022 0.0042 0.54Γ— 187%
🟑 a % 7 (literal) (int32) int32 100,000 0.3976 0.6615 0.60Γ— 166%
🟑 a % 7 (literal) (int32) int32 10,000,000 46.0503 67.4094 0.68Γ— 146%
🟑 a % 7 (literal) (int64) int64 1,000 0.0043 0.0063 0.69Γ— 145%
🟑 a % 7 (literal) (int64) int64 100,000 0.4006 0.6741 0.59Γ— 168%
🟑 a % 7 (literal) (int64) int64 10,000,000 50.6103 73.6394 0.69Γ— 146%
βœ… a % b (element-wise) (float32) float32 1,000 0.0119 0.0117 1.02Γ— 98%
🟑 a % b (element-wise) (float32) float32 100,000 1.4839 1.5770 0.94Γ— 106%
🟑 a % b (element-wise) (float32) float32 10,000,000 153.9273 163.2286 0.94Γ— 106%
βœ… a % b (element-wise) (float64) float64 1,000 0.0097 0.0091 1.06Γ— 94%
🟑 a % b (element-wise) (float64) float64 100,000 1.2816 1.4386 0.89Γ— 112%
🟑 a % b (element-wise) (float64) float64 10,000,000 136.3744 147.5928 0.92Γ— 108%
🟑 a % b (element-wise) (int32) int32 1,000 0.0020 0.0033 0.62Γ— 162%
🟑 a % b (element-wise) (int32) int32 100,000 0.3675 0.5980 0.61Γ— 163%
🟑 a % b (element-wise) (int32) int32 10,000,000 42.8057 60.0063 0.71Γ— 140%
🟑 a % b (element-wise) (int64) int64 1,000 0.0035 0.0039 0.91Γ— 110%
🟑 a % b (element-wise) (int64) int64 100,000 0.3695 0.5992 0.62Γ— 162%
🟑 a % b (element-wise) (int64) int64 10,000,000 49.1915 67.0192 0.73Γ— 136%
🟠 a * 2 (literal) (complex128) complex128 1,000 0.0011 0.0040 0.28Γ— 357%
βœ… a * 2 (literal) (complex128) complex128 100,000 0.2823 0.2208 1.28Γ— 78%
βœ… a * 2 (literal) (complex128) complex128 10,000,000 31.0176 25.6395 1.21Γ— 83%
🟑 a * 2 (literal) (float16) float16 1,000 0.0046 0.0062 0.74Γ— 135%
🟑 a * 2 (literal) (float16) float16 100,000 0.2800 0.4677 0.60Γ— 167%
🟑 a * 2 (literal) (float16) float16 10,000,000 30.4948 46.4060 0.66Γ— 152%
β–« a * 2 (literal) (float32) float32 1,000 0.0007 0.0037 0.20Γ— 504%
🟠 a * 2 (literal) (float32) float32 100,000 0.0063 0.0282 0.22Γ— 449%
βœ… a * 2 (literal) (float32) float32 10,000,000 7.8622 5.1811 1.52Γ— 66%
β–« a * 2 (literal) (float64) float64 1,000 0.0008 0.0047 0.17Γ— 604%
🟠 a * 2 (literal) (float64) float64 100,000 0.0118 0.0573 0.20Γ— 487%
βœ… a * 2 (literal) (float64) float64 10,000,000 15.8476 13.6947 1.16Γ— 86%
β–« a * 2 (literal) (int16) int16 1,000 0.0010 0.0034 0.29Γ— 338%
βœ… a * 2 (literal) (int16) int16 100,000 0.0216 0.0203 1.06Γ— 94%
βœ… a * 2 (literal) (int16) int16 10,000,000 4.2690 2.4718 1.73Γ— 58%
β–« a * 2 (literal) (int32) int32 1,000 0.0010 0.0025 0.39Γ— 256%
🟑 a * 2 (literal) (int32) int32 100,000 0.0217 0.0279 0.78Γ— 128%
βœ… a * 2 (literal) (int32) int32 10,000,000 7.6682 5.0877 1.51Γ— 66%
β–« a * 2 (literal) (int64) int64 1,000 0.0009 0.0046 0.20Γ— 501%
🟠 a * 2 (literal) (int64) int64 100,000 0.0226 0.0598 0.38Γ— 265%
βœ… a * 2 (literal) (int64) int64 10,000,000 15.0941 13.3295 1.13Γ— 88%
β–« a * 2 (literal) (int8) int8 1,000 0.0009 0.0033 0.26Γ— 380%
βœ… a * 2 (literal) (int8) int8 100,000 0.0218 0.0153 1.42Γ— 70%
βœ… a * 2 (literal) (int8) int8 10,000,000 3.0346 1.2741 2.38Γ— 42%
β–« a * 2 (literal) (uint16) uint16 1,000 0.0010 0.0034 0.29Γ— 344%
βœ… a * 2 (literal) (uint16) uint16 100,000 0.0219 0.0192 1.14Γ— 87%
βœ… a * 2 (literal) (uint16) uint16 10,000,000 4.3429 2.5632 1.69Γ— 59%
β–« a * 2 (literal) (uint32) uint32 1,000 0.0010 0.0037 0.26Γ— 383%
🟑 a * 2 (literal) (uint32) uint32 100,000 0.0218 0.0303 0.72Γ— 139%
βœ… a * 2 (literal) (uint32) uint32 10,000,000 7.7703 5.0405 1.54Γ— 65%
β–« a * 2 (literal) (uint64) uint64 1,000 0.0009 0.0044 0.21Γ— 477%
🟠 a * 2 (literal) (uint64) uint64 100,000 0.0223 0.0599 0.37Γ— 269%
βœ… a * 2 (literal) (uint64) uint64 10,000,000 14.8103 13.1645 1.12Γ— 89%
β–« a * 2 (literal) (uint8) uint8 1,000 0.0009 0.0031 0.27Γ— 364%
βœ… a * 2 (literal) (uint8) uint8 100,000 0.0218 0.0148 1.47Γ— 68%
βœ… a * 2 (literal) (uint8) uint8 10,000,000 3.0832 1.3091 2.35Γ— 42%
β–« a * a (square) (complex128) complex128 1,000 0.0008 0.0038 0.22Γ— 449%
βœ… a * a (square) (complex128) complex128 100,000 0.2826 0.2203 1.28Γ— 78%
βœ… a * a (square) (complex128) complex128 10,000,000 29.7792 25.4938 1.17Γ— 86%
βœ… a * a (square) (float16) float16 1,000 0.0060 0.0052 1.15Γ— 87%
🟑 a * a (square) (float16) float16 100,000 0.2818 0.4741 0.59Γ— 168%
🟑 a * a (square) (float16) float16 10,000,000 30.1183 46.6249 0.65Γ— 155%
β–« a * a (square) (float32) float32 1,000 0.0005 0.0017 0.31Γ— 321%
πŸ”΄ a * a (square) (float32) float32 100,000 0.0058 0.0471 0.12Γ— 805%
βœ… a * a (square) (float32) float32 10,000,000 7.6612 4.9707 1.54Γ— 65%
β–« a * a (square) (float64) float64 1,000 0.0005 0.0020 0.26Γ— 393%
πŸ”΄ a * a (square) (float64) float64 100,000 0.0114 0.0935 0.12Γ— 821%
βœ… a * a (square) (float64) float64 10,000,000 15.3393 13.6029 1.13Γ— 89%
β–« a * a (square) (int16) int16 1,000 0.0009 0.0017 0.51Γ— 196%
🟑 a * a (square) (int16) int16 100,000 0.0273 0.0276 0.99Γ— 101%
βœ… a * a (square) (int16) int16 10,000,000 4.7133 2.4548 1.92Γ— 52%
β–« a * a (square) (int32) int32 1,000 0.0008 0.0020 0.39Γ— 256%
🟑 a * a (square) (int32) int32 100,000 0.0275 0.0482 0.57Γ— 175%
βœ… a * a (square) (int32) int32 10,000,000 8.0304 5.0264 1.60Γ— 63%
β–« a * a (square) (int64) int64 1,000 0.0007 0.0017 0.45Γ— 224%
🟠 a * a (square) (int64) int64 100,000 0.0287 0.0963 0.30Γ— 336%
βœ… a * a (square) (int64) int64 10,000,000 15.3630 13.3964 1.15Γ— 87%
β–« a * a (square) (int8) int8 1,000 0.0006 0.0015 0.42Γ— 236%
βœ… a * a (square) (int8) int8 100,000 0.0282 0.0143 1.97Γ— 51%
βœ… a * a (square) (int8) int8 10,000,000 3.6720 1.2987 2.83Γ— 35%
β–« a * a (square) (uint16) uint16 1,000 0.0008 0.0019 0.40Γ— 251%
βœ… a * a (square) (uint16) uint16 100,000 0.0387 0.0261 1.49Γ— 67%
βœ… a * a (square) (uint16) uint16 10,000,000 4.8081 2.5775 1.86Γ— 54%
β–« a * a (square) (uint32) uint32 1,000 0.0008 0.0017 0.45Γ— 223%
🟑 a * a (square) (uint32) uint32 100,000 0.0290 0.0503 0.58Γ— 174%
βœ… a * a (square) (uint32) uint32 10,000,000 7.9491 5.0896 1.56Γ— 64%
β–« a * a (square) (uint64) uint64 1,000 0.0007 0.0025 0.28Γ— 354%
🟠 a * a (square) (uint64) uint64 100,000 0.0282 0.0988 0.29Γ— 350%
βœ… a * a (square) (uint64) uint64 10,000,000 15.0170 13.2023 1.14Γ— 88%
β–« a * a (square) (uint8) uint8 1,000 0.0006 0.0016 0.39Γ— 257%
βœ… a * a (square) (uint8) uint8 100,000 0.0272 0.0090 3.03Γ— 33%
βœ… a * a (square) (uint8) uint8 10,000,000 3.6667 1.2804 2.86Γ— 35%
β–« a * b (element-wise) (complex128) complex128 1,000 0.0009 0.0030 0.29Γ— 341%
βœ… a * b (element-wise) (complex128) complex128 100,000 0.2949 0.2291 1.29Γ— 78%
βœ… a * b (element-wise) (complex128) complex128 10,000,000 33.9731 28.5083 1.19Γ— 84%
βœ… a * b (element-wise) (float16) float16 1,000 0.0059 0.0053 1.11Γ— 90%
🟑 a * b (element-wise) (float16) float16 100,000 0.2799 0.4728 0.59Γ— 169%
🟑 a * b (element-wise) (float16) float16 10,000,000 30.1434 46.7307 0.65Γ— 155%
β–« a * b (element-wise) (float32) float32 1,000 0.0005 0.0018 0.28Γ— 350%
πŸ”΄ a * b (element-wise) (float32) float32 100,000 0.0068 0.0495 0.14Γ— 730%
βœ… a * b (element-wise) (float32) float32 10,000,000 8.3804 5.5527 1.51Γ— 66%
β–« a * b (element-wise) (float64) float64 1,000 0.0006 0.0018 0.36Γ— 277%
🟠 a * b (element-wise) (float64) float64 100,000 0.0259 0.0982 0.26Γ— 379%
βœ… a * b (element-wise) (float64) float64 10,000,000 16.8272 15.0603 1.12Γ— 90%
β–« a * b (element-wise) (int16) int16 1,000 0.0008 0.0018 0.44Γ— 228%
βœ… a * b (element-wise) (int16) int16 100,000 0.0274 0.0151 1.81Γ— 55%
βœ… a * b (element-wise) (int16) int16 10,000,000 4.9661 2.8493 1.74Γ— 57%
β–« a * b (element-wise) (int32) int32 1,000 0.0008 0.0020 0.39Γ— 258%
🟑 a * b (element-wise) (int32) int32 100,000 0.0282 0.0474 0.59Γ— 168%
βœ… a * b (element-wise) (int32) int32 10,000,000 8.7071 5.6788 1.53Γ— 65%
β–« a * b (element-wise) (int64) int64 1,000 0.0007 0.0018 0.41Γ— 242%
🟠 a * b (element-wise) (int64) int64 100,000 0.0314 0.1035 0.30Γ— 329%
βœ… a * b (element-wise) (int64) int64 10,000,000 17.4762 15.2636 1.15Γ— 87%
β–« a * b (element-wise) (int8) int8 1,000 0.0007 0.0016 0.40Γ— 248%
βœ… a * b (element-wise) (int8) int8 100,000 0.0276 0.0152 1.82Γ— 55%
βœ… a * b (element-wise) (int8) int8 10,000,000 3.7429 1.4944 2.50Γ— 40%
β–« a * b (element-wise) (uint16) uint16 1,000 0.0008 0.0018 0.42Γ— 236%
βœ… a * b (element-wise) (uint16) uint16 100,000 0.0275 0.0271 1.02Γ— 98%
βœ… a * b (element-wise) (uint16) uint16 10,000,000 4.9546 2.9238 1.70Γ— 59%
β–« a * b (element-wise) (uint32) uint32 1,000 0.0008 0.0019 0.43Γ— 234%
🟑 a * b (element-wise) (uint32) uint32 100,000 0.0300 0.0483 0.62Γ— 161%
βœ… a * b (element-wise) (uint32) uint32 10,000,000 8.9206 5.4716 1.63Γ— 61%
β–« a * b (element-wise) (uint64) uint64 1,000 0.0007 0.0018 0.40Γ— 252%
🟠 a * b (element-wise) (uint64) uint64 100,000 0.0351 0.1020 0.34Γ— 291%
βœ… a * b (element-wise) (uint64) uint64 10,000,000 16.8707 15.5586 1.08Γ— 92%
β–« a * b (element-wise) (uint8) uint8 1,000 0.0007 0.0015 0.44Γ— 228%
βœ… a * b (element-wise) (uint8) uint8 100,000 0.0272 0.0144 1.90Γ— 53%
βœ… a * b (element-wise) (uint8) uint8 10,000,000 3.8159 1.4474 2.64Γ— 38%
β–« a * scalar (complex128) complex128 1,000 0.0009 0.0026 0.36Γ— 280%
βœ… a * scalar (complex128) complex128 100,000 0.2846 0.2201 1.29Γ— 77%
βœ… a * scalar (complex128) complex128 10,000,000 30.8011 25.2644 1.22Γ— 82%
βœ… a * scalar (float16) float16 1,000 0.0064 0.0053 1.21Γ— 82%
🟑 a * scalar (float16) float16 100,000 0.2797 0.4704 0.59Γ— 168%
🟑 a * scalar (float16) float16 10,000,000 30.2302 46.2873 0.65Γ— 153%
β–« a * scalar (float32) float32 1,000 0.0007 0.0012 0.54Γ— 184%
🟠 a * scalar (float32) float32 100,000 0.0062 0.0274 0.23Γ— 441%
βœ… a * scalar (float32) float32 10,000,000 7.8170 5.1097 1.53Γ— 65%
β–« a * scalar (float64) float64 1,000 0.0007 0.0016 0.46Γ— 217%
πŸ”΄ a * scalar (float64) float64 100,000 0.0116 0.0658 0.18Γ— 566%
βœ… a * scalar (float64) float64 10,000,000 15.9832 13.7184 1.17Γ— 86%
β–« a * scalar (int16) int16 1,000 0.0009 0.0011 0.82Γ— 122%
βœ… a * scalar (int16) int16 100,000 0.0215 0.0162 1.33Γ— 75%
βœ… a * scalar (int16) int16 10,000,000 4.1983 2.5429 1.65Γ— 61%
β–« a * scalar (int32) int32 1,000 0.0009 0.0013 0.67Γ— 148%
🟑 a * scalar (int32) int32 100,000 0.0224 0.0310 0.72Γ— 139%
βœ… a * scalar (int32) int32 10,000,000 7.6670 5.1149 1.50Γ— 67%
β–« a * scalar (int64) int64 1,000 0.0008 0.0017 0.48Γ— 208%
🟠 a * scalar (int64) int64 100,000 0.0219 0.0622 0.35Γ— 284%
βœ… a * scalar (int64) int64 10,000,000 14.9706 13.1378 1.14Γ— 88%
β–« a * scalar (int8) int8 1,000 0.0007 0.0012 0.62Γ— 161%
βœ… a * scalar (int8) int8 100,000 0.0215 0.0081 2.66Γ— 38%
βœ… a * scalar (int8) int8 10,000,000 3.0113 1.2891 2.34Γ— 43%
β–« a * scalar (uint16) uint16 1,000 0.0009 0.0015 0.58Γ— 174%
βœ… a * scalar (uint16) uint16 100,000 0.0231 0.0143 1.62Γ— 62%
βœ… a * scalar (uint16) uint16 10,000,000 4.2996 2.5670 1.68Γ— 60%
β–« a * scalar (uint32) uint32 1,000 0.0009 0.0012 0.72Γ— 138%
🟑 a * scalar (uint32) uint32 100,000 0.0218 0.0307 0.71Γ— 140%
βœ… a * scalar (uint32) uint32 10,000,000 7.6963 5.1056 1.51Γ— 66%
β–« a * scalar (uint64) uint64 1,000 0.0008 0.0018 0.46Γ— 219%
🟠 a * scalar (uint64) uint64 100,000 0.0270 0.0573 0.47Γ— 212%
βœ… a * scalar (uint64) uint64 10,000,000 14.8864 13.1397 1.13Γ— 88%
β–« a * scalar (uint8) uint8 1,000 0.0007 0.0009 0.84Γ— 119%
βœ… a * scalar (uint8) uint8 100,000 0.0225 0.0078 2.87Γ— 35%
βœ… a * scalar (uint8) uint8 10,000,000 3.1220 1.2945 2.41Γ— 42%
πŸ”΄ a + 5 (literal) (complex128) complex128 1,000 0.0011 0.0059 0.19Γ— 532%
🟑 a + 5 (literal) (complex128) complex128 100,000 0.2877 0.3143 0.92Γ— 109%
🟑 a + 5 (literal) (complex128) complex128 10,000,000 31.2807 40.8716 0.77Γ— 131%
🟑 a + 5 (literal) (float16) float16 1,000 0.0064 0.0093 0.68Γ— 146%
🟠 a + 5 (literal) (float16) float16 100,000 0.2865 0.8094 0.35Γ— 282%
🟠 a + 5 (literal) (float16) float16 10,000,000 30.8894 88.5978 0.35Γ— 287%
β–« a + 5 (literal) (float32) float32 1,000 0.0008 0.0063 0.13Γ— 783%
πŸ”΄ a + 5 (literal) (float32) float32 100,000 0.0062 0.0531 0.12Γ— 851%
🟑 a + 5 (literal) (float32) float32 10,000,000 7.8256 8.3656 0.94Γ— 107%
β–« a + 5 (literal) (float64) float64 1,000 0.0008 0.0061 0.13Γ— 770%
πŸ”΄ a + 5 (literal) (float64) float64 100,000 0.0118 0.0979 0.12Γ— 830%
🟑 a + 5 (literal) (float64) float64 10,000,000 15.5405 19.1910 0.81Γ— 124%
🟠 a + 5 (literal) (int16) int16 1,000 0.0010 0.0039 0.26Γ— 382%
🟑 a + 5 (literal) (int16) int16 100,000 0.0239 0.0301 0.79Γ— 126%
βœ… a + 5 (literal) (int16) int16 10,000,000 4.4762 4.4458 1.01Γ— 99%
🟠 a + 5 (literal) (int32) int32 1,000 0.0010 0.0035 0.29Γ— 344%
🟠 a + 5 (literal) (int32) int32 100,000 0.0234 0.0505 0.46Γ— 216%
🟑 a + 5 (literal) (int32) int32 10,000,000 7.8319 8.2820 0.95Γ— 106%
β–« a + 5 (literal) (int64) int64 1,000 0.0009 0.0056 0.17Γ— 588%
🟠 a + 5 (literal) (int64) int64 100,000 0.0252 0.1021 0.25Γ— 406%
🟑 a + 5 (literal) (int64) int64 10,000,000 15.0804 19.9053 0.76Γ— 132%
β–« a + 5 (literal) (int8) int8 1,000 0.0009 0.0033 0.26Γ— 382%
🟑 a + 5 (literal) (int8) int8 100,000 0.0238 0.0242 0.98Γ— 102%
βœ… a + 5 (literal) (int8) int8 10,000,000 3.3623 1.9502 1.72Γ— 58%
🟠 a + 5 (literal) (uint16) uint16 1,000 0.0010 0.0049 0.21Γ— 476%
🟑 a + 5 (literal) (uint16) uint16 100,000 0.0247 0.0284 0.87Γ— 115%
βœ… a + 5 (literal) (uint16) uint16 10,000,000 4.4740 4.2326 1.06Γ— 95%
πŸ”΄ a + 5 (literal) (uint32) uint32 1,000 0.0010 0.0051 0.20Γ— 502%
🟠 a + 5 (literal) (uint32) uint32 100,000 0.0234 0.0502 0.47Γ— 214%
🟑 a + 5 (literal) (uint32) uint32 10,000,000 7.8656 8.5342 0.92Γ— 108%
β–« a + 5 (literal) (uint64) uint64 1,000 0.0010 0.0063 0.15Γ— 646%
🟠 a + 5 (literal) (uint64) uint64 100,000 0.0234 0.0954 0.24Γ— 408%
🟑 a + 5 (literal) (uint64) uint64 10,000,000 15.0958 19.4444 0.78Γ— 129%
β–« a + 5 (literal) (uint8) uint8 1,000 0.0009 0.0034 0.25Γ— 395%
βœ… a + 5 (literal) (uint8) uint8 100,000 0.0253 0.0192 1.31Γ— 76%
βœ… a + 5 (literal) (uint8) uint8 10,000,000 3.4076 1.9372 1.76Γ— 57%
🟠 a + b (element-wise) (complex128) complex128 1,000 0.0011 0.0044 0.26Γ— 393%
🟑 a + b (element-wise) (complex128) complex128 100,000 0.3142 0.3445 0.91Γ— 110%
🟑 a + b (element-wise) (complex128) complex128 10,000,000 33.8363 54.0273 0.63Γ— 160%
🟑 a + b (element-wise) (float16) float16 1,000 0.0055 0.0095 0.58Γ— 174%
🟠 a + b (element-wise) (float16) float16 100,000 0.2823 0.9001 0.31Γ— 319%
🟠 a + b (element-wise) (float16) float16 10,000,000 30.3275 87.5732 0.35Γ— 289%
β–« a + b (element-wise) (float32) float32 1,000 0.0007 0.0019 0.37Γ— 270%
πŸ”΄ a + b (element-wise) (float32) float32 100,000 0.0082 0.0537 0.15Γ— 651%
🟑 a + b (element-wise) (float32) float32 10,000,000 8.4264 10.8929 0.77Γ— 129%
β–« a + b (element-wise) (float64) float64 1,000 0.0005 0.0025 0.20Γ— 492%
🟠 a + b (element-wise) (float64) float64 100,000 0.0277 0.1133 0.24Γ— 409%
🟑 a + b (element-wise) (float64) float64 10,000,000 16.7263 26.0989 0.64Γ— 156%
β–« a + b (element-wise) (int16) int16 1,000 0.0010 0.0016 0.59Γ— 169%
βœ… a + b (element-wise) (int16) int16 100,000 0.0310 0.0284 1.09Γ— 91%
🟑 a + b (element-wise) (int16) int16 10,000,000 5.0603 6.1401 0.82Γ— 121%
β–« a + b (element-wise) (int32) int32 1,000 0.0008 0.0017 0.45Γ— 222%
🟑 a + b (element-wise) (int32) int32 100,000 0.0297 0.0548 0.54Γ— 185%
🟑 a + b (element-wise) (int32) int32 10,000,000 8.4215 10.8873 0.77Γ— 129%
β–« a + b (element-wise) (int64) int64 1,000 0.0010 0.0038 0.25Γ— 398%
🟠 a + b (element-wise) (int64) int64 100,000 0.0306 0.1154 0.27Γ— 377%
🟑 a + b (element-wise) (int64) int64 10,000,000 16.7804 25.2327 0.67Γ— 150%
β–« a + b (element-wise) (int8) int8 1,000 0.0007 0.0012 0.53Γ— 188%
βœ… a + b (element-wise) (int8) int8 100,000 0.0296 0.0159 1.86Γ— 54%
βœ… a + b (element-wise) (int8) int8 10,000,000 3.8279 2.7881 1.37Γ— 73%
β–« a + b (element-wise) (uint16) uint16 1,000 0.0008 0.0014 0.57Γ— 175%
βœ… a + b (element-wise) (uint16) uint16 100,000 0.0299 0.0270 1.11Γ— 90%
🟑 a + b (element-wise) (uint16) uint16 10,000,000 5.0917 6.1902 0.82Γ— 122%
🟑 a + b (element-wise) (uint32) uint32 1,000 0.0014 0.0016 0.87Γ— 115%
🟑 a + b (element-wise) (uint32) uint32 100,000 0.0285 0.0511 0.56Γ— 180%
🟑 a + b (element-wise) (uint32) uint32 10,000,000 8.6066 10.7026 0.80Γ— 124%
β–« a + b (element-wise) (uint64) uint64 1,000 0.0008 0.0029 0.26Γ— 380%
🟠 a + b (element-wise) (uint64) uint64 100,000 0.0327 0.1082 0.30Γ— 331%
🟑 a + b (element-wise) (uint64) uint64 10,000,000 18.1412 26.0889 0.69Γ— 144%
β–« a + b (element-wise) (uint8) uint8 1,000 0.0007 0.0012 0.55Γ— 181%
βœ… a + b (element-wise) (uint8) uint8 100,000 0.0297 0.0153 1.94Γ— 52%
βœ… a + b (element-wise) (uint8) uint8 10,000,000 3.8081 2.7749 1.37Γ— 73%
β–« a + scalar (complex128) complex128 1,000 0.0009 0.0039 0.24Γ— 410%
🟑 a + scalar (complex128) complex128 100,000 0.2866 0.3178 0.90Γ— 111%
🟑 a + scalar (complex128) complex128 10,000,000 31.3992 41.0864 0.76Γ— 131%
🟑 a + scalar (float16) float16 1,000 0.0061 0.0093 0.65Γ— 154%
🟠 a + scalar (float16) float16 100,000 0.2825 0.8408 0.34Γ— 298%
🟠 a + scalar (float16) float16 10,000,000 30.6155 85.2390 0.36Γ— 278%
β–« a + scalar (float32) float32 1,000 0.0007 0.0019 0.35Γ— 282%
πŸ”΄ a + scalar (float32) float32 100,000 0.0062 0.0512 0.12Γ— 824%
🟑 a + scalar (float32) float32 10,000,000 7.8223 8.2505 0.95Γ— 106%
β–« a + scalar (float64) float64 1,000 0.0007 0.0023 0.28Γ— 358%
πŸ”΄ a + scalar (float64) float64 100,000 0.0115 0.0998 0.12Γ— 865%
🟑 a + scalar (float64) float64 10,000,000 15.6255 19.5551 0.80Γ— 125%
β–« a + scalar (int16) int16 1,000 0.0009 0.0018 0.51Γ— 196%
🟑 a + scalar (int16) int16 100,000 0.0238 0.0264 0.90Γ— 111%
βœ… a + scalar (int16) int16 10,000,000 4.3864 4.1556 1.06Γ— 95%
β–« a + scalar (int32) int32 1,000 0.0009 0.0018 0.50Γ— 200%
🟠 a + scalar (int32) int32 100,000 0.0232 0.0523 0.44Γ— 225%
🟑 a + scalar (int32) int32 10,000,000 7.8124 8.3847 0.93Γ— 107%
β–« a + scalar (int64) int64 1,000 0.0009 0.0026 0.34Γ— 296%
🟠 a + scalar (int64) int64 100,000 0.0395 0.1005 0.39Γ— 255%
🟑 a + scalar (int64) int64 10,000,000 15.3427 20.6485 0.74Γ— 135%
β–« a + scalar (int8) int8 1,000 0.0010 0.0015 0.64Γ— 156%
βœ… a + scalar (int8) int8 100,000 0.0259 0.0144 1.80Γ— 56%
βœ… a + scalar (int8) int8 10,000,000 3.3690 2.0078 1.68Γ— 60%
β–« a + scalar (uint16) uint16 1,000 0.0009 0.0017 0.54Γ— 185%
🟑 a + scalar (uint16) uint16 100,000 0.0240 0.0257 0.93Γ— 107%
βœ… a + scalar (uint16) uint16 10,000,000 4.5159 4.3325 1.04Γ— 96%
🟑 a + scalar (uint32) uint32 1,000 0.0013 0.0018 0.70Γ— 142%
🟠 a + scalar (uint32) uint32 100,000 0.0233 0.0494 0.47Γ— 212%
🟑 a + scalar (uint32) uint32 10,000,000 7.7179 8.4788 0.91Γ— 110%
β–« a + scalar (uint64) uint64 1,000 0.0009 0.0029 0.29Γ— 345%
🟠 a + scalar (uint64) uint64 100,000 0.0233 0.1007 0.23Γ— 432%
🟑 a + scalar (uint64) uint64 10,000,000 15.6794 19.7857 0.79Γ— 126%
β–« a + scalar (uint8) uint8 1,000 0.0008 0.0017 0.45Γ— 221%
βœ… a + scalar (uint8) uint8 100,000 0.0264 0.0143 1.85Γ— 54%
βœ… a + scalar (uint8) uint8 10,000,000 3.3843 1.9032 1.78Γ— 56%
β–« a - b (element-wise) (complex128) complex128 1,000 0.0009 0.0032 0.27Γ— 369%
βœ… a - b (element-wise) (complex128) complex128 100,000 0.3175 0.2343 1.35Γ— 74%
βœ… a - b (element-wise) (complex128) complex128 10,000,000 34.2472 30.3482 1.13Γ— 89%
🟑 a - b (element-wise) (float16) float16 1,000 0.0045 0.0050 0.90Γ— 111%
🟑 a - b (element-wise) (float16) float16 100,000 0.2794 0.4692 0.60Γ— 168%
🟠 a - b (element-wise) (float16) float16 10,000,000 30.4358 65.6914 0.46Γ— 216%
β–« a - b (element-wise) (float32) float32 1,000 0.0005 0.0013 0.41Γ— 241%
🟠 a - b (element-wise) (float32) float32 100,000 0.0070 0.0275 0.26Γ— 391%
βœ… a - b (element-wise) (float32) float32 10,000,000 8.4147 5.3696 1.57Γ— 64%
β–« a - b (element-wise) (float64) float64 1,000 0.0007 0.0022 0.31Γ— 319%
🟠 a - b (element-wise) (float64) float64 100,000 0.0263 0.0614 0.43Γ— 233%
βœ… a - b (element-wise) (float64) float64 10,000,000 16.5820 14.8489 1.12Γ— 90%
β–« a - b (element-wise) (int16) int16 1,000 0.0008 0.0013 0.64Γ— 155%
βœ… a - b (element-wise) (int16) int16 100,000 0.0288 0.0152 1.89Γ— 53%
βœ… a - b (element-wise) (int16) int16 10,000,000 5.0343 2.8963 1.74Γ— 58%
β–« a - b (element-wise) (int32) int32 1,000 0.0008 0.0012 0.68Γ— 147%
🟑 a - b (element-wise) (int32) int32 100,000 0.0286 0.0296 0.97Γ— 104%
βœ… a - b (element-wise) (int32) int32 10,000,000 8.8063 5.5819 1.58Γ— 63%
β–« a - b (element-wise) (int64) int64 1,000 0.0008 0.0021 0.37Γ— 272%
🟠 a - b (element-wise) (int64) int64 100,000 0.0329 0.0668 0.49Γ— 203%
βœ… a - b (element-wise) (int64) int64 10,000,000 17.0835 14.9251 1.15Γ— 87%
β–« a - b (element-wise) (int8) int8 1,000 0.0007 0.0011 0.62Γ— 162%
βœ… a - b (element-wise) (int8) int8 100,000 0.0285 0.0083 3.43Γ— 29%
βœ… a - b (element-wise) (int8) int8 10,000,000 3.8695 1.4622 2.65Γ— 38%
β–« a - b (element-wise) (uint16) uint16 1,000 0.0008 0.0011 0.72Γ— 139%
βœ… a - b (element-wise) (uint16) uint16 100,000 0.0296 0.0150 1.98Γ— 51%
βœ… a - b (element-wise) (uint16) uint16 10,000,000 5.0948 2.9174 1.75Γ— 57%
β–« a - b (element-wise) (uint32) uint32 1,000 0.0008 0.0014 0.53Γ— 189%
βœ… a - b (element-wise) (uint32) uint32 100,000 0.0285 0.0280 1.02Γ— 98%
βœ… a - b (element-wise) (uint32) uint32 10,000,000 8.7412 5.4282 1.61Γ— 62%
β–« a - b (element-wise) (uint64) uint64 1,000 0.0007 0.0018 0.41Γ— 244%
🟑 a - b (element-wise) (uint64) uint64 100,000 0.0358 0.0653 0.55Γ— 183%
βœ… a - b (element-wise) (uint64) uint64 10,000,000 16.8067 14.7610 1.14Γ— 88%
β–« a - b (element-wise) (uint8) uint8 1,000 0.0006 0.0009 0.75Γ— 134%
βœ… a - b (element-wise) (uint8) uint8 100,000 0.0300 0.0086 3.50Γ— 29%
βœ… a - b (element-wise) (uint8) uint8 10,000,000 3.8491 1.4835 2.60Γ— 38%
β–« a - scalar (complex128) complex128 1,000 0.0009 0.0028 0.34Γ— 298%
βœ… a - scalar (complex128) complex128 100,000 0.2994 0.2283 1.31Γ— 76%
βœ… a - scalar (complex128) complex128 10,000,000 32.8674 25.2962 1.30Γ— 77%
βœ… a - scalar (float16) float16 1,000 0.0060 0.0049 1.23Γ— 82%
🟑 a - scalar (float16) float16 100,000 0.2796 0.4687 0.60Γ— 168%
🟑 a - scalar (float16) float16 10,000,000 30.3791 46.1701 0.66Γ— 152%
β–« a - scalar (float32) float32 1,000 0.0008 0.0014 0.57Γ— 174%
🟠 a - scalar (float32) float32 100,000 0.0061 0.0270 0.23Γ— 439%
βœ… a - scalar (float32) float32 10,000,000 7.8119 5.1477 1.52Γ— 66%
β–« a - scalar (float64) float64 1,000 0.0006 0.0021 0.30Γ— 335%
πŸ”΄ a - scalar (float64) float64 100,000 0.0117 0.0614 0.19Γ— 524%
βœ… a - scalar (float64) float64 10,000,000 15.5805 13.7960 1.13Γ— 88%
🟑 a - scalar (int16) int16 1,000 0.0011 0.0012 0.94Γ— 107%
βœ… a - scalar (int16) int16 100,000 0.0232 0.0139 1.67Γ— 60%
βœ… a - scalar (int16) int16 10,000,000 4.3717 2.6212 1.67Γ— 60%
β–« a - scalar (int32) int32 1,000 0.0009 0.0015 0.60Γ— 165%
🟑 a - scalar (int32) int32 100,000 0.0245 0.0261 0.94Γ— 107%
βœ… a - scalar (int32) int32 10,000,000 7.8246 5.1023 1.53Γ— 65%
β–« a - scalar (int64) int64 1,000 0.0009 0.0020 0.43Γ— 233%
🟠 a - scalar (int64) int64 100,000 0.0257 0.0580 0.44Γ— 226%
βœ… a - scalar (int64) int64 10,000,000 15.0036 13.7351 1.09Γ— 92%
β–« a - scalar (int8) int8 1,000 0.0009 0.0012 0.73Γ— 137%
βœ… a - scalar (int8) int8 100,000 0.0234 0.0079 2.96Γ— 34%
βœ… a - scalar (int8) int8 10,000,000 3.3051 1.3891 2.38Γ— 42%
β–« a - scalar (uint16) uint16 1,000 0.0009 0.0010 0.90Γ— 111%
βœ… a - scalar (uint16) uint16 100,000 0.0235 0.0140 1.68Γ— 60%
βœ… a - scalar (uint16) uint16 10,000,000 4.5055 2.5875 1.74Γ— 57%
β–« a - scalar (uint32) uint32 1,000 0.0009 0.0012 0.73Γ— 138%
βœ… a - scalar (uint32) uint32 100,000 0.0270 0.0266 1.02Γ— 98%
βœ… a - scalar (uint32) uint32 10,000,000 7.9393 5.0601 1.57Γ— 64%
β–« a - scalar (uint64) uint64 1,000 0.0009 0.0017 0.49Γ— 203%
🟠 a - scalar (uint64) uint64 100,000 0.0257 0.0557 0.46Γ— 216%
βœ… a - scalar (uint64) uint64 10,000,000 15.0786 13.6412 1.10Γ— 90%
β–« a - scalar (uint8) uint8 1,000 0.0008 0.0009 0.90Γ— 111%
βœ… a - scalar (uint8) uint8 100,000 0.0252 0.0081 3.11Γ— 32%
βœ… a - scalar (uint8) uint8 10,000,000 3.3366 1.3483 2.48Γ— 40%
β–« a / b (element-wise) (float32) float32 1,000 0.0005 0.0020 0.25Γ— 401%
🟠 a / b (element-wise) (float32) float32 100,000 0.0123 0.0563 0.22Γ— 458%
🟑 a / b (element-wise) (float32) float32 10,000,000 8.4746 10.4479 0.81Γ— 123%
β–« a / b (element-wise) (float64) float64 1,000 0.0008 0.0033 0.23Γ— 436%
🟠 a / b (element-wise) (float64) float64 100,000 0.0382 0.1504 0.25Γ— 393%
🟑 a / b (element-wise) (float64) float64 10,000,000 16.5123 24.6973 0.67Γ— 150%
🟠 a / b (element-wise) (int32) int32 1,000 0.0019 0.0056 0.34Γ— 297%
🟠 a / b (element-wise) (int32) int32 100,000 0.0827 0.1883 0.44Γ— 228%
🟑 a / b (element-wise) (int32) int32 10,000,000 20.2642 23.3858 0.87Γ— 115%
🟠 a / b (element-wise) (int64) int64 1,000 0.0018 0.0048 0.39Γ— 259%
🟠 a / b (element-wise) (int64) int64 100,000 0.0821 0.1914 0.43Γ— 233%
🟑 a / b (element-wise) (int64) int64 10,000,000 23.2035 27.5732 0.84Γ— 119%
β–« a / scalar (float32) float32 1,000 0.0006 0.0021 0.30Γ— 336%
🟠 a / scalar (float32) float32 100,000 0.0120 0.0591 0.20Γ— 492%
🟑 a / scalar (float32) float32 10,000,000 7.9059 8.4903 0.93Γ— 107%
β–« a / scalar (float64) float64 1,000 0.0009 0.0037 0.24Γ— 412%
🟠 a / scalar (float64) float64 100,000 0.0372 0.1545 0.24Γ— 416%
🟑 a / scalar (float64) float64 10,000,000 15.4651 21.6902 0.71Γ— 140%
🟠 a / scalar (int32) int32 1,000 0.0022 0.0073 0.30Γ— 332%
🟠 a / scalar (int32) int32 100,000 0.0616 0.1934 0.32Γ— 314%
🟑 a / scalar (int32) int32 10,000,000 17.1824 23.0455 0.75Γ— 134%
🟠 a / scalar (int64) int64 1,000 0.0017 0.0069 0.25Γ— 404%
🟠 a / scalar (int64) int64 100,000 0.0571 0.1868 0.31Γ— 327%
🟑 a / scalar (int64) int64 10,000,000 18.4227 23.5786 0.78Γ— 128%
🟠 np.add(a, b) (complex128) complex128 1,000 0.0011 0.0042 0.25Γ— 398%
🟑 np.add(a, b) (complex128) complex128 100,000 0.3045 0.3432 0.89Γ— 113%
🟑 np.add(a, b) (complex128) complex128 10,000,000 33.3065 56.7710 0.59Γ— 170%
🟑 np.add(a, b) (float16) float16 1,000 0.0054 0.0096 0.56Γ— 180%
🟠 np.add(a, b) (float16) float16 100,000 0.2880 0.8665 0.33Γ— 301%
🟠 np.add(a, b) (float16) float16 10,000,000 30.2918 84.4809 0.36Γ— 279%
β–« np.add(a, b) (float32) float32 1,000 0.0005 0.0019 0.29Γ— 346%
πŸ”΄ np.add(a, b) (float32) float32 100,000 0.0069 0.0511 0.14Γ— 743%
🟑 np.add(a, b) (float32) float32 10,000,000 8.4121 11.6595 0.72Γ— 139%
β–« np.add(a, b) (float64) float64 1,000 0.0005 0.0027 0.20Γ— 514%
🟠 np.add(a, b) (float64) float64 100,000 0.0274 0.1083 0.25Γ— 396%
🟑 np.add(a, b) (float64) float64 10,000,000 16.6312 24.9414 0.67Γ— 150%
β–« np.add(a, b) (int16) int16 1,000 0.0008 0.0015 0.52Γ— 192%
βœ… np.add(a, b) (int16) int16 100,000 0.0289 0.0283 1.02Γ— 98%
🟑 np.add(a, b) (int16) int16 10,000,000 5.0436 6.3374 0.80Γ— 126%
β–« np.add(a, b) (int32) int32 1,000 0.0008 0.0018 0.43Γ— 233%
🟑 np.add(a, b) (int32) int32 100,000 0.0286 0.0523 0.55Γ— 183%
🟑 np.add(a, b) (int32) int32 10,000,000 8.5431 10.9704 0.78Γ— 128%
β–« np.add(a, b) (int64) int64 1,000 0.0009 0.0025 0.38Γ— 267%
🟠 np.add(a, b) (int64) int64 100,000 0.0307 0.1070 0.29Γ— 349%
🟑 np.add(a, b) (int64) int64 10,000,000 16.9611 25.6104 0.66Γ— 151%
β–« np.add(a, b) (int8) int8 1,000 0.0008 0.0011 0.72Γ— 139%
βœ… np.add(a, b) (int8) int8 100,000 0.0285 0.0154 1.85Γ— 54%
βœ… np.add(a, b) (int8) int8 10,000,000 3.8480 2.7190 1.42Γ— 71%
β–« np.add(a, b) (uint16) uint16 1,000 0.0008 0.0016 0.49Γ— 205%
βœ… np.add(a, b) (uint16) uint16 100,000 0.0292 0.0271 1.07Γ— 93%
🟑 np.add(a, b) (uint16) uint16 10,000,000 5.0613 6.0800 0.83Γ— 120%
β–« np.add(a, b) (uint32) uint32 1,000 0.0010 0.0014 0.68Γ— 147%
🟑 np.add(a, b) (uint32) uint32 100,000 0.0285 0.0534 0.53Γ— 187%
🟑 np.add(a, b) (uint32) uint32 10,000,000 8.5822 10.6338 0.81Γ— 124%
β–« np.add(a, b) (uint64) uint64 1,000 0.0008 0.0017 0.44Γ— 228%
🟠 np.add(a, b) (uint64) uint64 100,000 0.0355 0.1051 0.34Γ— 296%
🟑 np.add(a, b) (uint64) uint64 10,000,000 17.4766 26.0047 0.67Γ— 149%
β–« np.add(a, b) (uint8) uint8 1,000 0.0007 0.0013 0.53Γ— 188%
βœ… np.add(a, b) (uint8) uint8 100,000 0.0293 0.0155 1.89Γ— 53%
βœ… np.add(a, b) (uint8) uint8 10,000,000 3.8443 3.0809 1.25Γ— 80%
β–« scalar - a (complex128) complex128 1,000 0.0010 0.0027 0.36Γ— 279%
βœ… scalar - a (complex128) complex128 100,000 0.3082 0.2238 1.38Γ— 73%
βœ… scalar - a (complex128) complex128 10,000,000 32.3795 25.2975 1.28Γ— 78%
βœ… scalar - a (float16) float16 1,000 0.0056 0.0049 1.15Γ— 87%
🟑 scalar - a (float16) float16 100,000 0.2910 0.4656 0.62Γ— 160%
🟑 scalar - a (float16) float16 10,000,000 30.2778 46.0030 0.66Γ— 152%
β–« scalar - a (float32) float32 1,000 0.0007 0.0014 0.49Γ— 202%
🟠 scalar - a (float32) float32 100,000 0.0062 0.0265 0.23Γ— 427%
βœ… scalar - a (float32) float32 10,000,000 7.7928 5.1631 1.51Γ— 66%
β–« scalar - a (float64) float64 1,000 0.0007 0.0020 0.34Γ— 297%
🟠 scalar - a (float64) float64 100,000 0.0115 0.0568 0.20Γ— 493%
βœ… scalar - a (float64) float64 10,000,000 15.7789 13.8734 1.14Γ— 88%
β–« scalar - a (int16) int16 1,000 0.0009 0.0011 0.86Γ— 116%
βœ… scalar - a (int16) int16 100,000 0.0246 0.0147 1.68Γ— 60%
βœ… scalar - a (int16) int16 10,000,000 4.4218 2.5703 1.72Γ— 58%
β–« scalar - a (int32) int32 1,000 0.0009 0.0012 0.78Γ— 128%
🟑 scalar - a (int32) int32 100,000 0.0237 0.0275 0.86Γ— 116%
βœ… scalar - a (int32) int32 10,000,000 7.8237 5.1041 1.53Γ— 65%
🟑 scalar - a (int64) int64 1,000 0.0011 0.0016 0.66Γ— 151%
🟠 scalar - a (int64) int64 100,000 0.0241 0.0657 0.37Γ— 273%
βœ… scalar - a (int64) int64 10,000,000 14.9127 13.4584 1.11Γ— 90%
β–« scalar - a (int8) int8 1,000 0.0008 0.0010 0.77Γ— 130%
βœ… scalar - a (int8) int8 100,000 0.0237 0.0079 3.01Γ— 33%
βœ… scalar - a (int8) int8 10,000,000 3.2754 1.3503 2.43Γ— 41%
βœ… scalar - a (uint16) uint16 1,000 0.0016 0.0012 1.41Γ— 71%
βœ… scalar - a (uint16) uint16 100,000 0.0240 0.0143 1.68Γ— 60%
βœ… scalar - a (uint16) uint16 10,000,000 4.4048 2.4891 1.77Γ— 56%
β–« scalar - a (uint32) uint32 1,000 0.0009 0.0014 0.66Γ— 153%
βœ… scalar - a (uint32) uint32 100,000 0.0287 0.0275 1.04Γ— 96%
βœ… scalar - a (uint32) uint32 10,000,000 7.7897 5.0724 1.54Γ— 65%
β–« scalar - a (uint64) uint64 1,000 0.0010 0.0017 0.56Γ— 178%
🟠 scalar - a (uint64) uint64 100,000 0.0236 0.0589 0.40Γ— 250%
βœ… scalar - a (uint64) uint64 10,000,000 15.0333 13.5035 1.11Γ— 90%
β–« scalar - a (uint8) uint8 1,000 0.0008 0.0010 0.79Γ— 126%
βœ… scalar - a (uint8) uint8 100,000 0.0245 0.0078 3.13Γ— 32%
βœ… scalar - a (uint8) uint8 10,000,000 3.3284 1.3375 2.49Γ— 40%
β–« scalar / a (float32) float32 1,000 0.0007 0.0019 0.34Γ— 294%
🟠 scalar / a (float32) float32 100,000 0.0149 0.0582 0.26Γ— 391%
🟑 scalar / a (float32) float32 10,000,000 7.9318 8.0737 0.98Γ— 102%
β–« scalar / a (float64) float64 1,000 0.0009 0.0033 0.28Γ— 356%
🟠 scalar / a (float64) float64 100,000 0.0374 0.1398 0.27Γ— 374%
🟑 scalar / a (float64) float64 10,000,000 15.4337 22.3529 0.69Γ— 145%
🟠 scalar / a (int32) int32 1,000 0.0018 0.0063 0.29Γ— 349%
🟠 scalar / a (int32) int32 100,000 0.0618 0.1726 0.36Γ— 279%
🟑 scalar / a (int32) int32 10,000,000 17.0772 22.8310 0.75Γ— 134%
🟠 scalar / a (int64) int64 1,000 0.0022 0.0060 0.36Γ— 274%
🟠 scalar / a (int64) int64 100,000 0.0575 0.1799 0.32Γ— 313%
🟑 scalar / a (int64) int64 10,000,000 18.5249 24.6415 0.75Γ— 133%

Unary

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
β–« np.abs (float16) float16 1,000 0.0008 0.0014 0.58Γ— 172%
βœ… np.abs (float16) float16 100,000 0.0261 0.0219 1.19Γ— 84%
βœ… np.abs (float16) float16 10,000,000 7.7905 2.7758 2.81Γ— 36%
β–« np.abs (float32) float32 1,000 0.0006 0.0016 0.35Γ— 286%
πŸ”΄ np.abs (float32) float32 100,000 0.0061 0.0376 0.16Γ— 617%
βœ… np.abs (float32) float32 10,000,000 7.3196 4.2367 1.73Γ— 58%
β–« np.abs (float64) float64 1,000 0.0006 0.0050 0.11Γ— 904%
πŸ”΄ np.abs (float64) float64 100,000 0.0113 0.0656 0.17Γ— 581%
βœ… np.abs (float64) float64 10,000,000 14.5867 14.0433 1.04Γ— 96%
🟑 np.cbrt(a) (float16) float16 1,000 0.0104 0.0111 0.93Γ— 107%
🟑 np.cbrt(a) (float16) float16 100,000 1.1653 1.3881 0.84Γ— 119%
🟑 np.cbrt(a) (float16) float16 10,000,000 123.1163 137.5717 0.90Γ— 112%
βœ… np.cbrt(a) (float32) float32 1,000 0.0062 0.0060 1.02Γ— 98%
🟑 np.cbrt(a) (float32) float32 100,000 0.8801 0.8926 0.99Γ— 101%
βœ… np.cbrt(a) (float32) float32 10,000,000 93.3862 87.0798 1.07Γ— 93%
🟑 np.cbrt(a) (float64) float64 1,000 0.0092 0.0096 0.96Γ— 104%
🟑 np.cbrt(a) (float64) float64 100,000 1.0901 1.0964 0.99Γ— 101%
βœ… np.cbrt(a) (float64) float64 10,000,000 115.3223 113.1029 1.02Γ— 98%
βœ… np.ceil (float16) float16 1,000 0.0051 0.0039 1.33Γ— 75%
βœ… np.ceil (float16) float16 100,000 0.4009 0.3367 1.19Γ— 84%
βœ… np.ceil (float16) float16 10,000,000 41.2225 33.5011 1.23Γ— 81%
β–« np.ceil (float32) float32 1,000 0.0005 0.0015 0.36Γ— 276%
πŸ”΄ np.ceil (float32) float32 100,000 0.0057 0.0285 0.20Γ— 501%
βœ… np.ceil (float32) float32 10,000,000 7.4340 4.1609 1.79Γ— 56%
β–« np.ceil (float64) float64 1,000 0.0006 0.0036 0.15Γ— 653%
🟠 np.ceil (float64) float64 100,000 0.0112 0.0552 0.20Γ— 495%
βœ… np.ceil (float64) float64 10,000,000 14.8375 14.0530 1.06Γ— 95%
βœ… np.clip(a, -10, 10) (float16) float16 1,000 0.0099 0.0060 1.66Γ— 60%
βœ… np.clip(a, -10, 10) (float16) float16 100,000 0.9202 0.7256 1.27Γ— 79%
βœ… np.clip(a, -10, 10) (float16) float16 10,000,000 92.7997 71.2042 1.30Γ— 77%
🟠 np.clip(a, -10, 10) (float32) float32 1,000 0.0020 0.0063 0.32Γ— 311%
🟠 np.clip(a, -10, 10) (float32) float32 100,000 0.0083 0.0345 0.24Γ— 415%
βœ… np.clip(a, -10, 10) (float32) float32 10,000,000 7.4072 4.1688 1.78Γ— 56%
🟠 np.clip(a, -10, 10) (float64) float64 1,000 0.0018 0.0061 0.30Γ— 332%
🟠 np.clip(a, -10, 10) (float64) float64 100,000 0.0131 0.0640 0.20Γ— 487%
βœ… np.clip(a, -10, 10) (float64) float64 10,000,000 14.7613 13.3322 1.11Γ— 90%
🟑 np.cos (float16) float16 1,000 0.0050 0.0084 0.60Γ— 168%
🟑 np.cos (float16) float16 100,000 0.6956 1.1041 0.63Γ— 159%
🟑 np.cos (float16) float16 10,000,000 79.1733 110.5111 0.72Γ— 140%
βœ… np.cos (float32) float32 1,000 0.0049 0.0038 1.30Γ— 77%
🟑 np.cos (float32) float32 100,000 0.7072 0.7109 0.99Γ— 100%
βœ… np.cos (float32) float32 10,000,000 80.0272 69.8170 1.15Γ— 87%
βœ… np.cos (float64) float64 1,000 0.0049 0.0042 1.18Γ— 85%
🟑 np.cos (float64) float64 100,000 0.7039 0.7283 0.97Γ— 104%
βœ… np.cos (float64) float64 10,000,000 79.0328 77.0677 1.02Γ— 98%
🟑 np.exp (float16) float16 1,000 0.0054 0.0063 0.86Γ— 116%
🟑 np.exp (float16) float16 100,000 0.4124 0.5903 0.70Γ— 143%
βœ… np.exp (float16) float16 10,000,000 63.7886 58.5180 1.09Γ— 92%
🟠 np.exp (float32) float32 1,000 0.0010 0.0034 0.29Γ— 339%
🟠 np.exp (float32) float32 100,000 0.0544 0.1753 0.31Γ— 322%
🟑 np.exp (float32) float32 10,000,000 10.5143 16.5467 0.64Γ— 157%
🟑 np.exp (float64) float64 1,000 0.0030 0.0038 0.78Γ— 128%
🟑 np.exp (float64) float64 100,000 0.2543 0.2691 0.94Γ— 106%
βœ… np.exp (float64) float64 10,000,000 32.9892 30.7385 1.07Γ— 93%
🟑 np.exp2 (float16) float16 1,000 0.0052 0.0098 0.54Γ— 187%
🟠 np.exp2 (float16) float16 100,000 0.4402 0.9688 0.45Γ— 220%
🟠 np.exp2 (float16) float16 10,000,000 47.4052 97.6500 0.48Γ— 206%
🟠 np.exp2 (float32) float32 1,000 0.0022 0.0097 0.23Γ— 435%
πŸ”΄ np.exp2 (float32) float32 100,000 0.1723 0.8886 0.19Γ— 516%
🟠 np.exp2 (float32) float32 10,000,000 23.4637 87.7856 0.27Γ— 374%
🟠 np.exp2 (float64) float64 1,000 0.0025 0.0096 0.26Γ— 386%
🟠 np.exp2 (float64) float64 100,000 0.2067 0.8452 0.24Γ— 409%
🟠 np.exp2 (float64) float64 10,000,000 28.4119 87.4368 0.33Γ— 308%
🟑 np.expm1 (float16) float16 1,000 0.0059 0.0091 0.65Γ— 154%
🟑 np.expm1 (float16) float16 100,000 0.5256 0.8595 0.61Γ— 164%
🟑 np.expm1 (float16) float16 10,000,000 54.8518 86.3626 0.64Γ— 157%
🟑 np.expm1 (float32) float32 1,000 0.0032 0.0039 0.83Γ— 120%
βœ… np.expm1 (float32) float32 100,000 0.2667 0.1878 1.42Γ— 70%
βœ… np.expm1 (float32) float32 10,000,000 31.6479 17.6348 1.79Γ— 56%
🟑 np.expm1 (float64) float64 1,000 0.0038 0.0039 0.98Γ— 102%
βœ… np.expm1 (float64) float64 100,000 0.3380 0.2746 1.23Γ— 81%
βœ… np.expm1 (float64) float64 10,000,000 42.0588 31.9769 1.31Γ— 76%
βœ… np.floor (float16) float16 1,000 0.0051 0.0039 1.32Γ— 76%
βœ… np.floor (float16) float16 100,000 0.4141 0.3381 1.23Γ— 82%
βœ… np.floor (float16) float16 10,000,000 43.2932 32.6165 1.33Γ— 75%
β–« np.floor (float32) float32 1,000 0.0005 0.0019 0.29Γ— 350%
🟠 np.floor (float32) float32 100,000 0.0063 0.0309 0.20Γ— 488%
βœ… np.floor (float32) float32 10,000,000 7.6079 4.1823 1.82Γ— 55%
β–« np.floor (float64) float64 1,000 0.0006 0.0048 0.12Γ— 833%
πŸ”΄ np.floor (float64) float64 100,000 0.0117 0.0586 0.20Γ— 502%
βœ… np.floor (float64) float64 10,000,000 14.9548 13.8842 1.08Γ— 93%
🟑 np.log (float16) float16 1,000 0.0050 0.0066 0.75Γ— 133%
🟑 np.log (float16) float16 100,000 0.4253 0.6276 0.68Γ— 148%
βœ… np.log (float16) float16 10,000,000 84.3523 62.5962 1.35Γ— 74%
🟠 np.log (float32) float32 1,000 0.0013 0.0039 0.34Γ— 290%
🟠 np.log (float32) float32 100,000 0.0917 0.2125 0.43Γ— 232%
🟑 np.log (float32) float32 10,000,000 13.6695 20.7475 0.66Γ— 152%
🟑 np.log (float64) float64 1,000 0.0028 0.0031 0.89Γ— 112%
🟑 np.log (float64) float64 100,000 0.2338 0.2548 0.92Γ— 109%
βœ… np.log (float64) float64 10,000,000 31.4221 29.8544 1.05Γ— 95%
🟑 np.log10 (float16) float16 1,000 0.0055 0.0067 0.81Γ— 123%
🟑 np.log10 (float16) float16 100,000 0.4443 0.6431 0.69Γ— 145%
βœ… np.log10 (float16) float16 10,000,000 69.8188 63.1013 1.11Γ— 90%
🟑 np.log10 (float32) float32 1,000 0.0024 0.0038 0.64Γ— 157%
🟑 np.log10 (float32) float32 100,000 0.1944 0.2121 0.92Γ— 109%
βœ… np.log10 (float32) float32 10,000,000 23.1019 20.3369 1.14Γ— 88%
🟑 np.log10 (float64) float64 1,000 0.0029 0.0031 0.94Γ— 107%
🟑 np.log10 (float64) float64 100,000 0.2459 0.2616 0.94Γ— 106%
βœ… np.log10 (float64) float64 10,000,000 32.7819 30.4759 1.08Γ— 93%
🟑 np.log1p (float16) float16 1,000 0.0063 0.0082 0.77Γ— 130%
🟑 np.log1p (float16) float16 100,000 0.5635 0.7911 0.71Γ— 140%
🟑 np.log1p (float16) float16 10,000,000 58.8048 77.9264 0.76Γ— 132%
βœ… np.log1p (float32) float32 1,000 0.0034 0.0028 1.24Γ— 81%
βœ… np.log1p (float32) float32 100,000 0.2895 0.2324 1.25Γ— 80%
βœ… np.log1p (float32) float32 10,000,000 31.9094 21.9765 1.45Γ— 69%
βœ… np.log1p (float64) float64 1,000 0.0037 0.0032 1.14Γ— 87%
βœ… np.log1p (float64) float64 100,000 0.3215 0.2717 1.18Γ— 84%
βœ… np.log1p (float64) float64 10,000,000 39.8056 31.3997 1.27Γ— 79%
🟑 np.log2 (float16) float16 1,000 0.0050 0.0067 0.74Γ— 134%
🟑 np.log2 (float16) float16 100,000 0.4571 0.6374 0.72Γ— 140%
🟑 np.log2 (float16) float16 10,000,000 48.6171 62.9314 0.77Γ— 129%
🟑 np.log2 (float32) float32 1,000 0.0026 0.0042 0.61Γ— 163%
🟑 np.log2 (float32) float32 100,000 0.1889 0.1979 0.95Γ— 105%
βœ… np.log2 (float32) float32 10,000,000 22.7833 18.9040 1.21Γ— 83%
🟑 np.log2 (float64) float64 1,000 0.0041 0.0044 0.93Γ— 107%
🟑 np.log2 (float64) float64 100,000 0.3738 0.3897 0.96Γ— 104%
βœ… np.log2 (float64) float64 10,000,000 45.1058 42.4500 1.06Γ— 94%
β–« np.negative(a) (float16) float16 1,000 0.0008 0.0015 0.51Γ— 197%
βœ… np.negative(a) (float16) float16 100,000 0.0320 0.0234 1.37Γ— 73%
βœ… np.negative(a) (float16) float16 10,000,000 4.7401 3.0972 1.53Γ— 65%
β–« np.negative(a) (float32) float32 1,000 0.0005 0.0020 0.26Γ— 391%
🟠 np.negative(a) (float32) float32 100,000 0.0065 0.0264 0.25Γ— 403%
βœ… np.negative(a) (float32) float32 10,000,000 7.8325 4.2918 1.82Γ— 55%
β–« np.negative(a) (float64) float64 1,000 0.0005 0.0032 0.16Γ— 622%
🟠 np.negative(a) (float64) float64 100,000 0.0136 0.0544 0.25Γ— 399%
βœ… np.negative(a) (float64) float64 10,000,000 16.3329 16.1866 1.01Γ— 99%
β–« np.positive(a) (float16) float16 1,000 0.0007 0.0011 0.63Γ— 160%
βœ… np.positive(a) (float16) float16 100,000 0.0209 0.0132 1.59Γ— 63%
βœ… np.positive(a) (float16) float16 10,000,000 4.2717 1.6411 2.60Γ— 38%
β–« np.positive(a) (float32) float32 1,000 0.0007 0.0016 0.41Γ— 243%
🟑 np.positive(a) (float32) float32 100,000 0.0192 0.0244 0.78Γ— 128%
βœ… np.positive(a) (float32) float32 10,000,000 7.8097 3.6030 2.17Γ— 46%
β–« np.positive(a) (float64) float64 1,000 0.0006 0.0022 0.29Γ— 349%
🟠 np.positive(a) (float64) float64 100,000 0.0191 0.0504 0.38Γ— 265%
βœ… np.positive(a) (float64) float64 10,000,000 15.2613 13.7699 1.11Γ— 90%
βœ… np.power(a, 0.5) (float16) float16 1,000 0.0091 0.0057 1.59Γ— 63%
βœ… np.power(a, 0.5) (float16) float16 100,000 0.8082 0.3429 2.36Γ— 42%
βœ… np.power(a, 0.5) (float16) float16 10,000,000 85.4485 33.5902 2.54Γ— 39%
🟑 np.power(a, 0.5) (float32) float32 1,000 0.0020 0.0028 0.70Γ— 143%
βœ… np.power(a, 0.5) (float32) float32 100,000 0.1204 0.0268 4.50Γ— 22%
βœ… np.power(a, 0.5) (float32) float32 10,000,000 15.8291 4.1517 3.81Γ— 26%
🟑 np.power(a, 0.5) (float64) float64 1,000 0.0018 0.0027 0.67Γ— 150%
βœ… np.power(a, 0.5) (float64) float64 100,000 0.1208 0.0624 1.94Γ— 52%
βœ… np.power(a, 0.5) (float64) float64 10,000,000 20.4169 13.6772 1.49Γ— 67%
βœ… np.power(a, 2) (float16) float16 1,000 0.0102 0.0057 1.78Γ— 56%
βœ… np.power(a, 2) (float16) float16 100,000 1.0479 0.4785 2.19Γ— 46%
βœ… np.power(a, 2) (float16) float16 10,000,000 106.1243 47.3970 2.24Γ— 45%
🟑 np.power(a, 2) (float32) float32 1,000 0.0023 0.0029 0.80Γ— 125%
βœ… np.power(a, 2) (float32) float32 100,000 0.1497 0.0268 5.59Γ— 18%
βœ… np.power(a, 2) (float32) float32 10,000,000 18.8415 4.1425 4.55Γ— 22%
🟑 np.power(a, 2) (float64) float64 1,000 0.0022 0.0035 0.65Γ— 155%
βœ… np.power(a, 2) (float64) float64 100,000 0.1534 0.0578 2.65Γ— 38%
βœ… np.power(a, 2) (float64) float64 10,000,000 22.8226 13.5837 1.68Γ— 60%
🟑 np.power(a, 3) (float16) float16 1,000 0.0134 0.0172 0.78Γ— 128%
🟑 np.power(a, 3) (float16) float16 100,000 1.4800 2.4845 0.60Γ— 168%
🟑 np.power(a, 3) (float16) float16 10,000,000 162.6844 251.6184 0.65Γ— 155%
🟑 np.power(a, 3) (float32) float32 1,000 0.0058 0.0091 0.64Γ— 157%
🟑 np.power(a, 3) (float32) float32 100,000 0.6605 0.6694 0.99Γ— 101%
βœ… np.power(a, 3) (float32) float32 10,000,000 71.1467 66.4474 1.07Γ— 93%
🟑 np.power(a, 3) (float64) float64 1,000 0.0097 0.0110 0.88Γ— 113%
🟑 np.power(a, 3) (float64) float64 100,000 1.0647 1.0958 0.97Γ— 103%
βœ… np.power(a, 3) (float64) float64 10,000,000 116.0376 111.0662 1.04Γ— 96%
🟑 np.reciprocal(a) (float16) float16 1,000 0.0034 0.0045 0.74Γ— 134%
🟑 np.reciprocal(a) (float16) float16 100,000 0.2055 0.4096 0.50Γ— 199%
🟑 np.reciprocal(a) (float16) float16 10,000,000 22.5069 40.3090 0.56Γ— 179%
β–« np.reciprocal(a) (float32) float32 1,000 0.0006 0.0016 0.36Γ— 275%
🟑 np.reciprocal(a) (float32) float32 100,000 0.0142 0.0259 0.55Γ— 182%
βœ… np.reciprocal(a) (float32) float32 10,000,000 7.2180 4.1823 1.73Γ— 58%
β–« np.reciprocal(a) (float64) float64 1,000 0.0008 0.0026 0.31Γ— 322%
🟑 np.reciprocal(a) (float64) float64 100,000 0.0376 0.0582 0.65Γ— 154%
🟑 np.reciprocal(a) (float64) float64 10,000,000 14.8973 16.0878 0.93Γ— 108%
βœ… np.round (float16) float16 1,000 0.0058 0.0046 1.26Γ— 80%
βœ… np.round (float16) float16 100,000 0.4702 0.4047 1.16Γ— 86%
βœ… np.round (float16) float16 10,000,000 41.1908 39.4955 1.04Γ— 96%
🟑 np.round (float32) float32 1,000 0.0011 0.0016 0.74Γ— 136%
🟠 np.round (float32) float32 100,000 0.0065 0.0269 0.24Γ— 411%
βœ… np.round (float32) float32 10,000,000 7.6748 4.1299 1.86Γ— 54%
🟠 np.round (float64) float64 1,000 0.0012 0.0054 0.22Γ— 458%
🟠 np.round (float64) float64 100,000 0.0124 0.0549 0.23Γ— 441%
βœ… np.round (float64) float64 10,000,000 14.9249 13.9922 1.07Γ— 94%
🟠 np.sign (float16) float16 1,000 0.0014 0.0041 0.34Γ— 292%
πŸ”΄ np.sign (float16) float16 100,000 0.0922 0.6486 0.14Γ— 704%
🟠 np.sign (float16) float16 10,000,000 14.1494 63.7746 0.22Γ— 451%
🟠 np.sign (float32) float32 1,000 0.0011 0.0042 0.26Γ— 379%
🟑 np.sign (float32) float32 100,000 0.2912 0.3816 0.76Γ— 131%
🟑 np.sign (float32) float32 10,000,000 36.3663 38.1486 0.95Γ— 105%
πŸ”΄ np.sign (float64) float64 1,000 0.0011 0.0055 0.20Γ— 504%
🟑 np.sign (float64) float64 100,000 0.3016 0.3884 0.78Γ— 129%
🟑 np.sign (float64) float64 10,000,000 40.3152 44.8085 0.90Γ— 111%
🟑 np.sin (float16) float16 1,000 0.0053 0.0079 0.67Γ— 149%
🟑 np.sin (float16) float16 100,000 0.7007 1.1071 0.63Γ— 158%
🟑 np.sin (float16) float16 10,000,000 78.9906 111.0622 0.71Γ— 141%
βœ… np.sin (float32) float32 1,000 0.0047 0.0038 1.24Γ— 80%
🟑 np.sin (float32) float32 100,000 0.7041 0.7070 1.00Γ— 100%
βœ… np.sin (float32) float32 10,000,000 79.5476 70.5422 1.13Γ— 89%
βœ… np.sin (float64) float64 1,000 0.0051 0.0041 1.25Γ— 80%
🟑 np.sin (float64) float64 100,000 0.6997 0.7363 0.95Γ— 105%
βœ… np.sin (float64) float64 10,000,000 78.9810 78.7186 1.00Γ— 100%
βœ… np.sqrt (float16) float16 1,000 0.0046 0.0040 1.15Γ— 87%
βœ… np.sqrt (float16) float16 100,000 0.3887 0.3403 1.14Γ— 88%
βœ… np.sqrt (float16) float16 10,000,000 47.6898 32.7937 1.45Γ— 69%
β–« np.sqrt (float32) float32 1,000 0.0007 0.0015 0.44Γ— 227%
🟑 np.sqrt (float32) float32 100,000 0.0151 0.0276 0.55Γ— 182%
βœ… np.sqrt (float32) float32 10,000,000 7.3481 4.2392 1.73Γ— 58%
β–« np.sqrt (float64) float64 1,000 0.0010 0.0044 0.23Γ— 444%
🟑 np.sqrt (float64) float64 100,000 0.0558 0.0642 0.87Γ— 115%
βœ… np.sqrt (float64) float64 10,000,000 15.0151 13.7258 1.09Γ— 91%
🟑 np.square(a) (float16) float16 1,000 0.0035 0.0049 0.72Γ— 138%
🟠 np.square(a) (float16) float16 100,000 0.2064 0.4497 0.46Γ— 218%
🟑 np.square(a) (float16) float16 10,000,000 22.6650 43.4725 0.52Γ— 192%
β–« np.square(a) (float32) float32 1,000 0.0005 0.0015 0.34Γ— 298%
🟠 np.square(a) (float32) float32 100,000 0.0058 0.0268 0.21Γ— 465%
βœ… np.square(a) (float32) float32 10,000,000 7.3211 4.2896 1.71Γ— 59%
β–« np.square(a) (float64) float64 1,000 0.0005 0.0025 0.21Γ— 484%
🟠 np.square(a) (float64) float64 100,000 0.0123 0.0544 0.23Γ— 442%
🟑 np.square(a) (float64) float64 10,000,000 15.1366 16.4735 0.92Γ— 109%
🟑 np.tan (float16) float16 1,000 0.0048 0.0083 0.58Γ— 173%
🟑 np.tan (float16) float16 100,000 0.8034 1.1034 0.73Γ— 137%
🟑 np.tan (float16) float16 10,000,000 89.8512 110.0293 0.82Γ— 122%
βœ… np.tan (float32) float32 1,000 0.0046 0.0037 1.23Γ— 81%
βœ… np.tan (float32) float32 100,000 0.8164 0.6873 1.19Γ— 84%
βœ… np.tan (float32) float32 10,000,000 90.0943 67.8999 1.33Γ— 75%
🟑 np.tan (float64) float64 1,000 0.0046 0.0050 0.93Γ— 108%
🟑 np.tan (float64) float64 100,000 0.8098 0.8479 0.95Γ— 105%
βœ… np.tan (float64) float64 10,000,000 90.9533 89.5086 1.02Γ— 98%
βœ… np.trunc(a) (float16) float16 1,000 0.0051 0.0038 1.34Γ— 75%
βœ… np.trunc(a) (float16) float16 100,000 0.4499 0.3360 1.34Γ— 75%
βœ… np.trunc(a) (float16) float16 10,000,000 42.5258 32.7977 1.30Γ— 77%
β–« np.trunc(a) (float32) float32 1,000 0.0005 0.0014 0.38Γ— 262%
🟠 np.trunc(a) (float32) float32 100,000 0.0058 0.0248 0.23Γ— 429%
βœ… np.trunc(a) (float32) float32 10,000,000 7.3663 4.0853 1.80Γ— 56%
β–« np.trunc(a) (float64) float64 1,000 0.0005 0.0019 0.28Γ— 359%
🟠 np.trunc(a) (float64) float64 100,000 0.0124 0.0524 0.24Γ— 422%
🟑 np.trunc(a) (float64) float64 10,000,000 15.0096 16.0305 0.94Γ— 107%

Reduction

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
βœ… np.amax (complex128) complex128 1,000 0.0030 0.0019 1.62Γ— 62%
βœ… np.amax (complex128) complex128 100,000 0.1566 0.1153 1.36Γ— 74%
βœ… np.amax (complex128) complex128 10,000,000 16.6373 13.6040 1.22Γ— 82%
βœ… np.amax (float16) float16 1,000 0.0039 0.0012 3.16Γ— 32%
βœ… np.amax (float16) float16 100,000 0.5006 0.3155 1.59Γ— 63%
βœ… np.amax (float16) float16 10,000,000 50.1383 33.0696 1.52Γ— 66%
β–« np.amax (float32) float32 1,000 0.0016 0.0007 2.32Γ— 43%
🟑 np.amax (float32) float32 100,000 0.0059 0.0085 0.70Γ— 144%
🟑 np.amax (float32) float32 10,000,000 1.4178 1.6223 0.87Γ— 114%
β–« np.amax (float64) float64 1,000 0.0016 0.0008 2.14Γ— 47%
🟑 np.amax (float64) float64 100,000 0.0105 0.0181 0.58Γ— 173%
🟑 np.amax (float64) float64 10,000,000 3.2715 3.9602 0.83Γ— 121%
β–« np.amax (int16) int16 1,000 0.0015 0.0008 2.01Γ— 50%
βœ… np.amax (int16) int16 100,000 0.0030 0.0015 1.99Γ— 50%
🟑 np.amax (int16) int16 10,000,000 0.2827 0.3374 0.84Γ— 119%
β–« np.amax (int32) int32 1,000 0.0016 0.0008 2.02Γ— 50%
βœ… np.amax (int32) int32 100,000 0.0043 0.0023 1.87Γ— 54%
🟑 np.amax (int32) int32 10,000,000 1.0127 1.1192 0.91Γ— 110%
β–« np.amax (int64) int64 1,000 0.0016 0.0008 2.07Γ— 48%
βœ… np.amax (int64) int64 100,000 0.0088 0.0079 1.12Γ— 89%
βœ… np.amax (int64) int64 10,000,000 3.8239 3.5708 1.07Γ— 93%
βœ… np.amax (int8) int8 1,000 0.0016 0.0011 1.41Γ— 71%
βœ… np.amax (int8) int8 100,000 0.0023 0.0012 1.94Γ— 52%
🟑 np.amax (int8) int8 10,000,000 0.1343 0.1496 0.90Γ— 111%
β–« np.amax (uint16) uint16 1,000 0.0015 0.0007 2.08Γ— 48%
βœ… np.amax (uint16) uint16 100,000 0.0034 0.0015 2.20Γ— 45%
🟑 np.amax (uint16) uint16 10,000,000 0.2964 0.3173 0.93Γ— 107%
β–« np.amax (uint32) uint32 1,000 0.0019 0.0007 2.57Γ— 39%
βœ… np.amax (uint32) uint32 100,000 0.0055 0.0032 1.72Γ— 58%
🟑 np.amax (uint32) uint32 10,000,000 1.0003 1.0486 0.95Γ— 105%
β–« np.amax (uint64) uint64 1,000 0.0017 0.0007 2.54Γ— 39%
βœ… np.amax (uint64) uint64 100,000 0.0119 0.0103 1.15Γ— 87%
βœ… np.amax (uint64) uint64 10,000,000 3.8010 3.6843 1.03Γ— 97%
βœ… np.amax (uint8) uint8 1,000 0.0016 0.0012 1.38Γ— 72%
βœ… np.amax (uint8) uint8 100,000 0.0024 0.0012 1.97Γ— 51%
βœ… np.amax (uint8) uint8 10,000,000 0.1984 0.1471 1.35Γ— 74%
βœ… np.amax axis=0 (complex128) complex128 1,000 0.0029 0.0029 1.02Γ— 98%
βœ… np.amax axis=0 (complex128) complex128 100,000 0.1417 0.1202 1.18Γ— 85%
βœ… np.amax axis=0 (complex128) complex128 10,000,000 15.7452 13.1310 1.20Γ— 83%
βœ… np.amax axis=0 (float16) float16 1,000 0.0039 0.0021 1.92Γ— 52%
βœ… np.amax axis=0 (float16) float16 100,000 0.5054 0.5030 1.00Γ— 100%
🟑 np.amax axis=0 (float16) float16 10,000,000 49.4449 75.7723 0.65Γ— 153%
β–« np.amax axis=0 (float32) float32 1,000 0.0020 0.0008 2.47Γ— 40%
🟑 np.amax axis=0 (float32) float32 100,000 0.0097 0.0112 0.87Γ— 115%
🟑 np.amax axis=0 (float32) float32 10,000,000 1.7638 1.9930 0.89Γ— 113%
β–« np.amax axis=0 (float64) float64 1,000 0.0020 0.0009 2.18Γ— 46%
🟑 np.amax axis=0 (float64) float64 100,000 0.0165 0.0175 0.94Γ— 106%
🟑 np.amax axis=0 (float64) float64 10,000,000 4.1500 4.2356 0.98Γ— 102%
β–« np.amax axis=0 (int16) int16 1,000 0.0019 0.0007 2.81Γ— 36%
βœ… np.amax axis=0 (int16) int16 100,000 0.0062 0.0037 1.68Γ— 60%
βœ… np.amax axis=0 (int16) int16 10,000,000 0.4174 0.3993 1.04Γ— 96%
β–« np.amax axis=0 (int32) int32 1,000 0.0019 0.0008 2.51Γ— 40%
βœ… np.amax axis=0 (int32) int32 100,000 0.0099 0.0055 1.81Γ— 55%
βœ… np.amax axis=0 (int32) int32 10,000,000 1.5302 1.4232 1.07Γ— 93%
β–« np.amax axis=0 (int64) int64 1,000 0.0020 0.0008 2.46Γ— 41%
βœ… np.amax axis=0 (int64) int64 100,000 0.0139 0.0129 1.07Γ— 93%
βœ… np.amax axis=0 (int64) int64 10,000,000 4.5156 3.7700 1.20Γ— 84%
βœ… np.amax axis=0 (int8) int8 1,000 0.0019 0.0014 1.44Γ— 70%
βœ… np.amax axis=0 (int8) int8 100,000 0.0075 0.0038 2.00Γ— 50%
βœ… np.amax axis=0 (int8) int8 10,000,000 0.1960 0.1810 1.08Γ— 92%
β–« np.amax axis=0 (uint16) uint16 1,000 0.0019 0.0007 2.79Γ— 36%
βœ… np.amax axis=0 (uint16) uint16 100,000 0.0062 0.0037 1.71Γ— 58%
βœ… np.amax axis=0 (uint16) uint16 10,000,000 0.4066 0.4009 1.01Γ— 99%
β–« np.amax axis=0 (uint32) uint32 1,000 0.0019 0.0008 2.39Γ— 42%
βœ… np.amax axis=0 (uint32) uint32 100,000 0.0105 0.0055 1.90Γ— 53%
βœ… np.amax axis=0 (uint32) uint32 10,000,000 1.5582 1.3678 1.14Γ— 88%
β–« np.amax axis=0 (uint64) uint64 1,000 0.0020 0.0009 2.19Γ— 46%
βœ… np.amax axis=0 (uint64) uint64 100,000 0.0165 0.0149 1.10Γ— 90%
βœ… np.amax axis=0 (uint64) uint64 10,000,000 4.8129 3.8642 1.25Γ— 80%
β–« np.amax axis=0 (uint8) uint8 1,000 0.0019 0.0007 2.90Γ— 34%
βœ… np.amax axis=0 (uint8) uint8 100,000 0.0079 0.0031 2.60Γ— 38%
βœ… np.amax axis=0 (uint8) uint8 10,000,000 0.1980 0.1853 1.07Γ— 94%
βœ… np.amin (complex128) complex128 1,000 0.0030 0.0018 1.65Γ— 61%
βœ… np.amin (complex128) complex128 100,000 0.1631 0.1144 1.43Γ— 70%
βœ… np.amin (complex128) complex128 10,000,000 16.4507 13.7923 1.19Γ— 84%
βœ… np.amin (float16) float16 1,000 0.0039 0.0011 3.40Γ— 29%
βœ… np.amin (float16) float16 100,000 0.5184 0.2957 1.75Γ— 57%
βœ… np.amin (float16) float16 10,000,000 52.2634 30.6378 1.71Γ— 59%
β–« np.amin (float32) float32 1,000 0.0016 0.0008 1.96Γ— 51%
🟑 np.amin (float32) float32 100,000 0.0059 0.0085 0.70Γ— 144%
🟑 np.amin (float32) float32 10,000,000 1.4309 1.6079 0.89Γ— 112%
β–« np.amin (float64) float64 1,000 0.0016 0.0008 2.13Γ— 47%
🟑 np.amin (float64) float64 100,000 0.0102 0.0160 0.64Γ— 157%
🟑 np.amin (float64) float64 10,000,000 3.4121 3.9668 0.86Γ— 116%
β–« np.amin (int16) int16 1,000 0.0016 0.0007 2.18Γ— 46%
βœ… np.amin (int16) int16 100,000 0.0034 0.0015 2.24Γ— 45%
🟑 np.amin (int16) int16 10,000,000 0.3086 0.3322 0.93Γ— 108%
β–« np.amin (int32) int32 1,000 0.0016 0.0007 2.23Γ— 45%
βœ… np.amin (int32) int32 100,000 0.0043 0.0023 1.90Γ— 53%
βœ… np.amin (int32) int32 10,000,000 1.1001 1.0492 1.05Γ— 95%
β–« np.amin (int64) int64 1,000 0.0016 0.0007 2.32Γ— 43%
βœ… np.amin (int64) int64 100,000 0.0105 0.0078 1.34Γ— 75%
🟑 np.amin (int64) int64 10,000,000 3.3743 3.5906 0.94Γ— 106%
β–« np.amin (int8) int8 1,000 0.0016 0.0007 2.21Γ— 45%
βœ… np.amin (int8) int8 100,000 0.0027 0.0012 2.21Γ— 45%
🟑 np.amin (int8) int8 10,000,000 0.1287 0.1462 0.88Γ— 114%
β–« np.amin (uint16) uint16 1,000 0.0016 0.0007 2.21Γ— 45%
βœ… np.amin (uint16) uint16 100,000 0.0039 0.0015 2.62Γ— 38%
βœ… np.amin (uint16) uint16 10,000,000 0.3188 0.3184 1.00Γ— 100%
β–« np.amin (uint32) uint32 1,000 0.0016 0.0006 2.49Γ— 40%
βœ… np.amin (uint32) uint32 100,000 0.0044 0.0032 1.35Γ— 74%
βœ… np.amin (uint32) uint32 10,000,000 1.0969 1.0524 1.04Γ— 96%
β–« np.amin (uint64) uint64 1,000 0.0017 0.0008 2.01Γ— 50%
βœ… np.amin (uint64) uint64 100,000 0.0118 0.0102 1.16Γ— 86%
βœ… np.amin (uint64) uint64 10,000,000 3.7562 3.7107 1.01Γ— 99%
β–« np.amin (uint8) uint8 1,000 0.0016 0.0007 2.20Γ— 45%
βœ… np.amin (uint8) uint8 100,000 0.0028 0.0012 2.34Γ— 43%
🟑 np.amin (uint8) uint8 10,000,000 0.1207 0.1490 0.81Γ— 124%
🟑 np.amin axis=0 (complex128) complex128 1,000 0.0029 0.0032 0.93Γ— 107%
🟑 np.amin axis=0 (complex128) complex128 100,000 0.1390 0.1482 0.94Γ— 107%
βœ… np.amin axis=0 (complex128) complex128 10,000,000 15.7175 15.3632 1.02Γ— 98%
βœ… np.amin axis=0 (float16) float16 1,000 0.0040 0.0021 1.94Γ— 52%
🟑 np.amin axis=0 (float16) float16 100,000 0.4748 0.5203 0.91Γ— 110%
🟑 np.amin axis=0 (float16) float16 10,000,000 47.0860 78.8804 0.60Γ— 168%
β–« np.amin axis=0 (float32) float32 1,000 0.0020 0.0008 2.60Γ— 38%
βœ… np.amin axis=0 (float32) float32 100,000 0.0100 0.0098 1.01Γ— 99%
🟑 np.amin axis=0 (float32) float32 10,000,000 1.6982 1.8897 0.90Γ— 111%
β–« np.amin axis=0 (float64) float64 1,000 0.0020 0.0009 2.38Γ— 42%
βœ… np.amin axis=0 (float64) float64 100,000 0.0170 0.0168 1.01Γ— 99%
🟑 np.amin axis=0 (float64) float64 10,000,000 4.0838 4.2063 0.97Γ— 103%
β–« np.amin axis=0 (int16) int16 1,000 0.0019 0.0006 3.03Γ— 33%
βœ… np.amin axis=0 (int16) int16 100,000 0.0072 0.0036 1.98Γ— 50%
βœ… np.amin axis=0 (int16) int16 10,000,000 0.4065 0.3871 1.05Γ— 95%
β–« np.amin axis=0 (int32) int32 1,000 0.0019 0.0007 2.88Γ— 35%
βœ… np.amin axis=0 (int32) int32 100,000 0.0099 0.0055 1.82Γ— 55%
βœ… np.amin axis=0 (int32) int32 10,000,000 1.4950 1.3257 1.13Γ— 89%
β–« np.amin axis=0 (int64) int64 1,000 0.0020 0.0008 2.60Γ— 38%
βœ… np.amin axis=0 (int64) int64 100,000 0.0151 0.0130 1.15Γ— 87%
βœ… np.amin axis=0 (int64) int64 10,000,000 4.2095 3.6711 1.15Γ— 87%
β–« np.amin axis=0 (int8) int8 1,000 0.0021 0.0006 3.36Γ— 30%
βœ… np.amin axis=0 (int8) int8 100,000 0.0070 0.0042 1.67Γ— 60%
βœ… np.amin axis=0 (int8) int8 10,000,000 0.1946 0.1865 1.04Γ— 96%
β–« np.amin axis=0 (uint16) uint16 1,000 0.0024 0.0007 3.58Γ— 28%
βœ… np.amin axis=0 (uint16) uint16 100,000 0.0062 0.0037 1.69Γ— 59%
βœ… np.amin axis=0 (uint16) uint16 10,000,000 0.4283 0.3837 1.12Γ— 90%
β–« np.amin axis=0 (uint32) uint32 1,000 0.0019 0.0007 2.68Γ— 37%
βœ… np.amin axis=0 (uint32) uint32 100,000 0.0101 0.0055 1.84Γ— 54%
βœ… np.amin axis=0 (uint32) uint32 10,000,000 1.4473 1.4195 1.02Γ— 98%
β–« np.amin axis=0 (uint64) uint64 1,000 0.0020 0.0008 2.51Γ— 40%
βœ… np.amin axis=0 (uint64) uint64 100,000 0.0162 0.0149 1.08Γ— 92%
βœ… np.amin axis=0 (uint64) uint64 10,000,000 6.5201 3.9728 1.64Γ— 61%
β–« np.amin axis=0 (uint8) uint8 1,000 0.0031 0.0006 4.95Γ— 20%
βœ… np.amin axis=0 (uint8) uint8 100,000 0.0068 0.0050 1.36Γ— 74%
βœ… np.amin axis=0 (uint8) uint8 10,000,000 0.1993 0.1898 1.05Γ— 95%
🟑 np.argmax (complex128) complex128 1,000 0.0019 0.0022 0.87Γ— 115%
🟑 np.argmax (complex128) complex128 100,000 0.1266 0.1481 0.85Γ— 117%
βœ… np.argmax (complex128) complex128 10,000,000 13.9015 13.8404 1.00Γ— 100%
🟑 np.argmax (float16) float16 1,000 0.0029 0.0031 0.94Γ— 106%
βœ… np.argmax (float16) float16 100,000 0.4335 0.2184 1.98Γ— 50%
βœ… np.argmax (float16) float16 10,000,000 43.8671 14.1525 3.10Γ— 32%
β–« np.argmax (float32) float32 1,000 0.0009 0.0008 1.05Γ— 95%
πŸ”΄ np.argmax (float32) float32 100,000 0.0087 0.0580 0.15Γ— 669%
🟠 np.argmax (float32) float32 10,000,000 1.9137 5.7625 0.33Γ— 301%
β–« np.argmax (float64) float64 1,000 0.0010 0.0012 0.78Γ— 128%
🟠 np.argmax (float64) float64 100,000 0.0167 0.0592 0.28Γ— 355%
🟑 np.argmax (float64) float64 10,000,000 4.2645 6.8295 0.62Γ— 160%
β–« np.argmax (int16) int16 1,000 0.0008 0.0007 1.13Γ— 89%
βœ… np.argmax (int16) int16 100,000 0.0035 0.0032 1.07Γ— 93%
βœ… np.argmax (int16) int16 10,000,000 0.4148 0.3569 1.16Γ— 86%
β–« np.argmax (int32) int32 1,000 0.0009 0.0007 1.17Γ— 85%
βœ… np.argmax (int32) int32 100,000 0.0060 0.0057 1.05Γ— 95%
βœ… np.argmax (int32) int32 10,000,000 1.6383 1.1982 1.37Γ— 73%
β–« np.argmax (int64) int64 1,000 0.0011 0.0009 1.21Γ— 83%
🟠 np.argmax (int64) int64 100,000 0.0156 0.0524 0.30Γ— 335%
🟑 np.argmax (int64) int64 10,000,000 4.3721 4.6726 0.94Γ— 107%
β–« np.argmax (int8) int8 1,000 0.0009 0.0007 1.23Γ— 82%
🟑 np.argmax (int8) int8 100,000 0.0023 0.0023 1.00Γ— 100%
🟑 np.argmax (int8) int8 10,000,000 0.1639 0.2730 0.60Γ— 167%
β–« np.argmax (uint16) uint16 1,000 0.0010 0.0007 1.41Γ— 71%
βœ… np.argmax (uint16) uint16 100,000 0.0057 0.0033 1.74Γ— 58%
βœ… np.argmax (uint16) uint16 10,000,000 0.5121 0.3437 1.49Γ— 67%
β–« np.argmax (uint32) uint32 1,000 0.0009 0.0007 1.23Γ— 81%
βœ… np.argmax (uint32) uint32 100,000 0.0101 0.0057 1.76Γ— 57%
βœ… np.argmax (uint32) uint32 10,000,000 1.8813 1.2228 1.54Γ— 65%
β–« np.argmax (uint64) uint64 1,000 0.0010 0.0010 0.97Γ— 103%
🟠 np.argmax (uint64) uint64 100,000 0.0173 0.0601 0.29Γ— 347%
🟑 np.argmax (uint64) uint64 10,000,000 4.6673 4.9980 0.93Γ— 107%
β–« np.argmax (uint8) uint8 1,000 0.0009 0.0007 1.27Γ— 79%
βœ… np.argmax (uint8) uint8 100,000 0.0034 0.0023 1.47Γ— 68%
βœ… np.argmax (uint8) uint8 10,000,000 0.2183 0.1747 1.25Γ— 80%
βœ… np.argmin (complex128) complex128 1,000 0.0021 0.0017 1.21Γ— 83%
βœ… np.argmin (complex128) complex128 100,000 0.1271 0.1146 1.11Γ— 90%
🟑 np.argmin (complex128) complex128 10,000,000 14.2050 20.0184 0.71Γ— 141%
βœ… np.argmin (float16) float16 1,000 0.0030 0.0021 1.42Γ— 70%
βœ… np.argmin (float16) float16 100,000 0.4183 0.1428 2.93Γ— 34%
βœ… np.argmin (float16) float16 10,000,000 42.0779 21.9963 1.91Γ— 52%
β–« np.argmin (float32) float32 1,000 0.0009 0.0012 0.74Γ— 136%
πŸ”΄ np.argmin (float32) float32 100,000 0.0085 0.0566 0.15Γ— 666%
🟠 np.argmin (float32) float32 10,000,000 1.9936 6.5124 0.31Γ— 327%
β–« np.argmin (float64) float64 1,000 0.0010 0.0012 0.81Γ— 124%
🟠 np.argmin (float64) float64 100,000 0.0172 0.0571 0.30Γ— 332%
🟠 np.argmin (float64) float64 10,000,000 4.2683 9.2928 0.46Γ— 218%
β–« np.argmin (int16) int16 1,000 0.0009 0.0007 1.22Γ— 82%
βœ… np.argmin (int16) int16 100,000 0.0041 0.0017 2.43Γ— 41%
🟠 np.argmin (int16) int16 10,000,000 0.3710 0.7659 0.48Γ— 206%
β–« np.argmin (int32) int32 1,000 0.0009 0.0007 1.18Γ— 85%
βœ… np.argmin (int32) int32 100,000 0.0064 0.0027 2.42Γ— 41%
🟠 np.argmin (int32) int32 10,000,000 1.5661 3.8037 0.41Γ— 243%
β–« np.argmin (int64) int64 1,000 0.0009 0.0009 1.05Γ— 95%
🟠 np.argmin (int64) int64 100,000 0.0141 0.0285 0.49Γ— 202%
🟠 np.argmin (int64) int64 10,000,000 4.6382 10.1031 0.46Γ— 218%
β–« np.argmin (int8) int8 1,000 0.0009 0.0007 1.23Γ— 82%
β–« np.argmin (int8) int8 100,000 0.0025 0.0010 2.51Γ— 40%
🟑 np.argmin (int8) int8 10,000,000 0.1575 0.1631 0.97Γ— 104%
β–« np.argmin (uint16) uint16 1,000 0.0009 0.0007 1.26Γ— 80%
βœ… np.argmin (uint16) uint16 100,000 0.0057 0.0017 3.38Γ— 30%
🟑 np.argmin (uint16) uint16 10,000,000 0.5604 0.7560 0.74Γ— 135%
β–« np.argmin (uint32) uint32 1,000 0.0009 0.0007 1.17Γ— 86%
βœ… np.argmin (uint32) uint32 100,000 0.0104 0.0036 2.85Γ— 35%
🟠 np.argmin (uint32) uint32 10,000,000 1.8309 4.1115 0.45Γ— 225%
β–« np.argmin (uint64) uint64 1,000 0.0010 0.0009 1.06Γ— 94%
🟑 np.argmin (uint64) uint64 100,000 0.0172 0.0334 0.52Γ— 194%
🟠 np.argmin (uint64) uint64 10,000,000 4.5163 9.1975 0.49Γ— 204%
β–« np.argmin (uint8) uint8 1,000 0.0009 0.0007 1.22Γ— 82%
β–« np.argmin (uint8) uint8 100,000 0.0031 0.0010 3.17Γ— 32%
βœ… np.argmin (uint8) uint8 10,000,000 0.2245 0.1651 1.36Γ— 74%
🟑 np.cumprod(a) (float16) float16 1,000 0.0063 0.0099 0.64Γ— 157%
🟠 np.cumprod(a) (float16) float16 100,000 0.4134 0.9650 0.43Γ— 233%
🟠 np.cumprod(a) (float16) float16 10,000,000 44.2839 94.7772 0.47Γ— 214%
βœ… np.cumprod(a) (float32) float32 1,000 0.0038 0.0031 1.23Γ— 81%
βœ… np.cumprod(a) (float32) float32 100,000 0.1696 0.1138 1.49Γ— 67%
βœ… np.cumprod(a) (float32) float32 10,000,000 20.7899 10.2126 2.04Γ— 49%
🟑 np.cumprod(a) (float64) float64 1,000 0.0039 0.0046 0.84Γ— 119%
βœ… np.cumprod(a) (float64) float64 100,000 0.1674 0.1473 1.14Γ— 88%
βœ… np.cumprod(a) (float64) float64 10,000,000 25.0159 14.1834 1.76Γ— 57%
🟑 np.cumsum (complex128) complex128 1,000 0.0030 0.0032 0.95Γ— 105%
βœ… np.cumsum (complex128) complex128 100,000 0.3630 0.2362 1.54Γ— 65%
βœ… np.cumsum (complex128) complex128 10,000,000 52.8389 25.0336 2.11Γ— 47%
🟑 np.cumsum (float16) float16 1,000 0.0072 0.0095 0.76Γ— 131%
🟑 np.cumsum (float16) float16 100,000 0.4668 0.9169 0.51Γ— 196%
🟑 np.cumsum (float16) float16 10,000,000 49.2891 91.6228 0.54Γ— 186%
βœ… np.cumsum (float32) float32 1,000 0.0028 0.0017 1.60Γ— 62%
βœ… np.cumsum (float32) float32 100,000 0.1619 0.0784 2.06Γ— 48%
βœ… np.cumsum (float32) float32 10,000,000 19.8910 7.4357 2.67Γ— 37%
βœ… np.cumsum (float64) float64 1,000 0.0029 0.0021 1.39Γ— 72%
βœ… np.cumsum (float64) float64 100,000 0.1686 0.1272 1.33Γ— 75%
βœ… np.cumsum (float64) float64 10,000,000 24.4835 14.3123 1.71Γ— 58%
βœ… np.cumsum (int16) int16 1,000 0.0025 0.0019 1.30Γ— 77%
βœ… np.cumsum (int16) int16 100,000 0.3268 0.1215 2.69Γ— 37%
βœ… np.cumsum (int16) int16 10,000,000 28.8643 11.0684 2.61Γ— 38%
βœ… np.cumsum (int32) int32 1,000 0.0025 0.0017 1.48Γ— 67%
βœ… np.cumsum (int32) int32 100,000 0.3144 0.1209 2.60Γ— 38%
βœ… np.cumsum (int32) int32 10,000,000 29.3769 11.6781 2.52Γ— 40%
🟑 np.cumsum (int64) int64 1,000 0.0017 0.0020 0.87Γ— 115%
🟠 np.cumsum (int64) int64 100,000 0.0298 0.1205 0.25Γ— 404%
βœ… np.cumsum (int64) int64 10,000,000 15.7029 15.3993 1.02Γ— 98%
βœ… np.cumsum (int8) int8 1,000 0.0033 0.0019 1.71Γ— 58%
βœ… np.cumsum (int8) int8 100,000 0.3408 0.1194 2.85Γ— 35%
βœ… np.cumsum (int8) int8 10,000,000 28.6022 10.6443 2.69Γ— 37%
βœ… np.cumsum (uint16) uint16 1,000 0.0025 0.0019 1.28Γ— 78%
βœ… np.cumsum (uint16) uint16 100,000 0.3213 0.1183 2.72Γ— 37%
βœ… np.cumsum (uint16) uint16 10,000,000 29.1560 11.1585 2.61Γ— 38%
βœ… np.cumsum (uint32) uint32 1,000 0.0025 0.0021 1.17Γ— 86%
βœ… np.cumsum (uint32) uint32 100,000 0.3202 0.1199 2.67Γ— 38%
βœ… np.cumsum (uint32) uint32 10,000,000 29.2400 12.9004 2.27Γ— 44%
🟑 np.cumsum (uint64) uint64 1,000 0.0017 0.0019 0.93Γ— 108%
🟠 np.cumsum (uint64) uint64 100,000 0.0335 0.1206 0.28Γ— 359%
βœ… np.cumsum (uint64) uint64 10,000,000 16.3669 14.9772 1.09Γ— 92%
βœ… np.cumsum (uint8) uint8 1,000 0.0024 0.0021 1.15Γ— 87%
βœ… np.cumsum (uint8) uint8 100,000 0.3392 0.1173 2.89Γ— 35%
βœ… np.cumsum (uint8) uint8 10,000,000 29.4047 10.6918 2.75Γ— 36%
βœ… np.mean (complex128) complex128 1,000 0.0026 0.0010 2.58Γ— 39%
βœ… np.mean (complex128) complex128 100,000 0.0303 0.0116 2.62Γ— 38%
βœ… np.mean (complex128) complex128 10,000,000 8.5271 6.8972 1.24Γ— 81%
βœ… np.mean (float16) float16 1,000 0.0047 0.0012 3.86Γ— 26%
βœ… np.mean (float16) float16 100,000 0.1029 0.0804 1.28Γ— 78%
βœ… np.mean (float16) float16 10,000,000 10.3777 8.0110 1.29Γ— 77%
β–« np.mean (float32) float32 1,000 0.0037 0.0007 5.29Γ— 19%
βœ… np.mean (float32) float32 100,000 0.0170 0.0032 5.22Γ— 19%
βœ… np.mean (float32) float32 10,000,000 2.8795 1.1770 2.45Γ— 41%
β–« np.mean (float64) float64 1,000 0.0024 0.0008 2.98Γ— 34%
βœ… np.mean (float64) float64 100,000 0.0167 0.0062 2.70Γ— 37%
βœ… np.mean (float64) float64 10,000,000 4.8035 3.0818 1.56Γ— 64%
β–« np.mean (int16) int16 1,000 0.0030 0.0008 3.63Γ— 28%
βœ… np.mean (int16) int16 100,000 0.0520 0.0191 2.73Γ— 37%
βœ… np.mean (int16) int16 10,000,000 5.0434 3.6523 1.38Γ— 72%
β–« np.mean (int32) int32 1,000 0.0031 0.0008 3.70Γ— 27%
βœ… np.mean (int32) int32 100,000 0.0384 0.0192 2.00Γ— 50%
βœ… np.mean (int32) int32 10,000,000 4.5473 2.8394 1.60Γ— 62%
β–« np.mean (int64) int64 1,000 0.0029 0.0007 4.32Γ— 23%
βœ… np.mean (int64) int64 100,000 0.0342 0.0064 5.37Γ— 19%
βœ… np.mean (int64) int64 10,000,000 6.1407 3.0443 2.02Γ— 50%
β–« np.mean (int8) int8 1,000 0.0044 0.0009 5.05Γ— 20%
βœ… np.mean (int8) int8 100,000 0.0521 0.0188 2.78Γ— 36%
βœ… np.mean (int8) int8 10,000,000 5.0129 1.8465 2.71Γ— 37%
β–« np.mean (uint16) uint16 1,000 0.0029 0.0008 3.55Γ— 28%
βœ… np.mean (uint16) uint16 100,000 0.0542 0.0191 2.84Γ— 35%
βœ… np.mean (uint16) uint16 10,000,000 5.1089 2.2867 2.23Γ— 45%
β–« np.mean (uint32) uint32 1,000 0.0030 0.0008 3.59Γ— 28%
βœ… np.mean (uint32) uint32 100,000 0.0399 0.0192 2.08Γ— 48%
βœ… np.mean (uint32) uint32 10,000,000 4.6300 2.8166 1.64Γ— 61%
β–« np.mean (uint64) uint64 1,000 0.0030 0.0008 3.81Γ— 26%
βœ… np.mean (uint64) uint64 100,000 0.0521 0.0064 8.16Γ— 12%
βœ… np.mean (uint64) uint64 10,000,000 7.8297 3.0240 2.59Γ— 39%
β–« np.mean (uint8) uint8 1,000 0.0031 0.0009 3.54Γ— 28%
βœ… np.mean (uint8) uint8 100,000 0.0570 0.0190 3.01Γ— 33%
βœ… np.mean (uint8) uint8 10,000,000 5.2869 1.8522 2.85Γ— 35%
βœ… np.mean axis=0 (complex128) complex128 1,000 0.0031 0.0025 1.23Γ— 81%
🟑 np.mean axis=0 (complex128) complex128 100,000 0.0174 0.0243 0.71Γ— 140%
βœ… np.mean axis=0 (complex128) complex128 10,000,000 7.4300 7.1318 1.04Γ— 96%
βœ… np.mean axis=0 (float16) float16 1,000 0.0056 0.0035 1.59Γ— 63%
🟑 np.mean axis=0 (float16) float16 100,000 0.0793 0.1507 0.53Γ— 190%
🟠 np.mean axis=0 (float16) float16 10,000,000 7.0247 14.1582 0.50Γ— 202%
βœ… np.mean axis=0 (float32) float32 1,000 0.0036 0.0021 1.71Γ— 59%
🟑 np.mean axis=0 (float32) float32 100,000 0.0098 0.0101 0.97Γ— 103%
🟑 np.mean axis=0 (float32) float32 10,000,000 1.3927 1.4838 0.94Γ— 106%
βœ… np.mean axis=0 (float64) float64 1,000 0.0029 0.0022 1.34Γ— 75%
βœ… np.mean axis=0 (float64) float64 100,000 0.0155 0.0150 1.03Γ— 97%
βœ… np.mean axis=0 (float64) float64 10,000,000 3.7262 3.5836 1.04Γ— 96%
β–« np.mean axis=0 (int16) int16 1,000 0.0035 0.0008 4.58Γ— 22%
βœ… np.mean axis=0 (int16) int16 100,000 0.0573 0.0084 6.79Γ— 15%
βœ… np.mean axis=0 (int16) int16 10,000,000 5.1418 0.9907 5.19Γ— 19%
β–« np.mean axis=0 (int32) int32 1,000 0.0036 0.0008 4.45Γ— 22%
βœ… np.mean axis=0 (int32) int32 100,000 0.0399 0.0078 5.11Γ— 20%
βœ… np.mean axis=0 (int32) int32 10,000,000 4.4363 1.9084 2.33Γ— 43%
βœ… np.mean axis=0 (int64) int64 1,000 0.0034 0.0013 2.61Γ— 38%
🟠 np.mean axis=0 (int64) int64 100,000 0.0298 0.0620 0.48Γ— 208%
πŸ”΄ np.mean axis=0 (int64) int64 10,000,000 6.0028 36.4496 0.17Γ— 607%
β–« np.mean axis=0 (int8) int8 1,000 0.0040 0.0008 5.10Γ— 20%
βœ… np.mean axis=0 (int8) int8 100,000 0.0481 0.0107 4.49Γ— 22%
βœ… np.mean axis=0 (int8) int8 10,000,000 5.1002 0.8293 6.15Γ— 16%
β–« np.mean axis=0 (uint16) uint16 1,000 0.0036 0.0008 4.56Γ— 22%
βœ… np.mean axis=0 (uint16) uint16 100,000 0.0487 0.0085 5.73Γ— 18%
βœ… np.mean axis=0 (uint16) uint16 10,000,000 5.1212 0.9833 5.21Γ— 19%
β–« np.mean axis=0 (uint32) uint32 1,000 0.0035 0.0008 4.29Γ— 23%
βœ… np.mean axis=0 (uint32) uint32 100,000 0.0362 0.0094 3.85Γ— 26%
βœ… np.mean axis=0 (uint32) uint32 10,000,000 4.6000 2.1895 2.10Γ— 48%
βœ… np.mean axis=0 (uint64) uint64 1,000 0.0036 0.0017 2.09Γ— 48%
🟑 np.mean axis=0 (uint64) uint64 100,000 0.0463 0.0898 0.52Γ— 194%
πŸ”΄ np.mean axis=0 (uint64) uint64 10,000,000 7.2856 41.5410 0.17Γ— 570%
β–« np.mean axis=0 (uint8) uint8 1,000 0.0038 0.0008 4.73Γ— 21%
βœ… np.mean axis=0 (uint8) uint8 100,000 0.0497 0.0082 6.03Γ— 17%
βœ… np.mean axis=0 (uint8) uint8 10,000,000 5.1578 0.8219 6.28Γ— 16%
βœ… np.mean axis=1 (complex128) complex128 1,000 0.0031 0.0026 1.21Γ— 83%
🟑 np.mean axis=1 (complex128) complex128 100,000 0.0348 0.0349 1.00Γ— 100%
βœ… np.mean axis=1 (complex128) complex128 10,000,000 8.6206 8.5984 1.00Γ— 100%
βœ… np.mean axis=1 (float16) float16 1,000 0.0049 0.0040 1.23Γ— 82%
🟑 np.mean axis=1 (float16) float16 100,000 0.0957 0.1374 0.70Γ— 144%
🟑 np.mean axis=1 (float16) float16 10,000,000 8.1108 13.0257 0.62Γ— 161%
βœ… np.mean axis=1 (float32) float32 1,000 0.0035 0.0021 1.69Γ— 59%
βœ… np.mean axis=1 (float32) float32 100,000 0.0178 0.0143 1.25Γ— 80%
βœ… np.mean axis=1 (float32) float32 10,000,000 3.1620 1.9854 1.59Γ— 63%
βœ… np.mean axis=1 (float64) float64 1,000 0.0031 0.0022 1.43Γ— 70%
βœ… np.mean axis=1 (float64) float64 100,000 0.0210 0.0152 1.38Γ— 72%
βœ… np.mean axis=1 (float64) float64 10,000,000 5.5001 3.8569 1.43Γ— 70%
β–« np.mean axis=1 (int16) int16 1,000 0.0035 0.0008 4.26Γ— 24%
βœ… np.mean axis=1 (int16) int16 100,000 0.0579 0.0080 7.25Γ— 14%
βœ… np.mean axis=1 (int16) int16 10,000,000 5.2057 0.8685 5.99Γ— 17%
β–« np.mean axis=1 (int32) int32 1,000 0.0035 0.0008 4.47Γ— 22%
βœ… np.mean axis=1 (int32) int32 100,000 0.0424 0.0049 8.69Γ— 12%
βœ… np.mean axis=1 (int32) int32 10,000,000 4.6015 1.5143 3.04Γ— 33%
βœ… np.mean axis=1 (int64) int64 1,000 0.0034 0.0013 2.60Γ— 38%
🟑 np.mean axis=1 (int64) int64 100,000 0.0412 0.0600 0.69Γ— 146%
🟑 np.mean axis=1 (int64) int64 10,000,000 6.5756 7.1615 0.92Γ— 109%
β–« np.mean axis=1 (int8) int8 1,000 0.0035 0.0009 4.11Γ— 24%
βœ… np.mean axis=1 (int8) int8 100,000 0.0560 0.0089 6.29Γ— 16%
βœ… np.mean axis=1 (int8) int8 10,000,000 5.1060 0.7330 6.97Γ— 14%
β–« np.mean axis=1 (uint16) uint16 1,000 0.0035 0.0009 4.00Γ— 25%
βœ… np.mean axis=1 (uint16) uint16 100,000 0.0571 0.0079 7.18Γ— 14%
βœ… np.mean axis=1 (uint16) uint16 10,000,000 5.2099 0.8763 5.95Γ— 17%
β–« np.mean axis=1 (uint32) uint32 1,000 0.0034 0.0008 4.22Γ— 24%
βœ… np.mean axis=1 (uint32) uint32 100,000 0.0462 0.0092 5.01Γ— 20%
βœ… np.mean axis=1 (uint32) uint32 10,000,000 4.8969 1.9956 2.45Γ— 41%
βœ… np.mean axis=1 (uint64) uint64 1,000 0.0037 0.0017 2.14Γ— 47%
🟑 np.mean axis=1 (uint64) uint64 100,000 0.0536 0.0873 0.61Γ— 163%
βœ… np.mean axis=1 (uint64) uint64 10,000,000 11.1462 9.3389 1.19Γ— 84%
β–« np.mean axis=1 (uint8) uint8 1,000 0.0035 0.0008 4.44Γ— 22%
βœ… np.mean axis=1 (uint8) uint8 100,000 0.0617 0.0079 7.80Γ— 13%
βœ… np.mean axis=1 (uint8) uint8 10,000,000 5.1481 0.7363 6.99Γ— 14%
βœ… np.nanmax(a) (float16) float16 1,000 0.0053 0.0011 4.74Γ— 21%
βœ… np.nanmax(a) (float16) float16 100,000 0.5135 0.3094 1.66Γ— 60%
βœ… np.nanmax(a) (float16) float16 10,000,000 50.3872 31.6489 1.59Γ— 63%
β–« np.nanmax(a) (float32) float32 1,000 0.0029 0.0008 3.50Γ— 29%
🟠 np.nanmax(a) (float32) float32 100,000 0.0071 0.0288 0.25Γ— 407%
🟠 np.nanmax(a) (float32) float32 10,000,000 1.4848 3.2658 0.46Γ— 220%
βœ… np.nanmax(a) (float64) float64 1,000 0.0037 0.0012 3.02Γ— 33%
🟠 np.nanmax(a) (float64) float64 100,000 0.0155 0.0603 0.26Γ— 390%
🟠 np.nanmax(a) (float64) float64 10,000,000 3.4599 7.0157 0.49Γ— 203%
βœ… np.nanmean(a) (float16) float16 1,000 0.0128 0.0017 7.46Γ— 13%
βœ… np.nanmean(a) (float16) float16 100,000 0.3311 0.1059 3.12Γ— 32%
βœ… np.nanmean(a) (float16) float16 10,000,000 37.1950 10.5785 3.52Γ— 28%
βœ… np.nanmean(a) (float32) float32 1,000 0.0096 0.0012 7.87Γ— 13%
βœ… np.nanmean(a) (float32) float32 100,000 0.0749 0.0383 1.96Γ— 51%
βœ… np.nanmean(a) (float32) float32 10,000,000 19.4404 4.1632 4.67Γ— 21%
βœ… np.nanmean(a) (float64) float64 1,000 0.0097 0.0012 7.97Γ— 12%
βœ… np.nanmean(a) (float64) float64 100,000 0.3257 0.0387 8.42Γ— 12%
βœ… np.nanmean(a) (float64) float64 10,000,000 31.3597 5.6141 5.59Γ— 18%
βœ… np.nanmedian(a) (float16) float16 1,000 0.0183 0.0044 4.15Γ— 24%
🟑 np.nanmedian(a) (float16) float16 100,000 0.9708 1.3140 0.74Γ— 135%
βœ… np.nanmedian(a) (float16) float16 10,000,000 116.3105 93.3718 1.25Γ— 80%
βœ… np.nanmedian(a) (float32) float32 1,000 0.0137 0.0023 5.84Γ— 17%
🟑 np.nanmedian(a) (float32) float32 100,000 0.4951 0.7126 0.69Γ— 144%
🟑 np.nanmedian(a) (float32) float32 10,000,000 76.8994 80.3683 0.96Γ— 104%
βœ… np.nanmedian(a) (float64) float64 1,000 0.0116 0.0026 4.42Γ— 23%
🟑 np.nanmedian(a) (float64) float64 100,000 0.5300 0.7595 0.70Γ— 143%
🟑 np.nanmedian(a) (float64) float64 10,000,000 91.1907 92.5204 0.99Γ— 102%
βœ… np.nanmin(a) (float16) float16 1,000 0.0054 0.0011 4.89Γ— 20%
βœ… np.nanmin(a) (float16) float16 100,000 0.5116 0.3033 1.69Γ— 59%
βœ… np.nanmin(a) (float16) float16 10,000,000 60.5488 31.1541 1.94Γ— 52%
β–« np.nanmin(a) (float32) float32 1,000 0.0029 0.0009 3.15Γ— 32%
🟠 np.nanmin(a) (float32) float32 100,000 0.0070 0.0287 0.24Γ— 408%
🟠 np.nanmin(a) (float32) float32 10,000,000 1.5149 3.2889 0.46Γ— 217%
βœ… np.nanmin(a) (float64) float64 1,000 0.0030 0.0012 2.43Γ— 41%
πŸ”΄ np.nanmin(a) (float64) float64 100,000 0.0112 0.0589 0.19Γ— 525%
🟑 np.nanmin(a) (float64) float64 10,000,000 3.5942 6.8799 0.52Γ— 191%
βœ… np.nanpercentile(a, 50) (float16) float16 1,000 0.0316 0.0044 7.16Γ— 14%
βœ… np.nanpercentile(a, 50) (float16) float16 100,000 1.8767 1.3135 1.43Γ— 70%
βœ… np.nanpercentile(a, 50) (float16) float16 10,000,000 122.7941 94.3214 1.30Γ— 77%
βœ… np.nanpercentile(a, 50) (float32) float32 1,000 0.0269 0.0023 11.51Γ— 9%
βœ… np.nanpercentile(a, 50) (float32) float32 100,000 0.7245 0.7038 1.03Γ— 97%
🟑 np.nanpercentile(a, 50) (float32) float32 10,000,000 51.3261 80.6873 0.64Γ— 157%
βœ… np.nanpercentile(a, 50) (float64) float64 1,000 0.0303 0.0027 11.42Γ— 9%
βœ… np.nanpercentile(a, 50) (float64) float64 100,000 0.7650 0.7593 1.01Γ— 99%
🟑 np.nanpercentile(a, 50) (float64) float64 10,000,000 63.5936 93.0204 0.68Γ— 146%
βœ… np.nanprod(a) (float16) float16 1,000 0.0057 0.0013 4.38Γ— 23%
βœ… np.nanprod(a) (float16) float16 100,000 0.1646 0.0888 1.85Γ— 54%
βœ… np.nanprod(a) (float16) float16 10,000,000 21.9118 9.1189 2.40Γ— 42%
β–« np.nanprod(a) (float32) float32 1,000 0.0050 0.0007 7.58Γ— 13%
βœ… np.nanprod(a) (float32) float32 100,000 0.0981 0.0120 8.18Γ— 12%
βœ… np.nanprod(a) (float32) float32 10,000,000 17.9167 1.8087 9.91Γ— 10%
β–« np.nanprod(a) (float64) float64 1,000 0.0050 0.0009 5.45Γ— 18%
βœ… np.nanprod(a) (float64) float64 100,000 0.1075 0.0235 4.57Γ— 22%
βœ… np.nanprod(a) (float64) float64 10,000,000 29.1353 4.0320 7.23Γ— 14%
βœ… np.nanquantile(a, 0.5) (float16) float16 1,000 0.0317 0.0044 7.18Γ— 14%
βœ… np.nanquantile(a, 0.5) (float16) float16 100,000 1.8705 1.3153 1.42Γ— 70%
βœ… np.nanquantile(a, 0.5) (float16) float16 10,000,000 123.5395 92.3417 1.34Γ— 75%
βœ… np.nanquantile(a, 0.5) (float32) float32 1,000 0.0277 0.0023 11.86Γ— 8%
βœ… np.nanquantile(a, 0.5) (float32) float32 100,000 0.7317 0.7122 1.03Γ— 97%
🟑 np.nanquantile(a, 0.5) (float32) float32 10,000,000 51.3567 80.5913 0.64Γ— 157%
βœ… np.nanquantile(a, 0.5) (float64) float64 1,000 0.0256 0.0027 9.59Γ— 10%
🟑 np.nanquantile(a, 0.5) (float64) float64 100,000 0.7457 0.7589 0.98Γ— 102%
🟑 np.nanquantile(a, 0.5) (float64) float64 10,000,000 64.0411 92.7650 0.69Γ— 145%
βœ… np.nanstd(a) (float16) float16 1,000 0.0342 0.0027 12.50Γ— 8%
βœ… np.nanstd(a) (float16) float16 100,000 1.1469 0.2160 5.31Γ— 19%
βœ… np.nanstd(a) (float16) float16 10,000,000 156.8616 21.7440 7.21Γ— 14%
βœ… np.nanstd(a) (float32) float32 1,000 0.0195 0.0017 11.39Γ— 9%
βœ… np.nanstd(a) (float32) float32 100,000 0.1736 0.0865 2.01Γ— 50%
βœ… np.nanstd(a) (float32) float32 10,000,000 32.1553 9.2600 3.47Γ— 29%
βœ… np.nanstd(a) (float64) float64 1,000 0.0202 0.0015 13.33Γ— 8%
βœ… np.nanstd(a) (float64) float64 100,000 0.4571 0.0760 6.01Γ— 17%
βœ… np.nanstd(a) (float64) float64 10,000,000 50.9740 11.3108 4.51Γ— 22%
βœ… np.nansum(a) (float16) float16 1,000 0.0063 0.0013 4.79Γ— 21%
βœ… np.nansum(a) (float16) float16 100,000 0.2764 0.0898 3.08Γ— 32%
βœ… np.nansum(a) (float16) float16 10,000,000 31.6873 8.9186 3.55Γ— 28%
β–« np.nansum(a) (float32) float32 1,000 0.0036 0.0007 5.42Γ— 18%
βœ… np.nansum(a) (float32) float32 100,000 0.0337 0.0049 6.81Γ— 15%
βœ… np.nansum(a) (float32) float32 10,000,000 13.4916 1.4504 9.30Γ— 11%
β–« np.nansum(a) (float64) float64 1,000 0.0036 0.0007 5.52Γ— 18%
βœ… np.nansum(a) (float64) float64 100,000 0.0425 0.0098 4.36Γ— 23%
βœ… np.nansum(a) (float64) float64 10,000,000 24.4520 3.4763 7.03Γ— 14%
βœ… np.nanvar(a) (float16) float16 1,000 0.0320 0.0027 11.67Γ— 9%
βœ… np.nanvar(a) (float16) float16 100,000 1.1778 0.2157 5.46Γ— 18%
βœ… np.nanvar(a) (float16) float16 10,000,000 121.9127 21.5319 5.66Γ— 18%
βœ… np.nanvar(a) (float32) float32 1,000 0.0189 0.0017 11.19Γ— 9%
βœ… np.nanvar(a) (float32) float32 100,000 0.1775 0.0878 2.02Γ— 50%
βœ… np.nanvar(a) (float32) float32 10,000,000 32.2343 9.2642 3.48Γ— 29%
βœ… np.nanvar(a) (float64) float64 1,000 0.0173 0.0015 11.42Γ— 9%
βœ… np.nanvar(a) (float64) float64 100,000 0.4650 0.0759 6.13Γ— 16%
βœ… np.nanvar(a) (float64) float64 10,000,000 51.7630 11.4041 4.54Γ— 22%
β–« np.prod (float64) float64 1,000 0.0022 0.0008 2.84Γ— 35%
βœ… np.prod (float64) float64 100,000 2.3362 0.1699 13.75Γ— 7%
βœ… np.prod (float64) float64 10,000,000 240.6877 60.9344 3.95Γ— 25%
β–« np.prod (int64) int64 1,000 0.0023 0.0008 3.04Γ— 33%
βœ… np.prod (int64) int64 100,000 0.0655 0.0144 4.54Γ— 22%
βœ… np.prod (int64) int64 10,000,000 6.4666 3.8559 1.68Γ— 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.0140 0.0099 1.41Γ— 71%
βœ… np.prod axis=0 (float64) float64 10,000,000 22.2109 19.6546 1.13Γ— 88%
β–« np.prod axis=0 (int64) int64 1,000 0.0019 0.0008 2.35Γ— 43%
βœ… np.prod axis=0 (int64) int64 100,000 0.0285 0.0149 1.91Γ— 52%
βœ… np.prod axis=0 (int64) int64 10,000,000 5.8931 4.2660 1.38Γ— 72%
β–« np.prod axis=1 (float64) float64 1,000 0.0019 0.0008 2.41Γ— 42%
βœ… np.prod axis=1 (float64) float64 100,000 0.0576 0.0071 8.14Γ— 12%
β–« np.prod axis=1 (float64) float64 10,000,000 70.8781 2.9565 23.97Γ— 4%
β–« np.prod axis=1 (int64) int64 1,000 0.0019 0.0010 1.98Γ— 50%
βœ… np.prod axis=1 (int64) int64 100,000 0.0457 0.0171 2.67Γ— 37%
βœ… np.prod axis=1 (int64) int64 10,000,000 6.2300 3.8578 1.61Γ— 62%
βœ… np.std (float16) float16 1,000 0.0198 0.0021 9.46Γ— 11%
βœ… np.std (float16) float16 100,000 0.9087 0.1873 4.85Γ— 21%
βœ… np.std (float16) float16 10,000,000 98.8955 18.9743 5.21Γ— 19%
β–« np.std (float32) float32 1,000 0.0107 0.0008 12.79Γ— 8%
βœ… np.std (float32) float32 100,000 0.0453 0.0100 4.54Γ— 22%
βœ… np.std (float32) float32 10,000,000 16.0146 3.3593 4.77Γ— 21%
β–« np.std (float64) float64 1,000 0.0066 0.0010 6.74Γ— 15%
βœ… np.std (float64) float64 100,000 0.0575 0.0202 2.84Γ— 35%
βœ… np.std (float64) float64 10,000,000 30.5191 7.2652 4.20Γ— 24%
βœ… np.std axis=0 (float16) float16 1,000 0.0196 0.0047 4.14Γ— 24%
βœ… np.std axis=0 (float16) float16 100,000 1.0975 0.3754 2.92Γ— 34%
βœ… np.std axis=0 (float16) float16 10,000,000 107.7057 88.6112 1.22Γ— 82%
βœ… np.std axis=0 (float32) float32 1,000 0.0085 0.0017 4.90Γ— 20%
βœ… np.std axis=0 (float32) float32 100,000 0.0373 0.0237 1.57Γ— 64%
βœ… np.std axis=0 (float32) float32 10,000,000 14.4059 5.5122 2.61Γ— 38%
β–« np.std axis=0 (float64) float64 1,000 0.0074 0.0010 7.55Γ— 13%
βœ… np.std axis=0 (float64) float64 100,000 0.0685 0.0221 3.10Γ— 32%
βœ… np.std axis=0 (float64) float64 10,000,000 39.8234 8.1253 4.90Γ— 20%
β–« np.sum (complex128) complex128 1,000 0.0018 0.0010 1.84Γ— 54%
βœ… np.sum (complex128) complex128 100,000 0.0306 0.0104 2.93Γ— 34%
βœ… np.sum (complex128) complex128 10,000,000 8.5843 7.2562 1.18Γ— 84%
βœ… np.sum (float16) float16 1,000 0.0036 0.0012 3.02Γ— 33%
βœ… np.sum (float16) float16 100,000 0.2020 0.0835 2.42Γ— 41%
βœ… np.sum (float16) float16 10,000,000 19.9349 8.2364 2.42Γ— 41%
β–« np.sum (float32) float32 1,000 0.0016 0.0008 2.04Γ— 49%
βœ… np.sum (float32) float32 100,000 0.0152 0.0032 4.72Γ— 21%
βœ… np.sum (float32) float32 10,000,000 2.8487 1.3964 2.04Γ— 49%
β–« np.sum (float64) float64 1,000 0.0017 0.0008 2.12Γ— 47%
πŸ”΄ np.sum (float64) float64 100,000 0.0159 0.2139 0.074Γ— 1345%
βœ… np.sum (float64) float64 10,000,000 4.8472 3.6648 1.32Γ— 76%
β–« np.sum (int16) int16 1,000 0.0020 0.0009 2.21Γ— 45%
βœ… np.sum (int16) int16 100,000 0.0328 0.0193 1.70Γ— 59%
βœ… np.sum (int16) int16 10,000,000 3.2851 2.1615 1.52Γ— 66%
β–« np.sum (int32) int32 1,000 0.0022 0.0009 2.61Γ— 38%
βœ… np.sum (int32) int32 100,000 0.0377 0.0193 1.96Γ— 51%
βœ… np.sum (int32) int32 10,000,000 3.9883 2.8904 1.38Γ— 72%
β–« np.sum (int64) int64 1,000 0.0017 0.0007 2.48Γ— 40%
βœ… np.sum (int64) int64 100,000 0.0181 0.0065 2.79Γ— 36%
βœ… np.sum (int64) int64 10,000,000 4.3268 3.2874 1.32Γ— 76%
β–« np.sum (int8) int8 1,000 0.0021 0.0008 2.51Γ— 40%
βœ… np.sum (int8) int8 100,000 0.0333 0.0188 1.77Γ— 56%
βœ… np.sum (int8) int8 10,000,000 3.1769 1.8950 1.68Γ— 60%
β–« np.sum (uint16) uint16 1,000 0.0020 0.0010 2.09Γ— 48%
βœ… np.sum (uint16) uint16 100,000 0.0334 0.0193 1.73Γ— 58%
βœ… np.sum (uint16) uint16 10,000,000 3.3411 2.0295 1.65Γ— 61%
β–« np.sum (uint32) uint32 1,000 0.0021 0.0008 2.47Γ— 40%
βœ… np.sum (uint32) uint32 100,000 0.0328 0.0194 1.69Γ— 59%
βœ… np.sum (uint32) uint32 10,000,000 4.0355 2.9673 1.36Γ— 74%
β–« np.sum (uint64) uint64 1,000 0.0017 0.0008 2.29Γ— 44%
βœ… np.sum (uint64) uint64 100,000 0.0200 0.0064 3.12Γ— 32%
βœ… np.sum (uint64) uint64 10,000,000 4.8125 3.4080 1.41Γ— 71%
β–« np.sum (uint8) uint8 1,000 0.0023 0.0009 2.56Γ— 39%
βœ… np.sum (uint8) uint8 100,000 0.0349 0.0189 1.85Γ— 54%
βœ… np.sum (uint8) uint8 10,000,000 3.1844 1.9225 1.66Γ— 60%
βœ… np.sum axis=0 (complex128) complex128 1,000 0.0020 0.0017 1.19Γ— 84%
🟑 np.sum axis=0 (complex128) complex128 100,000 0.0174 0.0207 0.84Γ— 119%
🟑 np.sum axis=0 (complex128) complex128 10,000,000 7.4801 7.6616 0.98Γ— 102%
βœ… np.sum axis=0 (float16) float16 1,000 0.0049 0.0040 1.22Γ— 82%
βœ… np.sum axis=0 (float16) float16 100,000 0.2901 0.1489 1.95Γ— 51%
βœ… np.sum axis=0 (float16) float16 10,000,000 29.7526 14.4612 2.06Γ— 49%
🟑 np.sum axis=0 (float32) float32 1,000 0.0019 0.0019 0.98Γ— 102%
βœ… np.sum axis=0 (float32) float32 100,000 0.0081 0.0079 1.02Γ— 98%
🟑 np.sum axis=0 (float32) float32 10,000,000 1.3909 1.4413 0.96Γ— 104%
🟑 np.sum axis=0 (float64) float64 1,000 0.0019 0.0020 0.97Γ— 103%
🟑 np.sum axis=0 (float64) float64 100,000 0.0122 0.0129 0.95Γ— 106%
βœ… np.sum axis=0 (float64) float64 10,000,000 3.6033 3.5571 1.01Γ— 99%
βœ… np.sum axis=0 (int16) int16 1,000 0.0024 0.0010 2.33Γ— 43%
βœ… np.sum axis=0 (int16) int16 100,000 0.0484 0.0047 10.34Γ— 10%
βœ… np.sum axis=0 (int16) int16 10,000,000 4.6103 0.7373 6.25Γ— 16%
β–« np.sum axis=0 (int32) int32 1,000 0.0025 0.0007 3.51Γ— 28%
βœ… np.sum axis=0 (int32) int32 100,000 0.0479 0.0086 5.59Γ— 18%
βœ… np.sum axis=0 (int32) int32 10,000,000 5.3488 1.9895 2.69Γ— 37%
β–« np.sum axis=0 (int64) int64 1,000 0.0020 0.0007 2.72Γ— 37%
βœ… np.sum axis=0 (int64) int64 100,000 0.0294 0.0104 2.84Γ— 35%
βœ… np.sum axis=0 (int64) int64 10,000,000 5.9812 3.4043 1.76Γ— 57%
β–« np.sum axis=0 (int8) int8 1,000 0.0024 0.0009 2.72Γ— 37%
βœ… np.sum axis=0 (int8) int8 100,000 0.0467 0.0043 10.78Γ— 9%
βœ… np.sum axis=0 (int8) int8 10,000,000 4.4559 0.3992 11.16Γ— 9%
β–« np.sum axis=0 (uint16) uint16 1,000 0.0024 0.0010 2.48Γ— 40%
βœ… np.sum axis=0 (uint16) uint16 100,000 0.0471 0.0047 10.03Γ— 10%
βœ… np.sum axis=0 (uint16) uint16 10,000,000 4.6567 0.7216 6.45Γ— 16%
β–« np.sum axis=0 (uint32) uint32 1,000 0.0024 0.0007 3.63Γ— 28%
βœ… np.sum axis=0 (uint32) uint32 100,000 0.0475 0.0086 5.52Γ— 18%
βœ… np.sum axis=0 (uint32) uint32 10,000,000 5.3266 1.9748 2.70Γ— 37%
β–« np.sum axis=0 (uint64) uint64 1,000 0.0020 0.0007 2.88Γ— 35%
βœ… np.sum axis=0 (uint64) uint64 100,000 0.0277 0.0104 2.67Γ— 37%
βœ… np.sum axis=0 (uint64) uint64 10,000,000 5.3910 3.4393 1.57Γ— 64%
β–« np.sum axis=0 (uint8) uint8 1,000 0.0026 0.0010 2.63Γ— 38%
βœ… np.sum axis=0 (uint8) uint8 100,000 0.0474 0.0050 9.40Γ— 11%
βœ… np.sum axis=0 (uint8) uint8 10,000,000 4.4480 0.5649 7.87Γ— 13%
βœ… np.sum axis=1 (complex128) complex128 1,000 0.0021 0.0018 1.11Γ— 90%
βœ… np.sum axis=1 (complex128) complex128 100,000 0.0324 0.0313 1.03Γ— 97%
🟑 np.sum axis=1 (complex128) complex128 10,000,000 8.5166 8.9144 0.95Γ— 105%
βœ… np.sum axis=1 (float16) float16 1,000 0.0038 0.0038 1.02Γ— 98%
βœ… np.sum axis=1 (float16) float16 100,000 0.2099 0.1355 1.55Γ— 64%
βœ… np.sum axis=1 (float16) float16 10,000,000 19.3738 13.2482 1.46Γ— 68%
🟑 np.sum axis=1 (float32) float32 1,000 0.0018 0.0020 0.94Γ— 106%
βœ… np.sum axis=1 (float32) float32 100,000 0.0168 0.0128 1.32Γ— 76%
βœ… np.sum axis=1 (float32) float32 10,000,000 3.1793 2.0144 1.58Γ— 63%
🟑 np.sum axis=1 (float64) float64 1,000 0.0019 0.0019 0.96Γ— 104%
βœ… np.sum axis=1 (float64) float64 100,000 0.0175 0.0132 1.33Γ— 75%
βœ… np.sum axis=1 (float64) float64 10,000,000 5.1383 3.9398 1.30Γ— 77%
β–« np.sum axis=1 (int16) int16 1,000 0.0023 0.0007 3.34Γ— 30%
βœ… np.sum axis=1 (int16) int16 100,000 0.0372 0.0038 9.75Γ— 10%
βœ… np.sum axis=1 (int16) int16 10,000,000 3.3329 0.6803 4.90Γ— 20%
β–« np.sum axis=1 (int32) int32 1,000 0.0025 0.0007 3.60Γ— 28%
βœ… np.sum axis=1 (int32) int32 100,000 0.0364 0.0053 6.86Γ— 15%
βœ… np.sum axis=1 (int32) int32 10,000,000 4.0800 1.7611 2.32Γ— 43%
β–« np.sum axis=1 (int64) int64 1,000 0.0019 0.0007 2.60Γ— 38%
βœ… np.sum axis=1 (int64) int64 100,000 0.0182 0.0075 2.41Γ— 42%
βœ… np.sum axis=1 (int64) int64 10,000,000 4.5921 3.0301 1.52Γ— 66%
β–« np.sum axis=1 (int8) int8 1,000 0.0028 0.0008 3.60Γ— 28%
βœ… np.sum axis=1 (int8) int8 100,000 0.0367 0.0038 9.66Γ— 10%
βœ… np.sum axis=1 (int8) int8 10,000,000 3.1418 0.3053 10.29Γ— 10%
β–« np.sum axis=1 (uint16) uint16 1,000 0.0023 0.0007 3.49Γ— 29%
βœ… np.sum axis=1 (uint16) uint16 100,000 0.0378 0.0037 10.17Γ— 10%
βœ… np.sum axis=1 (uint16) uint16 10,000,000 3.3093 0.4828 6.85Γ— 15%
β–« np.sum axis=1 (uint32) uint32 1,000 0.0023 0.0007 3.52Γ— 28%
βœ… np.sum axis=1 (uint32) uint32 100,000 0.0363 0.0053 6.84Γ— 15%
βœ… np.sum axis=1 (uint32) uint32 10,000,000 4.0964 1.7182 2.38Γ— 42%
β–« np.sum axis=1 (uint64) uint64 1,000 0.0019 0.0008 2.51Γ— 40%
βœ… np.sum axis=1 (uint64) uint64 100,000 0.0182 0.0076 2.40Γ— 42%
βœ… np.sum axis=1 (uint64) uint64 10,000,000 5.0124 2.9323 1.71Γ— 58%
β–« np.sum axis=1 (uint8) uint8 1,000 0.0026 0.0007 3.91Γ— 26%
βœ… np.sum axis=1 (uint8) uint8 100,000 0.0377 0.0037 10.22Γ— 10%
βœ… np.sum axis=1 (uint8) uint8 10,000,000 3.1519 0.3047 10.34Γ— 10%
βœ… np.var (float16) float16 1,000 0.0196 0.0022 9.03Γ— 11%
βœ… np.var (float16) float16 100,000 0.8945 0.1898 4.71Γ— 21%
βœ… np.var (float16) float16 10,000,000 90.2053 18.7450 4.81Γ— 21%
β–« np.var (float32) float32 1,000 0.0077 0.0010 7.83Γ— 13%
βœ… np.var (float32) float32 100,000 0.0460 0.0122 3.77Γ— 26%
βœ… np.var (float32) float32 10,000,000 16.3933 3.3367 4.91Γ— 20%
β–« np.var (float64) float64 1,000 0.0085 0.0010 8.62Γ— 12%
βœ… np.var (float64) float64 100,000 0.0651 0.0197 3.30Γ— 30%
βœ… np.var (float64) float64 10,000,000 30.9039 10.2952 3.00Γ— 33%
βœ… np.var axis=0 (float16) float16 1,000 0.0191 0.0047 4.09Γ— 24%
βœ… np.var axis=0 (float16) float16 100,000 1.0938 0.3838 2.85Γ— 35%
βœ… np.var axis=0 (float16) float16 10,000,000 107.4462 86.2534 1.25Γ— 80%
βœ… np.var axis=0 (float32) float32 1,000 0.0082 0.0019 4.18Γ— 24%
βœ… np.var axis=0 (float32) float32 100,000 0.0367 0.0235 1.56Γ— 64%
βœ… np.var axis=0 (float32) float32 10,000,000 13.9379 5.6308 2.48Γ— 40%
β–« np.var axis=0 (float64) float64 1,000 0.0071 0.0010 7.21Γ— 14%
βœ… np.var axis=0 (float64) float64 100,000 0.0665 0.0227 2.93Γ— 34%
βœ… np.var axis=0 (float64) float64 10,000,000 44.1983 8.6817 5.09Γ— 20%

Broadcasting

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
βšͺ matrix + col_vector (N,M)+(N,1) float64 1,000 0.0012 - - -
βšͺ matrix + col_vector (N,M)+(N,1) float64 100,000 0.0282 - - -
βœ… matrix + col_vector (N,M)+(N,1) float64 10,000,000 16.1367 14.9780 1.08Γ— 93%
βšͺ matrix + row_vector (N,M)+(M,) float64 1,000 0.0012 - - -
βšͺ matrix + row_vector (N,M)+(M,) float64 100,000 0.0268 - - -
βœ… matrix + row_vector (N,M)+(M,) float64 10,000,000 16.5907 14.7614 1.12Γ— 89%
βšͺ matrix + scalar float64 1,000 0.0007 - - -
βšͺ matrix + scalar float64 100,000 0.0127 - - -
βœ… matrix + scalar float64 10,000,000 16.0746 14.6726 1.10Γ— 91%
βšͺ np.broadcast_to(row, (N,M)) float64 1,000 0.0019 - - -
βšͺ np.broadcast_to(row, (N,M)) float64 100,000 0.0018 - - -
β–« np.broadcast_to(row, (N,M)) float64 10,000,000 0.0018 0.0007 2.68Γ— 37%

Creation

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
β–« np.copy (float32) float32 1,000 0.0006 0.0107 0.056Γ— 1785%
🟑 np.copy (float32) float32 100,000 0.0060 0.0072 0.84Γ— 119%
βœ… np.copy (float32) float32 10,000,000 6.3236 2.8506 2.22Γ— 45%
β–« np.copy (float64) float64 1,000 0.0006 0.0146 0.041Γ— 2444%
🟑 np.copy (float64) float64 100,000 0.0115 0.0133 0.86Γ— 116%
🟑 np.copy (float64) float64 10,000,000 13.1481 14.2102 0.93Γ— 108%
β–« np.copy (int32) int32 1,000 0.0006 0.0101 0.057Γ— 1765%
🟑 np.copy (int32) int32 100,000 0.0068 0.0070 0.97Γ— 103%
βœ… np.copy (int32) int32 10,000,000 6.4479 2.3947 2.69Γ— 37%
β–« np.copy (int64) int64 1,000 0.0006 0.0155 0.040Γ— 2479%
🟑 np.copy (int64) int64 100,000 0.0116 0.0133 0.87Γ— 114%
🟑 np.copy (int64) int64 10,000,000 13.0440 13.5955 0.96Γ— 104%
β–« np.empty (float32) float32 1,000 0.0003 0.0079 0.041Γ— 2410%
β–« np.empty (float32) float32 100,000 0.0003 0.0123 0.026Γ— 3788%
🟑 np.empty (float32) float32 10,000,000 0.0136 0.0154 0.89Γ— 113%
β–« np.empty (float64) float64 1,000 0.0003 0.0141 0.021Γ— 4785%
β–« np.empty (float64) float64 100,000 0.0003 0.0118 0.024Γ— 4137%
🟑 np.empty (float64) float64 10,000,000 0.0102 0.0143 0.72Γ— 139%
β–« np.empty (int32) int32 1,000 0.0003 0.0104 0.031Γ— 3239%
β–« np.empty (int32) int32 100,000 0.0003 0.0141 0.021Γ— 4659%
βœ… np.empty (int32) int32 10,000,000 0.0167 0.0132 1.26Γ— 79%
β–« np.empty (int64) int64 1,000 0.0003 0.0121 0.026Γ— 3888%
β–« np.empty (int64) int64 100,000 0.0003 0.0139 0.023Γ— 4389%
🟑 np.empty (int64) int64 10,000,000 0.0108 0.0174 0.62Γ— 162%
β–« np.full (float32) float32 1,000 0.0009 0.0106 0.083Γ— 1199%
🟠 np.full (float32) float32 100,000 0.0057 0.0129 0.44Γ— 228%
βœ… np.full (float32) float32 10,000,000 7.2846 2.6587 2.74Γ— 36%
β–« np.full (float64) float64 1,000 0.0009 0.0106 0.082Γ— 1218%
🟑 np.full (float64) float64 100,000 0.0100 0.0144 0.69Γ— 145%
βœ… np.full (float64) float64 10,000,000 14.8069 13.2111 1.12Γ— 89%
β–« np.full (int32) int32 1,000 0.0009 0.0088 0.11Γ— 925%
🟠 np.full (int32) int32 100,000 0.0054 0.0127 0.43Γ— 235%
βœ… np.full (int32) int32 10,000,000 7.2671 2.6612 2.73Γ— 37%
β–« np.full (int64) int64 1,000 0.0009 0.0124 0.069Γ— 1448%
🟑 np.full (int64) int64 100,000 0.0099 0.0152 0.65Γ— 154%
βœ… np.full (int64) int64 10,000,000 14.7618 13.5495 1.09Γ— 92%
β–« np.ones (float32) float32 1,000 0.0009 0.0097 0.093Γ— 1080%
🟠 np.ones (float32) float32 100,000 0.0053 0.0125 0.42Γ— 236%
βœ… np.ones (float32) float32 10,000,000 7.4168 2.5871 2.87Γ— 35%
β–« np.ones (float64) float64 1,000 0.0009 0.0140 0.062Γ— 1605%
🟑 np.ones (float64) float64 100,000 0.0098 0.0153 0.64Γ— 156%
βœ… np.ones (float64) float64 10,000,000 14.7708 13.0423 1.13Γ— 88%
β–« np.ones (int32) int32 1,000 0.0009 0.0088 0.10Γ— 1004%
🟑 np.ones (int32) int32 100,000 0.0076 0.0124 0.61Γ— 164%
βœ… np.ones (int32) int32 10,000,000 7.3873 2.6333 2.81Γ— 36%
β–« np.ones (int64) int64 1,000 0.0008 0.0139 0.061Γ— 1638%
🟑 np.ones (int64) int64 100,000 0.0098 0.0149 0.66Γ— 152%
βœ… np.ones (int64) int64 10,000,000 14.7014 13.3927 1.10Γ— 91%
β–« np.zeros (float32) float32 1,000 0.0005 0.0105 0.051Γ— 1958%
βœ… np.zeros (float32) float32 100,000 0.0048 0.0021 2.31Γ— 43%
βœ… np.zeros (float32) float32 10,000,000 0.0110 0.0068 1.62Γ— 62%
β–« np.zeros (float64) float64 1,000 0.0004 0.0130 0.028Γ— 3535%
βœ… np.zeros (float64) float64 100,000 0.0093 0.0026 3.57Γ— 28%
βœ… np.zeros (float64) float64 10,000,000 0.0120 0.0068 1.76Γ— 57%
β–« np.zeros (int32) int32 1,000 0.0004 0.0114 0.035Γ— 2881%
βœ… np.zeros (int32) int32 100,000 0.0048 0.0020 2.44Γ— 41%
βœ… np.zeros (int32) int32 10,000,000 0.0139 0.0058 2.39Γ— 42%
β–« np.zeros (int64) int64 1,000 0.0004 0.0084 0.046Γ— 2187%
βœ… np.zeros (int64) int64 100,000 0.0096 0.0026 3.63Γ— 28%
βœ… np.zeros (int64) int64 10,000,000 0.0112 0.0091 1.23Γ— 81%
πŸ”΄ np.zeros_like (float32) float32 1,000 0.0011 0.0088 0.12Γ— 826%
βœ… np.zeros_like (float32) float32 100,000 0.0056 0.0022 2.59Γ— 39%
β–« np.zeros_like (float32) float32 10,000,000 7.3581 0.0069 1061.51Γ— 0%
πŸ”΄ np.zeros_like (float64) float64 1,000 0.0010 0.0148 0.068Γ— 1471%
βœ… np.zeros_like (float64) float64 100,000 0.0101 0.0027 3.69Γ— 27%
β–« np.zeros_like (float64) float64 10,000,000 14.7410 0.0069 2150.69Γ— 0%
πŸ”΄ np.zeros_like (int32) int32 1,000 0.0011 0.0111 0.095Γ— 1052%
βœ… np.zeros_like (int32) int32 100,000 0.0054 0.0021 2.58Γ— 39%
β–« np.zeros_like (int32) int32 10,000,000 7.4489 0.0061 1230.61Γ— 0%
πŸ”΄ np.zeros_like (int64) int64 1,000 0.0011 0.0118 0.095Γ— 1056%
βœ… np.zeros_like (int64) int64 100,000 0.0100 0.0028 3.55Γ— 28%
β–« np.zeros_like (int64) int64 10,000,000 14.7656 0.0093 1585.88Γ— 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.0152 0.0997 0.15Γ— 657%
βœ… a.flatten float64 10,000,000 13.1072 12.5501 1.04Γ— 96%
βšͺ np.concatenate float64 1,000 0.0010 - - -
βšͺ np.concatenate float64 100,000 0.3267 - - -
βšͺ np.concatenate float64 10,000,000 34.0246 - - -
βšͺ np.ravel float64 1,000 0.0003 - - -
β–« np.ravel float64 100,000 0.0003 0.0006 0.55Γ— 181%
β–« np.ravel float64 10,000,000 0.0004 0.0006 0.59Γ— 168%
βšͺ np.stack float64 1,000 0.0021 - - -
βšͺ np.stack float64 100,000 0.3333 - - -
βšͺ np.stack float64 10,000,000 33.5715 - - -
βšͺ 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.0006 0.29Γ— 349%
β–« reshape 2D->1D float64 10,000,000 0.0002 0.0007 0.25Γ— 405%

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.0002 - - -
βšͺ a[100:1000] (contiguous) float64 10,000,000 0.0002 - - -
βšͺ a[::-1] (reversed) float64 1,000 0.0001 - - -
β–« a[::-1] (reversed) float64 100,000 0.0002 0.0015 0.11Γ— 937%
β–« a[::-1] (reversed) float64 10,000,000 0.0001 0.0013 0.092Γ— 1091%
βšͺ a[::2] (strided) float64 1,000 0.0001 - - -
βšͺ a[::2] (strided) float64 100,000 0.0001 - - -
βšͺ a[::2] (strided) float64 10,000,000 0.0002 - - -
βšͺ np.sum(contiguous_slice) float64 900 0.0016 - - -
βšͺ np.sum(contiguous_slice) float64 900 0.0016 - - -
βšͺ np.sum(contiguous_slice) float64 900 0.0017 - - -
βšͺ np.sum(strided_slice) float64 500 0.0016 - - -
βšͺ np.sum(strided_slice) float64 50,000 0.0097 - - -
βšͺ np.sum(strided_slice) float64 5,000,000 4.3559 - - -

Comparison

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
β–« a != b (float32) float32 1,000 0.0005 0.0008 0.66Γ— 151%
🟠 a != b (float32) float32 100,000 0.0055 0.0210 0.26Γ— 385%
βœ… a != b (float32) float32 10,000,000 4.0035 3.8343 1.04Γ— 96%
β–« a != b (float64) float64 1,000 0.0004 0.0008 0.53Γ— 188%
🟠 a != b (float64) float64 100,000 0.0099 0.0261 0.38Γ— 264%
🟑 a != b (float64) float64 10,000,000 6.8612 6.8679 1.00Γ— 100%
β–« a != b (int32) int32 1,000 0.0004 0.0008 0.54Γ— 184%
🟠 a != b (int32) int32 100,000 0.0070 0.0195 0.36Γ— 280%
βœ… a != b (int32) int32 10,000,000 4.4415 3.8892 1.14Γ— 88%
β–« a != b (int64) int64 1,000 0.0005 0.0009 0.56Γ— 177%
🟠 a != b (int64) int64 100,000 0.0126 0.0280 0.45Γ— 222%
βœ… a != b (int64) int64 10,000,000 7.4973 6.9054 1.09Γ— 92%
β–« a < b (float32) float32 1,000 0.0005 0.0008 0.62Γ— 160%
🟠 a < b (float32) float32 100,000 0.0054 0.0215 0.25Γ— 396%
🟑 a < b (float32) float32 10,000,000 3.9556 3.9752 0.99Γ— 100%
β–« a < b (float64) float64 1,000 0.0004 0.0008 0.55Γ— 183%
🟠 a < b (float64) float64 100,000 0.0102 0.0287 0.36Γ— 280%
🟑 a < b (float64) float64 10,000,000 6.7457 6.7981 0.99Γ— 101%
β–« a < b (int32) int32 1,000 0.0004 0.0008 0.52Γ— 191%
🟠 a < b (int32) int32 100,000 0.0070 0.0175 0.40Γ— 249%
βœ… a < b (int32) int32 10,000,000 4.2024 3.8654 1.09Γ— 92%
β–« a < b (int64) int64 1,000 0.0005 0.0010 0.55Γ— 182%
🟑 a < b (int64) int64 100,000 0.0178 0.0271 0.66Γ— 152%
βœ… a < b (int64) int64 10,000,000 7.2004 6.6980 1.07Γ— 93%
β–« a <= b (float32) float32 1,000 0.0004 0.0009 0.43Γ— 231%
🟠 a <= b (float32) float32 100,000 0.0058 0.0206 0.28Γ— 355%
βœ… a <= b (float32) float32 10,000,000 4.0141 3.9178 1.02Γ— 98%
β–« a <= b (float64) float64 1,000 0.0005 0.0008 0.56Γ— 180%
🟠 a <= b (float64) float64 100,000 0.0102 0.0279 0.37Γ— 274%
🟑 a <= b (float64) float64 10,000,000 6.9314 7.5527 0.92Γ— 109%
β–« a <= b (int32) int32 1,000 0.0004 0.0008 0.53Γ— 190%
🟠 a <= b (int32) int32 100,000 0.0070 0.0183 0.39Γ— 260%
βœ… a <= b (int32) int32 10,000,000 4.3206 3.9855 1.08Γ— 92%
β–« a <= b (int64) int64 1,000 0.0033 0.0008 4.37Γ— 23%
🟑 a <= b (int64) int64 100,000 0.0179 0.0277 0.65Γ— 155%
βœ… a <= b (int64) int64 10,000,000 7.3167 6.8152 1.07Γ— 93%
β–« a == b (float32) float32 1,000 0.0005 0.0008 0.60Γ— 167%
🟠 a == b (float32) float32 100,000 0.0057 0.0222 0.26Γ— 391%
βœ… a == b (float32) float32 10,000,000 4.2784 3.8917 1.10Γ— 91%
β–« a == b (float64) float64 1,000 0.0004 0.0008 0.53Γ— 190%
🟠 a == b (float64) float64 100,000 0.0102 0.0256 0.40Γ— 250%
βœ… a == b (float64) float64 10,000,000 6.7360 6.6513 1.01Γ— 99%
β–« a == b (int32) int32 1,000 0.0005 0.0008 0.65Γ— 153%
🟠 a == b (int32) int32 100,000 0.0070 0.0179 0.39Γ— 257%
βœ… a == b (int32) int32 10,000,000 4.3115 3.8389 1.12Γ— 89%
β–« a == b (int64) int64 1,000 0.0004 0.0008 0.53Γ— 189%
🟠 a == b (int64) int64 100,000 0.0124 0.0277 0.45Γ— 223%
βœ… a == b (int64) int64 10,000,000 7.1056 6.8700 1.03Γ— 97%
β–« a > b (float32) float32 1,000 0.0004 0.0008 0.54Γ— 184%
🟠 a > b (float32) float32 100,000 0.0057 0.0211 0.27Γ— 369%
βœ… a > b (float32) float32 10,000,000 4.0557 4.0290 1.01Γ— 99%
β–« a > b (float64) float64 1,000 0.0004 0.0008 0.53Γ— 189%
🟠 a > b (float64) float64 100,000 0.0100 0.0257 0.39Γ— 256%
🟑 a > b (float64) float64 10,000,000 6.7723 6.8430 0.99Γ— 101%
β–« a > b (int32) int32 1,000 0.0004 0.0008 0.52Γ— 192%
🟠 a > b (int32) int32 100,000 0.0070 0.0199 0.35Γ— 284%
βœ… a > b (int32) int32 10,000,000 4.3282 3.9012 1.11Γ— 90%
β–« a > b (int64) int64 1,000 0.0005 0.0008 0.66Γ— 151%
🟑 a > b (int64) int64 100,000 0.0189 0.0269 0.70Γ— 142%
βœ… a > b (int64) int64 10,000,000 7.3191 6.5042 1.12Γ— 89%
β–« a >= b (float32) float32 1,000 0.0004 0.0008 0.50Γ— 200%
🟠 a >= b (float32) float32 100,000 0.0059 0.0205 0.29Γ— 349%
🟑 a >= b (float32) float32 10,000,000 3.9175 3.9675 0.99Γ— 101%
β–« a >= b (float64) float64 1,000 0.0004 0.0008 0.53Γ— 190%
🟠 a >= b (float64) float64 100,000 0.0103 0.0262 0.39Γ— 256%
🟑 a >= b (float64) float64 10,000,000 6.7369 7.2300 0.93Γ— 107%
β–« a >= b (int32) int32 1,000 0.0005 0.0008 0.56Γ— 179%
🟠 a >= b (int32) int32 100,000 0.0069 0.0191 0.36Γ— 275%
βœ… a >= b (int32) int32 10,000,000 4.4423 3.9289 1.13Γ— 88%
β–« a >= b (int64) int64 1,000 0.0005 0.0008 0.68Γ— 148%
🟑 a >= b (int64) int64 100,000 0.0178 0.0284 0.63Γ— 160%
βœ… a >= b (int64) int64 10,000,000 7.5761 6.8095 1.11Γ— 90%

Bitwise

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
β–« a & b (bool) bool 1,000 0.0004 0.0016 0.24Γ— 418%
πŸ”΄ a & b (bool) bool 100,000 0.0029 0.0240 0.12Γ— 815%
🟑 a & b (bool) bool 10,000,000 1.9362 2.3708 0.82Γ— 122%
β–« a & b (int16) int16 1,000 0.0008 0.0021 0.36Γ— 275%
βœ… a & b (int16) int16 100,000 0.0369 0.0131 2.81Γ— 36%
βœ… a & b (int16) int16 10,000,000 5.1340 3.0763 1.67Γ— 60%
β–« a & b (int32) int32 1,000 0.0008 0.0069 0.11Γ— 876%
🟑 a & b (int32) int32 100,000 0.0291 0.0311 0.94Γ— 107%
βœ… a & b (int32) int32 10,000,000 9.2134 6.2718 1.47Γ— 68%
β–« a & b (int64) int64 1,000 0.0008 0.0120 0.065Γ— 1544%
🟑 a & b (int64) int64 100,000 0.0328 0.0569 0.57Γ— 174%
🟑 a & b (int64) int64 10,000,000 18.5987 19.4528 0.96Γ— 105%
β–« a & b (int8) int8 1,000 0.0007 0.0013 0.58Γ— 172%
βœ… a & b (int8) int8 100,000 0.0288 0.0085 3.39Γ— 30%
βœ… a & b (int8) int8 10,000,000 3.8601 1.5868 2.43Γ— 41%
β–« a & b (uint16) uint16 1,000 0.0008 0.0022 0.35Γ— 283%
βœ… a & b (uint16) uint16 100,000 0.0291 0.0138 2.11Γ— 48%
βœ… a & b (uint16) uint16 10,000,000 7.4077 2.9658 2.50Γ— 40%
β–« a & b (uint32) uint32 1,000 0.0008 0.0023 0.37Γ— 270%
βœ… a & b (uint32) uint32 100,000 0.0337 0.0278 1.21Γ— 82%
βœ… a & b (uint32) uint32 10,000,000 9.0297 5.8148 1.55Γ— 64%
β–« a & b (uint64) uint64 1,000 0.0008 0.0066 0.12Γ— 856%
🟑 a & b (uint64) uint64 100,000 0.0353 0.0608 0.58Γ— 172%
🟑 a & b (uint64) uint64 10,000,000 17.0949 18.1468 0.94Γ— 106%
β–« a & b (uint8) uint8 1,000 0.0006 0.0013 0.50Γ— 201%
βœ… a & b (uint8) uint8 100,000 0.0285 0.0080 3.58Γ— 28%
βœ… a & b (uint8) uint8 10,000,000 3.8145 1.5470 2.47Γ— 41%
β–« a ^ b (bool) bool 1,000 0.0004 0.0015 0.25Γ— 401%
πŸ”΄ a ^ b (bool) bool 100,000 0.0030 0.0228 0.13Γ— 752%
🟑 a ^ b (bool) bool 10,000,000 1.9149 2.4520 0.78Γ— 128%
β–« a ^ b (int16) int16 1,000 0.0008 0.0022 0.35Γ— 281%
βœ… a ^ b (int16) int16 100,000 0.0285 0.0144 1.98Γ— 50%
βœ… a ^ b (int16) int16 10,000,000 5.2473 2.9006 1.81Γ— 55%
🟠 a ^ b (int32) int32 1,000 0.0019 0.0073 0.26Γ— 381%
🟑 a ^ b (int32) int32 100,000 0.0289 0.0304 0.95Γ— 105%
βœ… a ^ b (int32) int32 10,000,000 8.9648 6.1135 1.47Γ— 68%
β–« a ^ b (int64) int64 1,000 0.0008 0.0123 0.064Γ— 1554%
🟑 a ^ b (int64) int64 100,000 0.0311 0.0617 0.50Γ— 198%
βœ… a ^ b (int64) int64 10,000,000 20.4191 19.7104 1.04Γ— 96%
β–« a ^ b (int8) int8 1,000 0.0006 0.0014 0.47Γ— 215%
βœ… a ^ b (int8) int8 100,000 0.0285 0.0083 3.43Γ— 29%
βœ… a ^ b (int8) int8 10,000,000 3.8174 1.6025 2.38Γ— 42%
β–« a ^ b (uint16) uint16 1,000 0.0008 0.0023 0.33Γ— 302%
βœ… a ^ b (uint16) uint16 100,000 0.0287 0.0146 1.97Γ— 51%
βœ… a ^ b (uint16) uint16 10,000,000 5.8436 2.9363 1.99Γ— 50%
β–« a ^ b (uint32) uint32 1,000 0.0008 0.0035 0.22Γ— 446%
βœ… a ^ b (uint32) uint32 100,000 0.0286 0.0274 1.04Γ— 96%
βœ… a ^ b (uint32) uint32 10,000,000 8.8120 5.8908 1.50Γ— 67%
β–« a ^ b (uint64) uint64 1,000 0.0009 0.0128 0.069Γ— 1457%
🟑 a ^ b (uint64) uint64 100,000 0.0300 0.0587 0.51Γ— 196%
🟑 a ^ b (uint64) uint64 10,000,000 17.2203 17.4055 0.99Γ— 101%
β–« a ^ b (uint8) uint8 1,000 0.0007 0.0013 0.50Γ— 200%
βœ… a ^ b (uint8) uint8 100,000 0.0286 0.0097 2.94Γ— 34%
βœ… a ^ b (uint8) uint8 10,000,000 4.0447 1.4824 2.73Γ— 37%
β–« a b (bool) bool 1,000 0.0004 0.0014 0.27Γ— 377%
πŸ”΄ a b (bool) bool 100,000 0.0029 0.0244 0.12Γ— 852%
🟑 a b (bool) bool 10,000,000 2.0040 2.5681 0.78Γ— 128%
β–« a b (int16) int16 1,000 0.0009 0.0022 0.40Γ— 251%
βœ… a b (int16) int16 100,000 0.0286 0.0138 2.08Γ— 48%
βœ… a b (int16) int16 10,000,000 5.2591 2.9088 1.81Γ— 55%
β–« a b (int32) int32 1,000 0.0008 0.0052 0.15Γ— 654%
🟑 a b (int32) int32 100,000 0.0287 0.0301 0.95Γ— 105%
βœ… a b (int32) int32 10,000,000 10.1933 6.1209 1.67Γ— 60%
β–« a b (int64) int64 1,000 0.0008 0.0116 0.069Γ— 1454%
🟑 a b (int64) int64 100,000 0.0325 0.0643 0.51Γ— 198%
🟑 a b (int64) int64 10,000,000 17.4904 19.2407 0.91Γ— 110%
β–« a b (int8) int8 1,000 0.0007 0.0013 0.53Γ— 188%
βœ… a b (int8) int8 100,000 0.0298 0.0093 3.20Γ— 31%
βœ… a b (int8) int8 10,000,000 4.0815 1.7639 2.31Γ— 43%
β–« a b (uint16) uint16 1,000 0.0008 0.0026 0.30Γ— 332%
βœ… a b (uint16) uint16 100,000 0.0300 0.0151 1.98Γ— 50%
βœ… a b (uint16) uint16 10,000,000 5.8621 2.8445 2.06Γ— 48%
β–« a b (uint32) uint32 1,000 0.0009 0.0040 0.22Γ— 461%
🟑 a b (uint32) uint32 100,000 0.0287 0.0292 0.98Γ— 102%
βœ… a b (uint32) uint32 10,000,000 8.7585 5.7854 1.51Γ— 66%
β–« a b (uint64) uint64 1,000 0.0008 0.0087 0.091Γ— 1094%
🟑 a b (uint64) uint64 100,000 0.0383 0.0625 0.61Γ— 163%
βœ… a b (uint64) uint64 10,000,000 17.6590 17.4118 1.01Γ— 99%
β–« a b (uint8) uint8 1,000 0.0007 0.0012 0.57Γ— 176%
βœ… a b (uint8) uint8 100,000 0.0292 0.0107 2.73Γ— 37%
βœ… a b (uint8) uint8 10,000,000 4.0708 1.5442 2.64Γ— 38%
β–« np.invert(a) (bool) bool 1,000 0.0004 0.0015 0.24Γ— 412%
πŸ”΄ np.invert(a) (bool) bool 100,000 0.0022 0.0237 0.094Γ— 1068%
🟑 np.invert(a) (bool) bool 10,000,000 1.7472 2.4556 0.71Γ— 140%
β–« np.invert(a) (int16) int16 1,000 0.0009 0.0021 0.43Γ— 230%
βœ… np.invert(a) (int16) int16 100,000 0.0257 0.0133 1.94Γ— 52%
βœ… np.invert(a) (int16) int16 10,000,000 4.6982 2.3993 1.96Γ— 51%
β–« np.invert(a) (int32) int32 1,000 0.0008 0.0024 0.32Γ— 309%
🟑 np.invert(a) (int32) int32 100,000 0.0261 0.0327 0.80Γ— 125%
βœ… np.invert(a) (int32) int32 10,000,000 8.1259 5.3159 1.53Γ— 65%
β–« np.invert(a) (int64) int64 1,000 0.0007 0.0071 0.10Γ— 969%
🟠 np.invert(a) (int64) int64 100,000 0.0269 0.0565 0.48Γ— 210%
🟑 np.invert(a) (int64) int64 10,000,000 15.5655 20.8043 0.75Γ— 134%
β–« np.invert(a) (int8) int8 1,000 0.0006 0.0010 0.60Γ— 165%
βœ… np.invert(a) (int8) int8 100,000 0.0257 0.0086 2.98Γ— 34%
βœ… np.invert(a) (int8) int8 10,000,000 3.5401 1.3515 2.62Γ— 38%
β–« np.invert(a) (uint16) uint16 1,000 0.0007 0.0026 0.28Γ— 354%
βœ… np.invert(a) (uint16) uint16 100,000 0.0258 0.0152 1.70Γ— 59%
βœ… np.invert(a) (uint16) uint16 10,000,000 4.7607 2.5025 1.90Γ— 53%
β–« np.invert(a) (uint32) uint32 1,000 0.0007 0.0052 0.14Γ— 699%
βœ… np.invert(a) (uint32) uint32 100,000 0.0347 0.0255 1.36Γ— 73%
βœ… np.invert(a) (uint32) uint32 10,000,000 7.9103 4.3619 1.81Γ— 55%
β–« np.invert(a) (uint64) uint64 1,000 0.0007 0.0084 0.086Γ— 1162%
🟠 np.invert(a) (uint64) uint64 100,000 0.0261 0.0561 0.47Γ— 215%
🟑 np.invert(a) (uint64) uint64 10,000,000 15.3698 16.1587 0.95Γ— 105%
β–« np.invert(a) (uint8) uint8 1,000 0.0006 0.0012 0.52Γ— 193%
βœ… np.invert(a) (uint8) uint8 100,000 0.0268 0.0072 3.73Γ— 27%
βœ… np.invert(a) (uint8) uint8 10,000,000 3.5368 1.2344 2.87Γ— 35%
βšͺ np.left_shift(a, 2) (bool) bool 1,000 0.0015 - - -
βšͺ np.left_shift(a, 2) (bool) bool 100,000 0.0449 - - -
βšͺ np.left_shift(a, 2) (bool) bool 10,000,000 15.2171 - - -
πŸ”΄ np.left_shift(a, 2) (int16) int16 1,000 0.0010 0.0053 0.20Γ— 510%
πŸ”΄ np.left_shift(a, 2) (int16) int16 100,000 0.0282 0.3813 0.074Γ— 1350%
πŸ”΄ np.left_shift(a, 2) (int16) int16 10,000,000 4.9430 37.1258 0.13Γ— 751%
β–« np.left_shift(a, 2) (int32) int32 1,000 0.0010 0.0089 0.11Γ— 897%
πŸ”΄ np.left_shift(a, 2) (int32) int32 100,000 0.0192 0.3904 0.049Γ— 2035%
🟠 np.left_shift(a, 2) (int32) int32 10,000,000 7.7457 37.0641 0.21Γ— 478%
β–« np.left_shift(a, 2) (int64) int64 1,000 0.0010 0.0133 0.075Γ— 1342%
πŸ”΄ np.left_shift(a, 2) (int64) int64 100,000 0.0202 0.3924 0.051Γ— 1945%
🟠 np.left_shift(a, 2) (int64) int64 10,000,000 15.1483 48.2592 0.31Γ— 319%
β–« np.left_shift(a, 2) (int8) int8 1,000 0.0009 0.0054 0.17Γ— 584%
πŸ”΄ np.left_shift(a, 2) (int8) int8 100,000 0.0305 0.3768 0.081Γ— 1236%
πŸ”΄ np.left_shift(a, 2) (int8) int8 10,000,000 3.7550 37.7355 0.10Γ— 1005%
πŸ”΄ np.left_shift(a, 2) (uint16) uint16 1,000 0.0011 0.0053 0.20Γ— 503%
πŸ”΄ np.left_shift(a, 2) (uint16) uint16 100,000 0.0293 0.3879 0.076Γ— 1322%
πŸ”΄ np.left_shift(a, 2) (uint16) uint16 10,000,000 5.3824 37.4437 0.14Γ— 696%
πŸ”΄ np.left_shift(a, 2) (uint32) uint32 1,000 0.0014 0.0072 0.20Γ— 503%
πŸ”΄ np.left_shift(a, 2) (uint32) uint32 100,000 0.0201 0.3908 0.051Γ— 1944%
🟠 np.left_shift(a, 2) (uint32) uint32 10,000,000 7.7136 37.4067 0.21Γ— 485%
β–« np.left_shift(a, 2) (uint64) uint64 1,000 0.0010 0.0122 0.079Γ— 1264%
πŸ”΄ np.left_shift(a, 2) (uint64) uint64 100,000 0.0197 0.3923 0.050Γ— 1992%
🟠 np.left_shift(a, 2) (uint64) uint64 10,000,000 15.1562 43.8575 0.35Γ— 289%
β–« np.left_shift(a, 2) (uint8) uint8 1,000 0.0009 0.0053 0.17Γ— 579%
πŸ”΄ np.left_shift(a, 2) (uint8) uint8 100,000 0.0282 0.3753 0.075Γ— 1330%
πŸ”΄ np.left_shift(a, 2) (uint8) uint8 10,000,000 3.7382 37.0483 0.10Γ— 991%
βšͺ np.right_shift(a, 2) (bool) bool 1,000 0.0016 - - -
βšͺ np.right_shift(a, 2) (bool) bool 100,000 0.0562 - - -
βšͺ np.right_shift(a, 2) (bool) bool 10,000,000 15.4174 - - -
🟠 np.right_shift(a, 2) (int16) int16 1,000 0.0012 0.0054 0.22Γ— 460%
πŸ”΄ np.right_shift(a, 2) (int16) int16 100,000 0.0374 0.3824 0.098Γ— 1021%
πŸ”΄ np.right_shift(a, 2) (int16) int16 10,000,000 5.7902 37.1819 0.16Γ— 642%
πŸ”΄ np.right_shift(a, 2) (int32) int32 1,000 0.0013 0.0090 0.15Γ— 676%
πŸ”΄ np.right_shift(a, 2) (int32) int32 100,000 0.0288 0.3903 0.074Γ— 1353%
🟠 np.right_shift(a, 2) (int32) int32 10,000,000 7.9852 37.4325 0.21Γ— 469%
πŸ”΄ np.right_shift(a, 2) (int64) int64 1,000 0.0010 0.0127 0.080Γ— 1249%
πŸ”΄ np.right_shift(a, 2) (int64) int64 100,000 0.0289 0.3926 0.074Γ— 1357%
🟠 np.right_shift(a, 2) (int64) int64 10,000,000 15.2694 46.0316 0.33Γ— 302%
🟠 np.right_shift(a, 2) (int8) int8 1,000 0.0011 0.0054 0.20Γ— 487%
πŸ”΄ np.right_shift(a, 2) (int8) int8 100,000 0.0383 0.3764 0.10Γ— 982%
πŸ”΄ np.right_shift(a, 2) (int8) int8 10,000,000 4.6221 37.4222 0.12Γ— 810%
πŸ”΄ np.right_shift(a, 2) (uint16) uint16 1,000 0.0011 0.0054 0.20Γ— 512%
πŸ”΄ np.right_shift(a, 2) (uint16) uint16 100,000 0.0285 0.3868 0.074Γ— 1355%
πŸ”΄ np.right_shift(a, 2) (uint16) uint16 10,000,000 5.2827 37.5630 0.14Γ— 711%
β–« np.right_shift(a, 2) (uint32) uint32 1,000 0.0010 0.0135 0.073Γ— 1366%
πŸ”΄ np.right_shift(a, 2) (uint32) uint32 100,000 0.0202 0.3900 0.052Γ— 1930%
🟠 np.right_shift(a, 2) (uint32) uint32 10,000,000 7.8598 37.2613 0.21Γ— 474%
β–« np.right_shift(a, 2) (uint64) uint64 1,000 0.0010 0.0136 0.072Γ— 1384%
πŸ”΄ np.right_shift(a, 2) (uint64) uint64 100,000 0.0206 0.3933 0.052Γ— 1908%
🟠 np.right_shift(a, 2) (uint64) uint64 10,000,000 15.2120 44.4632 0.34Γ— 292%
β–« np.right_shift(a, 2) (uint8) uint8 1,000 0.0009 0.0054 0.17Γ— 583%
πŸ”΄ np.right_shift(a, 2) (uint8) uint8 100,000 0.0286 0.3756 0.076Γ— 1315%
πŸ”΄ np.right_shift(a, 2) (uint8) uint8 10,000,000 3.7457 37.0296 0.10Γ— 989%

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.0015 - - -
βšͺ np.all(a) (bool) bool 10,000,000 0.0014 - - -
βšͺ np.allclose(a, b) (float16) float16 1,000 0.0332 - - -
βšͺ np.allclose(a, b) (float16) float16 100,000 1.7625 - - -
βšͺ np.allclose(a, b) (float16) float16 10,000,000 192.9437 - - -
βšͺ np.allclose(a, b) (float32) float32 1,000 0.0130 - - -
βšͺ np.allclose(a, b) (float32) float32 100,000 0.3409 - - -
βšͺ np.allclose(a, b) (float32) float32 10,000,000 54.6204 - - -
βšͺ np.allclose(a, b) (float64) float64 1,000 0.0132 - - -
βšͺ np.allclose(a, b) (float64) float64 100,000 0.6240 - - -
βšͺ np.allclose(a, b) (float64) float64 10,000,000 107.6998 - - -
βšͺ np.any(a) (bool) bool 1,000 0.0016 - - -
βšͺ np.any(a) (bool) bool 100,000 0.0014 - - -
βšͺ np.any(a) (bool) bool 10,000,000 0.0014 - - -
βœ… np.array_equal(a, b) (float16) float16 1,000 0.0025 0.0011 2.26Γ— 44%
βœ… np.array_equal(a, b) (float16) float16 100,000 0.0956 0.0710 1.35Γ— 74%
βœ… np.array_equal(a, b) (float16) float16 10,000,000 9.4225 6.3415 1.49Γ— 67%
β–« np.array_equal(a, b) (float32) float32 1,000 0.0015 0.0007 2.14Γ— 47%
🟑 np.array_equal(a, b) (float32) float32 100,000 0.0087 0.0166 0.52Γ— 191%
🟑 np.array_equal(a, b) (float32) float32 10,000,000 3.8713 3.8855 1.00Γ— 100%
β–« np.array_equal(a, b) (float64) float64 1,000 0.0016 0.0008 2.01Γ— 50%
🟠 np.array_equal(a, b) (float64) float64 100,000 0.0121 0.0297 0.41Γ— 245%
βœ… np.array_equal(a, b) (float64) float64 10,000,000 7.0010 6.4820 1.08Γ— 93%
βšͺ np.isclose(a, b) (float16) float16 1,000 0.0296 - - -
βšͺ np.isclose(a, b) (float16) float16 100,000 1.7611 - - -
βšͺ np.isclose(a, b) (float16) float16 10,000,000 199.5655 - - -
βšͺ np.isclose(a, b) (float32) float32 1,000 0.0116 - - -
βšͺ np.isclose(a, b) (float32) float32 100,000 0.3355 - - -
βšͺ np.isclose(a, b) (float32) float32 10,000,000 55.8382 - - -
βšͺ np.isclose(a, b) (float64) float64 1,000 0.0116 - - -
βšͺ np.isclose(a, b) (float64) float64 100,000 0.6394 - - -
βšͺ np.isclose(a, b) (float64) float64 10,000,000 102.1851 - - -
β–« np.isfinite(a) (float16) float16 1,000 0.0009 0.0010 0.86Γ— 116%
🟑 np.isfinite(a) (float16) float16 100,000 0.0482 0.0528 0.91Γ— 110%
βœ… np.isfinite(a) (float16) float16 10,000,000 5.7788 3.3303 1.74Γ— 58%
β–« np.isfinite(a) (float32) float32 1,000 0.0004 0.0011 0.36Γ— 281%
πŸ”΄ np.isfinite(a) (float32) float32 100,000 0.0053 0.0362 0.14Γ— 688%
🟑 np.isfinite(a) (float32) float32 10,000,000 3.2475 4.1421 0.78Γ— 128%
β–« np.isfinite(a) (float64) float64 1,000 0.0004 0.0011 0.39Γ— 256%
🟠 np.isfinite(a) (float64) float64 100,000 0.0098 0.0395 0.25Γ— 405%
🟑 np.isfinite(a) (float64) float64 10,000,000 5.1256 6.2088 0.83Γ— 121%
β–« np.isinf(a) (float16) float16 1,000 0.0009 0.0011 0.85Γ— 118%
🟑 np.isinf(a) (float16) float16 100,000 0.0498 0.0543 0.92Γ— 109%
βœ… np.isinf(a) (float16) float16 10,000,000 5.9810 3.2027 1.87Γ— 54%
β–« np.isinf(a) (float32) float32 1,000 0.0005 0.0012 0.46Γ— 219%
πŸ”΄ np.isinf(a) (float32) float32 100,000 0.0054 0.0421 0.13Γ— 780%
🟑 np.isinf(a) (float32) float32 10,000,000 3.4097 4.4158 0.77Γ— 130%
β–« np.isinf(a) (float64) float64 1,000 0.0005 0.0012 0.39Γ— 259%
🟠 np.isinf(a) (float64) float64 100,000 0.0101 0.0483 0.21Γ— 480%
🟑 np.isinf(a) (float64) float64 10,000,000 4.9636 6.7550 0.73Γ— 136%
β–« np.isnan(a) (float16) float16 1,000 0.0012 0.0010 1.18Γ— 85%
βœ… np.isnan(a) (float16) float16 100,000 0.0678 0.0500 1.36Γ— 74%
βœ… np.isnan(a) (float16) float16 10,000,000 7.7367 3.2338 2.39Γ— 42%
β–« np.isnan(a) (float32) float32 1,000 0.0005 0.0010 0.51Γ— 197%
πŸ”΄ np.isnan(a) (float32) float32 100,000 0.0041 0.0486 0.085Γ— 1177%
🟑 np.isnan(a) (float32) float32 10,000,000 3.1759 4.6187 0.69Γ— 145%
β–« np.isnan(a) (float64) float64 1,000 0.0004 0.0013 0.33Γ— 304%
πŸ”΄ np.isnan(a) (float64) float64 100,000 0.0086 0.0490 0.18Γ— 566%
🟑 np.isnan(a) (float64) float64 10,000,000 4.9428 6.3496 0.78Γ— 128%
🟑 np.maximum(a, b) (float16) float16 1,000 0.0031 0.0040 0.79Γ— 127%
βœ… np.maximum(a, b) (float16) float16 100,000 0.7598 0.6773 1.12Γ— 89%
βœ… np.maximum(a, b) (float16) float16 10,000,000 80.6049 65.8783 1.22Γ— 82%
β–« np.maximum(a, b) (float32) float32 1,000 0.0006 0.0027 0.21Γ— 478%
🟠 np.maximum(a, b) (float32) float32 100,000 0.0085 0.0375 0.23Γ— 439%
βœ… np.maximum(a, b) (float32) float32 10,000,000 8.4970 5.1052 1.66Γ— 60%
β–« np.maximum(a, b) (float64) float64 1,000 0.0006 0.0033 0.18Γ— 557%
🟠 np.maximum(a, b) (float64) float64 100,000 0.0291 0.0937 0.31Γ— 322%
🟑 np.maximum(a, b) (float64) float64 10,000,000 16.6866 21.8878 0.76Γ— 131%
🟑 np.minimum(a, b) (float16) float16 1,000 0.0034 0.0039 0.87Γ— 116%
βœ… np.minimum(a, b) (float16) float16 100,000 0.7651 0.6905 1.11Γ— 90%
βœ… np.minimum(a, b) (float16) float16 10,000,000 81.5912 66.2103 1.23Γ— 81%
β–« np.minimum(a, b) (float32) float32 1,000 0.0006 0.0026 0.21Γ— 468%
🟠 np.minimum(a, b) (float32) float32 100,000 0.0084 0.0380 0.22Γ— 450%
βœ… np.minimum(a, b) (float32) float32 10,000,000 8.4896 4.9888 1.70Γ— 59%
β–« np.minimum(a, b) (float64) float64 1,000 0.0006 0.0027 0.22Γ— 454%
🟠 np.minimum(a, b) (float64) float64 100,000 0.0294 0.0879 0.33Γ— 300%
🟑 np.minimum(a, b) (float64) float64 10,000,000 16.7333 22.1221 0.76Γ— 132%

Statistics

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
βœ… np.average(a) (float16) float16 1,000 0.0055 0.0013 4.13Γ— 24%
βœ… np.average(a) (float16) float16 100,000 0.1051 0.0820 1.28Γ— 78%
βœ… np.average(a) (float16) float16 10,000,000 17.2176 8.1660 2.11Γ— 47%
β–« np.average(a) (float32) float32 1,000 0.0050 0.0007 6.67Γ— 15%
βœ… np.average(a) (float32) float32 100,000 0.0174 0.0022 7.92Γ— 13%
βœ… np.average(a) (float32) float32 10,000,000 10.2401 1.2354 8.29Γ— 12%
β–« np.average(a) (float64) float64 1,000 0.0035 0.0009 3.81Γ— 26%
βœ… np.average(a) (float64) float64 100,000 0.0171 0.0064 2.69Γ— 37%
βœ… np.average(a) (float64) float64 10,000,000 15.3117 3.1971 4.79Γ— 21%
β–« np.count_nonzero(a) (float16) float16 1,000 0.0018 0.0005 3.72Γ— 27%
βœ… np.count_nonzero(a) (float16) float16 100,000 0.1526 0.0451 3.39Γ— 30%
βœ… np.count_nonzero(a) (float16) float16 10,000,000 25.1066 4.3725 5.74Γ— 17%
β–« np.count_nonzero(a) (float32) float32 1,000 0.0008 0.0001 9.41Γ— 11%
βœ… np.count_nonzero(a) (float32) float32 100,000 0.0376 0.0048 7.77Γ— 13%
βœ… np.count_nonzero(a) (float32) float32 10,000,000 8.0489 2.0107 4.00Γ— 25%
β–« np.count_nonzero(a) (float64) float64 1,000 0.0010 0.0001 7.20Γ— 14%
βœ… np.count_nonzero(a) (float64) float64 100,000 0.0405 0.0102 3.98Γ— 25%
βœ… np.count_nonzero(a) (float64) float64 10,000,000 10.1563 4.2387 2.40Γ— 42%
βœ… np.median(a) (float16) float16 1,000 0.0136 0.0042 3.26Γ— 31%
🟑 np.median(a) (float16) float16 100,000 0.9048 1.2881 0.70Γ— 142%
βœ… np.median(a) (float16) float16 10,000,000 134.8925 92.0448 1.47Γ— 68%
βœ… np.median(a) (float32) float32 1,000 0.0109 0.0023 4.77Γ— 21%
🟑 np.median(a) (float32) float32 100,000 0.4875 0.7182 0.68Γ— 147%
βœ… np.median(a) (float32) float32 10,000,000 96.5370 82.6295 1.17Γ— 86%
βœ… np.median(a) (float64) float64 1,000 0.0110 0.0024 4.53Γ— 22%
🟑 np.median(a) (float64) float64 100,000 0.4789 0.7222 0.66Γ— 151%
βœ… np.median(a) (float64) float64 10,000,000 112.1137 92.2792 1.22Γ— 82%
βœ… np.percentile(a, 50) (float16) float16 1,000 0.0323 0.0042 7.69Γ— 13%
βœ… np.percentile(a, 50) (float16) float16 100,000 1.8092 1.2858 1.41Γ— 71%
βœ… np.percentile(a, 50) (float16) float16 10,000,000 156.5275 91.5503 1.71Γ— 58%
βœ… np.percentile(a, 50) (float32) float32 1,000 0.0241 0.0023 10.51Γ— 10%
βœ… np.percentile(a, 50) (float32) float32 100,000 0.7427 0.7156 1.04Γ— 96%
🟑 np.percentile(a, 50) (float32) float32 10,000,000 63.9717 81.0735 0.79Γ— 127%
βœ… np.percentile(a, 50) (float64) float64 1,000 0.0300 0.0025 12.18Γ— 8%
βœ… np.percentile(a, 50) (float64) float64 100,000 0.7387 0.7299 1.01Γ— 99%
🟑 np.percentile(a, 50) (float64) float64 10,000,000 80.6078 93.3931 0.86Γ— 116%
βœ… np.ptp(a) (float16) float16 1,000 0.0073 0.0032 2.28Γ— 44%
βœ… np.ptp(a) (float16) float16 100,000 1.0217 0.6418 1.59Γ— 63%
βœ… np.ptp(a) (float16) float16 10,000,000 130.8630 65.0541 2.01Γ— 50%
βœ… np.ptp(a) (float32) float32 1,000 0.0034 0.0024 1.45Γ— 69%
🟑 np.ptp(a) (float32) float32 100,000 0.0119 0.0176 0.68Γ— 147%
βœ… np.ptp(a) (float32) float32 10,000,000 8.0532 3.5153 2.29Γ— 44%
βœ… np.ptp(a) (float64) float64 1,000 0.0041 0.0027 1.50Γ— 67%
🟑 np.ptp(a) (float64) float64 100,000 0.0194 0.0330 0.59Γ— 170%
βœ… np.ptp(a) (float64) float64 10,000,000 17.0859 8.6509 1.98Γ— 51%
βœ… np.quantile(a, 0.5) (float16) float16 1,000 0.0287 0.0042 6.76Γ— 15%
βœ… np.quantile(a, 0.5) (float16) float16 100,000 1.7839 1.3025 1.37Γ— 73%
βœ… np.quantile(a, 0.5) (float16) float16 10,000,000 156.4810 91.1789 1.72Γ— 58%
βœ… np.quantile(a, 0.5) (float32) float32 1,000 0.0234 0.0023 10.31Γ— 10%
βœ… np.quantile(a, 0.5) (float32) float32 100,000 0.7177 0.7119 1.01Γ— 99%
🟑 np.quantile(a, 0.5) (float32) float32 10,000,000 63.5667 80.9988 0.79Γ— 127%
βœ… np.quantile(a, 0.5) (float64) float64 1,000 0.0233 0.0025 9.44Γ— 11%
🟑 np.quantile(a, 0.5) (float64) float64 100,000 0.7353 0.7477 0.98Γ— 102%
🟑 np.quantile(a, 0.5) (float64) float64 10,000,000 81.6003 91.1410 0.90Γ— 112%

Sorting

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
🟑 np.argsort(a) (float32) float32 1,000 0.0121 0.0163 0.74Γ— 135%
βœ… np.argsort(a) (float32) float32 100,000 1.5773 1.3462 1.17Γ— 85%
βœ… np.argsort(a) (float32) float32 10,000,000 657.2035 164.2182 4.00Γ— 25%
🟠 np.argsort(a) (float64) float64 1,000 0.0101 0.0229 0.44Γ— 228%
🟑 np.argsort(a) (float64) float64 100,000 1.4552 2.6803 0.54Γ— 184%
βœ… np.argsort(a) (float64) float64 10,000,000 612.9057 305.7646 2.00Γ— 50%
🟑 np.argsort(a) (int32) int32 1,000 0.0122 0.0150 0.81Γ— 123%
🟠 np.argsort(a) (int32) int32 100,000 0.4357 1.1883 0.37Γ— 273%
βœ… np.argsort(a) (int32) int32 10,000,000 306.9013 130.5309 2.35Γ— 42%
🟑 np.argsort(a) (int64) int64 1,000 0.0133 0.0204 0.65Γ— 154%
πŸ”΄ np.argsort(a) (int64) int64 100,000 0.5113 2.9221 0.17Γ— 572%
βœ… np.argsort(a) (int64) int64 10,000,000 390.5333 240.1491 1.63Γ— 62%
βœ… np.nonzero(a) (float32) float32 1,000 0.0025 0.0021 1.20Γ— 84%
🟑 np.nonzero(a) (float32) float32 100,000 0.1872 0.2217 0.84Γ— 118%
βœ… np.nonzero(a) (float32) float32 10,000,000 25.5561 15.7379 1.62Γ— 62%
βœ… np.nonzero(a) (float64) float64 1,000 0.0028 0.0019 1.50Γ— 66%
🟑 np.nonzero(a) (float64) float64 100,000 0.1789 0.2447 0.73Γ— 137%
βœ… np.nonzero(a) (float64) float64 10,000,000 32.2888 18.0774 1.79Γ— 56%
🟑 np.nonzero(a) (int32) int32 1,000 0.0017 0.0030 0.56Γ— 178%
🟠 np.nonzero(a) (int32) int32 100,000 0.1019 0.2350 0.43Γ— 231%
βœ… np.nonzero(a) (int32) int32 10,000,000 29.9222 27.4282 1.09Γ— 92%
🟑 np.nonzero(a) (int64) int64 1,000 0.0018 0.0031 0.57Γ— 176%
🟠 np.nonzero(a) (int64) int64 100,000 0.1143 0.2499 0.46Γ— 219%
βœ… np.nonzero(a) (int64) int64 10,000,000 29.8745 19.8804 1.50Γ— 66%
βœ… np.searchsorted(a, v) (float32) float32 1,000 0.0074 0.0056 1.31Γ— 76%
βœ… np.searchsorted(a, v) (float32) float32 100,000 2.0207 1.7645 1.15Γ— 87%
βœ… np.searchsorted(a, v) (float32) float32 10,000,000 239.6437 195.4530 1.23Γ— 82%
βœ… np.searchsorted(a, v) (float64) float64 1,000 0.0079 0.0055 1.45Γ— 69%
βœ… np.searchsorted(a, v) (float64) float64 100,000 2.0950 1.7708 1.18Γ— 84%
βœ… np.searchsorted(a, v) (float64) float64 10,000,000 249.7088 192.5328 1.30Γ— 77%
βœ… np.searchsorted(a, v) (int32) int32 1,000 0.0204 0.0077 2.65Γ— 38%
βœ… np.searchsorted(a, v) (int32) int32 100,000 2.8565 2.2922 1.25Γ— 80%
βœ… np.searchsorted(a, v) (int32) int32 10,000,000 578.2002 253.6528 2.28Γ— 44%
βœ… np.searchsorted(a, v) (int64) int64 1,000 0.0202 0.0073 2.77Γ— 36%
βœ… np.searchsorted(a, v) (int64) int64 100,000 2.8969 2.2836 1.27Γ— 79%
βœ… np.searchsorted(a, v) (int64) int64 10,000,000 559.5927 247.0748 2.27Γ— 44%

LinearAlgebra

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
β–« np.dot(a, b) (float64) float64 1,000 0.0007 0.0006 1.13Γ— 89%
βœ… np.dot(a, b) (float64) float64 100,000 0.0994 0.0070 14.17Γ— 7%
🟠 np.dot(a, b) (float64) float64 10,000,000 0.9192 3.1020 0.30Γ— 338%
🟠 np.matmul(A, B) (float64) float64 1,000 0.0027 0.0062 0.43Γ— 234%
πŸ”΄ np.matmul(A, B) (float64) float64 100,000 0.5265 3.0608 0.17Γ— 581%
πŸ”΄ np.matmul(A, B) (float64) float64 10,000,000 0.7113 4.2590 0.17Γ— 599%
🟠 np.outer(a, b) (float64) float64 1,000 0.0022 0.0057 0.38Γ— 262%
🟠 np.outer(a, b) (float64) float64 100,000 0.0365 0.0742 0.49Γ— 204%
βœ… np.outer(a, b) (float64) float64 10,000,000 13.5041 11.9438 1.13Γ— 88%

Selection

Operation Type N NumPy (ms) NumSharp (ms) Ratio %NumPyπŸ•
🟑 np.where(cond) (float64) float64 1,000 0.0010 0.0014 0.74Γ— 134%
🟠 np.where(cond) (float64) float64 100,000 0.0309 0.1016 0.30Γ— 329%
βœ… np.where(cond) (float64) float64 10,000,000 7.9232 7.3884 1.07Γ— 93%
🟑 np.where(cond, a, b) (float64) float64 1,000 0.0017 0.0020 0.84Γ— 119%
🟑 np.where(cond, a, b) (float64) float64 100,000 0.0542 0.0678 0.80Γ— 125%
βœ… np.where(cond, a, b) (float64) float64 10,000,000 17.9453 15.2212 1.18Γ— 85%

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-23 Β· 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.18Γ— geomean Β· 85%πŸ• of NumPy's time Β· 72 win / 58 lose over 130 cells

OPERATIONS β€” BY SIZE TIER  (geomean over all families)
        slower ◄───────── 1.0 (parity) ─────────► faster
scalar     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ ........   1.10Γ—    91%πŸ•  ( 12 win / 14 lose)
1K         β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š .......   1.19Γ—    84%πŸ•  ( 15 win / 11 lose)
100K       β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š ........   1.08Γ—    93%πŸ•  ( 12 win / 14 lose)
1M         β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ ......   1.31Γ—    77%πŸ•  ( 17 win /  9 lose)
10M        β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž ......   1.23Γ—    81%πŸ•  ( 16 win / 10 lose)
ALL        β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š .......   1.18Γ—    85%πŸ•  ( 72 win / 58 lose)

OPERATIONS β€” BY CATEGORY  (geomean over its families, all sizes)
        slower ◄───────── 1.0 (parity) ─────────► faster
elementwiseβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š .......   1.18Γ—    85%πŸ•  ( 28 win / 12 lose)
reductions β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–     1.75Γ—    57%πŸ•  ( 28 win / 12 lose)
selection  (no data)
copy/cast  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž ...........   0.73Γ—   137%πŸ•  (  8 win / 17 lose)  β—„ SLOWER
index-math β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ ...........   0.75Γ—   133%πŸ•  (  3 win /  7 lose)  β—„ SLOWER
dtypes     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– ......   1.22Γ—    82%πŸ•  (  5 win / 10 lose)

CATEGORY Γ— TIER geomean
category       scalar       1K     100K       1M      10M
elementwise     1.05Γ—    1.54Γ—    1.18Γ—    1.09Γ—    1.11Γ—
reductions      2.67Γ—    1.99Γ—    1.51Γ—    1.44Γ—    1.42Γ—
selection           -        -        -        -        -
copy/cast       0.61Γ—    0.59Γ—    0.40Γ—    1.39Γ—    1.06Γ—
index-math      0.32Γ—    0.51Γ—    0.97Γ—    1.22Γ—    1.22Γ—
dtypes          0.71Γ—    0.85Γ—    1.97Γ—    1.54Γ—    1.47Γ—

PER-FAMILY Γ— TIER  (NumPy Γ· NumSharp; >1.0 = NumSharp faster)
family        scalar       1K     100K       1M      10M    geomean
-- elementwise
  add          1.01Γ—    1.48Γ—    1.03Γ—    0.88Γ—    1.01Γ—     1.06Γ—
  sqrt         0.85Γ—    1.15Γ—    1.00Γ—    1.01Γ—    1.02Γ—     1.00Γ—
  copy         0.88Γ—    2.59Γ—    1.78Γ—    1.33Γ—    1.72Γ—     1.56Γ—
  strided      0.89Γ—    1.12Γ—    1.00Γ—    1.02Γ—    0.99Γ—     1.00Γ—
  bcast        0.89Γ—    1.13Γ—    1.02Γ—    0.98Γ—    1.03Γ—     1.01Γ—
  reversed     0.85Γ—    1.28Γ—    0.90Γ—    0.99Γ—    1.00Γ—     0.99Γ—
  castbuf      1.98Γ—    2.29Γ—    1.65Γ—    1.35Γ—    1.16Γ—     1.64Γ—
  mixbuf       1.49Γ—    1.94Γ—    1.40Γ—    1.24Γ—    1.09Γ—     1.40Γ—
-- reductions
  sum          1.84Γ—    1.78Γ—    2.79Γ—    2.21Γ—    1.76Γ—     2.04Γ—
  sum ax0      1.90Γ—    0.86Γ—    0.96Γ—    1.00Γ—    0.94Γ—     1.08Γ—
  sum ax1      1.85Γ—    0.86Γ—    1.51Γ—    1.83Γ—    1.57Γ—     1.47Γ—
  sum dt=      1.97Γ—    1.47Γ—    0.49Γ—    0.47Γ—    0.55Γ—     0.82Γ—
  amin         1.70Γ—    1.61Γ—    0.71Γ—    0.70Γ—    0.82Γ—     1.02Γ—
  cumsum       1.47Γ—    1.09Γ—    1.06Γ—    1.80Γ—    1.68Γ—     1.39Γ—
  any(F)       8.89Γ—    8.41Γ—    2.12Γ—    0.98Γ—    1.00Γ—     2.74Γ—
  any(hit)     9.01Γ—    8.50Γ—    8.50Γ—    7.87Γ—    8.22Γ—     8.41Γ—
-- 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.43Γ—    0.44Γ—    0.17Γ—    2.17Γ—    0.90Γ—     0.57Γ—
  astype       0.30Γ—    0.53Γ—    0.59Γ—    1.97Γ—    1.90Γ—     0.81Γ—
  ravel.T      0.45Γ—    0.73Γ—    0.48Γ—    2.11Γ—    1.01Γ—     0.80Γ—
  in-place     1.77Γ—    0.81Γ—    0.81Γ—    1.06Γ—    1.02Γ—     1.05Γ—
  less->b      0.81Γ—    0.52Γ—    0.26Γ—    0.54Γ—    0.76Γ—     0.54Γ—
-- index-math
  unravel      0.33Γ—    0.50Γ—    0.95Γ—    1.01Γ—    0.97Γ—     0.68Γ—
  ravel_mi     0.32Γ—    0.52Γ—    0.99Γ—    1.49Γ—    1.53Γ—     0.82Γ—
-- dtypes
  complex      0.74Γ—    0.63Γ—    1.01Γ—    0.76Γ—    0.89Γ—     0.80Γ—
  float16      0.72Γ—    0.65Γ—    0.62Γ—    0.62Γ—    0.62Γ—     0.65Γ—
  int8         0.67Γ—    1.47Γ—   12.09Γ—    7.70Γ—    5.78Γ—     3.51Γ—

CONSTRUCTION β€” iterator build+dispose vs np.nditer (size-invariant, 1K)
        slower ◄───────── 1.0 (parity) ─────────► faster
1op          β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹    1.86Γ—    54%πŸ•  (  1 win /  0 lose)
3op_exl      β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ά   4.43Γ—    23%πŸ•  (  1 win /  0 lose)
ufunc        β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ά   4.98Γ—    20%πŸ•  (  1 win /  0 lose)
bufcast      β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ά   3.49Γ—    29%πŸ•  (  1 win /  0 lose)
multiindex   β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ά   2.56Γ—    39%πŸ•  (  1 win /  0 lose)
8op          β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ά   5.26Γ—    19%πŸ•  (  1 win /  0 lose)
4d           β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ά   2.94Γ—    34%πŸ•  (  1 win /  0 lose)
8d           β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ά   2.65Γ—    38%πŸ•  (  1 win /  0 lose)
strided2d    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ά   3.35Γ—    30%πŸ•  (  1 win /  0 lose)
geomean      β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ά   3.33Γ—    30%πŸ•  (  9 win /  0 lose)

CHUNK-WIDTH dispatch β€” strided rows, 2M total, inner width w (NumPy = np.positive)
        slower ◄───────── 1.0 (parity) ─────────► faster
w=4          β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ ............   0.71Γ—   141%πŸ•  (  0 win /  1 lose)  β—„ SLOWER
w=16         β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– ........   1.02Γ—    98%πŸ•  (  1 win /  0 lose)  β—„ PARITY
w=64         β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– .......   1.15Γ—    87%πŸ•  (  1 win /  0 lose)
w=256        β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– .....   1.34Γ—    75%πŸ•  (  1 win /  0 lose)
w=1024       β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ ....   1.51Γ—    66%πŸ•  (  1 win /  0 lose)

PATHOLOGY canaries β€” known taxes/losses to track (NumPy Γ· NumSharp)
  bcast_reduce    538.56Γ—   (538.6Γ— faster, faster)
  allocate          1.10Γ—   (1.1Γ— faster, faster)
  overlap_copy      1.78Γ—   (1.8Γ— faster, faster)
  forder_out        1.28Γ—   (1.3Γ— faster, faster)
  zerodim           1.26Γ—   (1.3Γ— faster, faster)

DIVIDENDS β€” NumSharp-only machinery (NumPy baseline = closest it can do)
                scalar       1K     100K       1M      10M   note
fuse7           12.65Γ—    3.80Γ—    1.39Γ—    1.62Γ—    2.01Γ—   vs chained 6Γ— add
reuse            5.63Γ—    5.30Γ—    0.97Γ—    1.04Γ—    1.06Γ—   vs rebuild each call
par8                 -    0.66Γ—    2.70Γ—    3.09Γ—    4.25Γ—   vs single-thread

biggest NumSharp wins: i8@100K 12.09Γ— Β· anyeh@1 9.01Γ— Β· anyff@1 8.89Γ— Β· anyeh@100K 8.50Γ— Β· anyeh@1K 8.50Γ—
most behind:           flatten@100K 0.17Γ— Β· lessbool@100K 0.26Γ— Β· astype@1 0.30Γ— Β· ravelmi@1 0.32Γ— Β· unravel@1 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 1.01 βœ… 1.05 βœ… 1.04 βœ… 0.49 🟠 0.61 🟑 0.56 🟑 0.68 🟑 0.59 🟑
1M 0.92 🟑 0.94 🟑 0.94 🟑 0.56 🟑 0.76 🟑 0.58 🟑 0.70 🟑 0.50 🟑

Geomean by dt

size f64 f32 c128 dec f16 i32 i64
100K 0.78 🟑 0.85 🟑 1.01 βœ… 0.08 πŸ”΄ 1.04 βœ… 0.89 🟑 1.15 βœ…
1M 0.88 🟑 1.05 βœ… 1.02 βœ… 0.07 πŸ”΄ 1.00 βœ… 0.80 🟑 1.02 βœ…

Geomean by op

size sum min max prod
100K 0.72 🟑 0.61 🟑 0.61 🟑 1.06 βœ…
1M 0.74 🟑 0.59 🟑 0.58 🟑 1.14 βœ…

Worst 15 cells (NumSharp slowest vs NumPy)

key NumSharp ms NumPy ms ratio
1M|dec|bcast|sum|ax0 5.3741 0.0657 0.01 πŸ”΄
100K|dec|bcast|sum|ax0 0.5412 0.0101 0.02 πŸ”΄
1M|dec|sliced|sum|ax0 5.4381 0.1108 0.02 πŸ”΄
100K|dec|C|sum|ax0 0.5494 0.0114 0.02 πŸ”΄
1M|dec|negrow|sum|ax0 5.4461 0.1134 0.02 πŸ”΄
100K|dec|negrow|sum|ax0 0.5371 0.0114 0.02 πŸ”΄
100K|dec|T|sum|ax1 0.5356 0.0114 0.02 πŸ”΄
1M|dec|F|sum|ax1 5.3609 0.1202 0.02 πŸ”΄
1M|dec|T|sum|ax1 5.5377 0.1270 0.02 πŸ”΄
100K|dec|sliced|sum|ax0 0.5332 0.0123 0.02 πŸ”΄
100K|dec|F|sum|ax1 0.5381 0.0126 0.02 πŸ”΄
1M|dec|C|sum|ax0 5.4777 0.1298 0.02 πŸ”΄
1M|i32|bcast|sum|ax1 4.1105 0.1203 0.03 πŸ”΄
100K|i32|bcast|sum|ax1 0.4050 0.0168 0.04 πŸ”΄
100K|dec|C|max|ax0 0.2871 0.0137 0.05 πŸ”΄

Copy / identity-ufunc (np.positive)

Geomean by lay

size C F T strided sliced negrow negcol bcast
100K 1.16 βœ… 1.47 βœ… 1.25 βœ… 0.86 🟑 1.56 βœ… 1.63 βœ… 2.22 βœ… 1.57 βœ…
1M 2.87 βœ… 2.95 βœ… 2.89 βœ… 1.96 βœ… 2.67 βœ… 2.62 βœ… 3.24 βœ… 2.67 βœ…

Geomean by dt

size u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 c128
100K 0.93 🟑 1.41 βœ… 1.75 βœ… 1.80 βœ… 0.99 🟑 1.09 βœ… 1.66 βœ… 1.03 βœ… 2.44 βœ… 2.15 βœ… 1.06 βœ… 0.84 🟑 2.60 βœ…
1M 4.51 βœ… 4.77 βœ… 2.15 βœ… 2.11 βœ… 2.11 βœ… 2.22 βœ… 2.61 βœ… 2.64 βœ… 2.15 βœ… 2.14 βœ… 2.14 βœ… 2.57 βœ… 5.31 βœ…

Worst 15 cells (NumSharp slowest vs NumPy)

key NumSharp ms NumPy ms ratio
100K|i64|strided|pos 0.0257 0.0110 0.43 🟠
100K|f64|strided|pos 0.0232 0.0105 0.45 🟠
100K|u64|strided|pos 0.0240 0.0109 0.45 🟠
100K|i64|C|pos 0.0441 0.0208 0.47 🟠
100K|f32|strided|pos 0.0202 0.0103 0.51 🟑
100K|i32|strided|pos 0.0200 0.0109 0.54 🟑
100K|i64|T|pos 0.0376 0.0208 0.55 🟑
100K|u8|negrow|pos 0.0419 0.0232 0.56 🟑
100K|u8|sliced|pos 0.0410 0.0230 0.56 🟑
100K|u8|bcast|pos 0.0409 0.0231 0.56 🟑
100K|f64|C|pos 0.0418 0.0242 0.58 🟑
100K|f64|F|pos 0.0388 0.0227 0.58 🟑
100K|u32|strided|pos 0.0180 0.0112 0.62 🟑
100K|f64|T|pos 0.0364 0.0230 0.63 🟑
100K|u64|T|pos 0.0358 0.0290 0.81 🟑

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

Geomean by lay

size C F T strided sliced negrow negcol bcast
100K 0.54 🟑 0.75 🟑 0.68 🟑 0.53 🟑 0.84 🟑 0.81 🟑 1.16 βœ… 0.84 🟑
1M 1.57 βœ… 1.54 βœ… 1.53 βœ… 1.15 βœ… 1.66 βœ… 1.65 βœ… 1.80 βœ… 1.67 βœ…

Geomean by dt

size f64 f32 c128 f16 i32 i64
100K 0.58 🟑 0.53 🟑 1.18 βœ… 0.75 🟑 0.79 🟑 0.81 🟑
1M 1.91 βœ… 1.59 βœ… 1.74 βœ… 0.96 🟑 1.55 βœ… 1.82 βœ…

Geomean by op

size add mul neg abs sqrt less copy
100K 0.97 🟑 0.93 🟑 0.71 🟑 0.70 🟑 0.94 🟑 0.61 🟑 0.50 🟑
1M 1.81 βœ… 1.80 βœ… 2.12 βœ… 1.66 βœ… 1.55 βœ… 0.69 🟑 1.82 βœ…

Worst 15 cells (NumSharp slowest vs NumPy)

key NumSharp ms NumPy ms ratio
100K|f64|strided|abs 0.0481 0.0075 0.16 πŸ”΄
100K|f64|C|copy 0.0700 0.0112 0.16 πŸ”΄
100K|f64|strided|neg 0.0502 0.0082 0.16 πŸ”΄
100K|f64|C|abs 0.0653 0.0113 0.17 πŸ”΄
100K|f32|C|abs 0.0310 0.0056 0.18 πŸ”΄
100K|f16|C|copy 0.0169 0.0031 0.18 πŸ”΄
100K|f64|C|mul 0.0690 0.0129 0.19 πŸ”΄
100K|f64|C|neg 0.0649 0.0129 0.20 πŸ”΄
100K|f64|C|add 0.0638 0.0130 0.20 🟠
100K|f16|negrow|copy 0.0178 0.0038 0.21 🟠
100K|f32|C|mul 0.0316 0.0069 0.22 🟠
100K|i32|bcast|copy 0.0224 0.0050 0.22 🟠
100K|f32|C|add 0.0311 0.0069 0.22 🟠
100K|f32|T|neg 0.0270 0.0060 0.22 🟠
100K|f32|T|add 0.0302 0.0068 0.23 🟠

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.55 βœ… 2.18 βœ… 0.62 🟑 2.04 βœ… 2.54 βœ… 2.38 βœ… 1.87 βœ…
1-D strided a[::2] 1.83 βœ… 1.36 βœ… 0.52 🟑 1.37 βœ… 1.77 βœ… 1.86 βœ… 1.34 βœ…
1-D reversed a[::-1] 2.26 βœ… 2.09 βœ… 0.56 🟑 2.00 βœ… 2.14 βœ… 2.23 βœ… 1.71 βœ…
array + scalar 2.63 βœ… 2.11 βœ… 0.63 🟑 1.80 βœ… 2.17 βœ… 2.58 βœ… 1.81 βœ…
scalar + array 2.35 βœ… 2.10 βœ… 0.64 🟑 1.98 βœ… 2.48 βœ… 2.59 βœ… 1.85 βœ…
mixed C + F 2.12 βœ… 2.01 βœ… 0.62 🟑 1.98 βœ… 2.02 βœ… 2.26 βœ… 1.70 βœ…
mixed C + T 2.59 βœ… 2.13 βœ… 0.62 🟑 2.04 βœ… 2.20 βœ… 2.51 βœ… 1.84 βœ…
binary broadcast +row(1,C) 2.72 βœ… 2.28 βœ… 0.63 🟑 2.00 βœ… 2.42 βœ… 2.42 βœ… 1.89 βœ…
binary broadcast +col(R,1) 2.68 βœ… 2.14 βœ… 0.56 🟑 1.99 βœ… 2.45 βœ… 2.82 βœ… 1.88 βœ…
col-broadcast unary (inner stride-0) 2.55 βœ… 1.76 βœ… 0.86 🟑 1.69 βœ… 2.66 βœ… 6.09 βœ… 2.18 βœ…

Worst 12 cells

key NumSharp ms NumPy ms ratio
1d_strided f16 2.6414 1.3865 0.52 🟑
1d_rev f16 5.3054 2.9810 0.56 🟑
bcast_col f16 5.2996 2.9861 0.56 🟑
mix_C_T f16 5.3156 3.2865 0.62 🟑
1d_C f16 4.7503 2.9588 0.62 🟑
mix_C_F f16 5.3110 3.3155 0.62 🟑
bcast_row f16 4.7682 2.9983 0.63 🟑
scalar_rhs f16 4.7137 2.9711 0.63 🟑
scalar_lhs f16 4.6575 2.9643 0.64 🟑
colbcast_unary f16 0.4898 0.4232 0.86 🟑
1d_strided f32 0.2652 0.3608 1.36 βœ…
1d_strided i32 0.2798 0.3832 1.37 βœ…

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

  • 129 / 1568 comparable cells lag (<1.0); 1439 win (β‰₯1.0).
  • πŸ”΄ <0.2 β€” 5 cells. Top: 3Γ— * β†’ bool; 2Γ— same-type diagonal (copy)
  • 🟠 0.2–0.5 β€” 10 cells. Top: 8Γ— same-type diagonal (copy); 2Γ— * β†’ bool
  • 🟑 0.5–1.0 β€” 114 cells. Top: 29Γ— float/cplx β†’ narrow-int (bool/u8/i8/i16/u16/char); 20Γ— int β†’ sub-word (narrow); 8Γ— f32 β†’ u64

float/complex β†’ narrow-int geomean by src (the historical cliff): f32β†’narrow 1.95, f64β†’narrow 1.39, f16β†’narrow 3.77, c128β†’narrow 1.01.

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

C F T sliced negrow negcol strided bcast
1.82 βœ… 1.97 βœ… 1.88 βœ… 1.87 βœ… 1.89 βœ… 1.81 βœ… 1.47 βœ… 2.21 βœ…

Geomean by src dtype (all layoutsΓ—dst)

bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
2.06 βœ… 1.99 βœ… 2.02 βœ… 2.26 βœ… 2.21 βœ… 1.96 βœ… 1.94 βœ… 1.64 βœ… 1.58 βœ… 1.98 βœ… 2.41 βœ… 1.75 βœ… 1.45 βœ… nan ? 1.16 βœ…

Geomean by dst dtype (all layoutsΓ—src)

bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
1.95 βœ… 1.76 βœ… 1.80 βœ… 1.63 βœ… 1.61 βœ… 1.82 βœ… 1.66 βœ… 1.93 βœ… 1.76 βœ… 1.63 βœ… 2.48 βœ… 1.63 βœ… 2.04 βœ… nan ? 2.55 βœ…

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

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 0.16πŸ”΄ 1.50βœ… 1.74βœ… 2.01βœ… 1.99βœ… 1.49βœ… 1.50βœ… 2.33βœ… 2.41βœ… 1.91βœ… 3.43βœ… 1.73βœ… 2.74βœ… β€” 2.95βœ…
u8 2.13βœ… 0.20🟠 2.40βœ… 1.71βœ… 1.79βœ… 1.98βœ… 2.10βœ… 2.43βœ… 2.57βœ… 1.78βœ… 4.04βœ… 1.41βœ… 2.60βœ… β€” 3.03βœ…
i8 3.06βœ… 2.41βœ… 0.26🟠 1.91βœ… 1.73βœ… 2.29βœ… 1.98βœ… 2.30βœ… 2.45βœ… 1.72βœ… 3.93βœ… 1.77βœ… 2.53βœ… β€” 3.15βœ…
i16 3.33βœ… 4.04βœ… 3.46βœ… 1.50βœ… 1.97βœ… 1.95βœ… 2.16βœ… 2.31βœ… 2.43βœ… 1.67βœ… 3.85βœ… 2.09βœ… 2.47βœ… β€” 2.95βœ…
u16 3.02βœ… 2.65βœ… 2.69βœ… 2.15βœ… 1.36βœ… 1.90βœ… 2.08βœ… 2.38βœ… 2.43βœ… 1.06βœ… 3.75βœ… 2.10βœ… 2.45βœ… β€” 2.85βœ…
i32 1.85βœ… 1.27βœ… 1.20βœ… 1.50βœ… 1.54βœ… 1.73βœ… 2.25βœ… 2.17βœ… 2.47βœ… 1.52βœ… 3.64βœ… 1.74βœ… 2.36βœ… β€” 2.48βœ…
u32 1.76βœ… 1.07βœ… 1.12βœ… 1.50βœ… 1.63βœ… 2.35βœ… 1.69βœ… 2.57βœ… 2.36βœ… 1.44βœ… 3.80βœ… 1.52βœ… 2.35βœ… β€” 2.73βœ…
i64 1.10βœ… 1.10βœ… 0.94🟑 1.24βœ… 1.31βœ… 1.77βœ… 1.79βœ… 2.09βœ… 2.77βœ… 1.39βœ… 1.74βœ… 1.63βœ… 2.52βœ… β€” 2.42βœ…
u64 1.29βœ… 0.90🟑 0.99🟑 1.30βœ… 1.25βœ… 1.80βœ… 1.91βœ… 2.51βœ… 2.25βœ… 1.15βœ… 1.58βœ… 1.19βœ… 1.67βœ… β€” 2.42βœ…
char 2.05βœ… 1.96βœ… 2.13βœ… 1.59βœ… 0.98🟑 1.70βœ… 1.66βœ… 2.32βœ… 2.29βœ… 1.31βœ… 3.67βœ… 1.46βœ… 2.24βœ… β€” 2.74βœ…
f16 4.79βœ… 4.88βœ… 5.20βœ… 4.18βœ… 3.90βœ… 3.79βœ… 1.99βœ… 3.33βœ… 0.97🟑 4.24βœ… 1.27βœ… 1.16βœ… 0.93🟑 β€” 1.61βœ…
f32 3.23βœ… 2.00βœ… 2.00βœ… 1.54βœ… 1.71βœ… 1.92βœ… 1.34βœ… 0.87🟑 0.86🟑 1.67βœ… 3.61βœ… 1.76βœ… 2.38βœ… β€” 2.35βœ…
f64 1.90βœ… 0.84🟑 0.90🟑 1.33βœ… 1.42βœ… 1.64βœ… 1.60βœ… 0.90🟑 0.92🟑 1.35βœ… 1.05βœ… 1.73βœ… 2.13βœ… β€” 2.43βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 0.96🟑 0.98🟑 1.00βœ… 1.04βœ… 1.02βœ… 1.58βœ… 1.20βœ… 0.92🟑 0.80🟑 1.04βœ… 1.41βœ… 1.26βœ… 1.40βœ… β€” 3.06βœ…

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

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 3.00βœ… 4.04βœ… 4.05βœ… 1.97βœ… 2.06βœ… 1.47βœ… 1.46βœ… 2.39βœ… 2.24βœ… 1.97βœ… 4.07βœ… 1.76βœ… 2.59βœ… β€” 3.12βœ…
u8 3.49βœ… 3.15βœ… 4.05βœ… 1.81βœ… 1.98βœ… 2.04βœ… 2.08βœ… 2.24βœ… 2.37βœ… 1.90βœ… 3.86βœ… 1.47βœ… 2.42βœ… β€” 3.03βœ…
i8 3.86βœ… 4.23βœ… 3.36βœ… 2.07βœ… 1.74βœ… 2.06βœ… 2.10βœ… 2.50βœ… 2.43βœ… 1.74βœ… 3.73βœ… 1.84βœ… 2.48βœ… β€” 3.08βœ…
i16 2.96βœ… 2.60βœ… 3.13βœ… 1.43βœ… 2.05βœ… 2.03βœ… 2.03βœ… 2.34βœ… 2.30βœ… 1.99βœ… 3.84βœ… 2.23βœ… 2.53βœ… β€” 2.61βœ…
u16 2.98βœ… 3.38βœ… 3.06βœ… 2.27βœ… 1.52βœ… 1.97βœ… 2.26βœ… 2.50βœ… 2.44βœ… 1.27βœ… 3.50βœ… 1.67βœ… 2.47βœ… β€” 2.76βœ…
i32 1.74βœ… 1.14βœ… 1.06βœ… 1.44βœ… 1.66βœ… 1.71βœ… 2.29βœ… 2.35βœ… 2.42βœ… 1.80βœ… 3.74βœ… 1.75βœ… 2.73βœ… β€” 2.77βœ…
u32 1.84βœ… 1.10βœ… 1.18βœ… 1.52βœ… 1.53βœ… 2.06βœ… 1.78βœ… 2.52βœ… 2.32βœ… 1.60βœ… 3.66βœ… 1.49βœ… 2.27βœ… β€” 2.72βœ…
i64 1.21βœ… 1.11βœ… 0.95🟑 1.17βœ… 1.26βœ… 1.71βœ… 1.88βœ… 2.03βœ… 2.58βœ… 1.37βœ… 1.84βœ… 1.73βœ… 2.28βœ… β€” 2.68βœ…
u64 1.13βœ… 0.92🟑 0.92🟑 1.24βœ… 1.21βœ… 1.72βœ… 1.78βœ… 2.81βœ… 2.11βœ… 1.34βœ… 2.45βœ… 1.18βœ… 1.86βœ… β€” 2.37βœ…
char 2.14βœ… 1.99βœ… 1.91βœ… 1.93βœ… 1.34βœ… 1.61βœ… 1.61βœ… 2.42βœ… 2.37βœ… 1.34βœ… 3.61βœ… 1.50βœ… 2.19βœ… β€” 2.72βœ…
f16 4.92βœ… 5.47βœ… 6.19βœ… 4.06βœ… 4.35βœ… 3.67βœ… 2.04βœ… 3.25βœ… 1.13βœ… 4.29βœ… 1.34βœ… 2.29βœ… 0.97🟑 β€” 1.69βœ…
f32 3.21βœ… 2.20βœ… 2.17βœ… 1.69βœ… 1.72βœ… 1.87βœ… 1.38βœ… 0.85🟑 0.88🟑 1.64βœ… 3.68βœ… 1.71βœ… 2.10βœ… β€” 2.28βœ…
f64 1.87βœ… 0.99🟑 1.54βœ… 1.30βœ… 1.40βœ… 1.77βœ… 1.50βœ… 0.88🟑 0.88🟑 1.46βœ… 1.61βœ… 1.68βœ… 1.97βœ… β€” 2.44βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 0.93🟑 0.85🟑 0.86🟑 1.03βœ… 1.14βœ… 1.47βœ… 1.35βœ… 0.87🟑 0.82🟑 1.08βœ… 1.47βœ… 1.45βœ… 1.46βœ… β€” 2.98βœ…

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

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 0.18πŸ”΄ 2.40βœ… 3.93βœ… 2.10βœ… 2.10βœ… 1.52βœ… 1.47βœ… 2.49βœ… 2.41βœ… 1.98βœ… 4.20βœ… 1.74βœ… 2.57βœ… β€” 3.21βœ…
u8 2.17βœ… 0.16πŸ”΄ 2.00βœ… 1.94βœ… 1.88βœ… 1.96βœ… 2.15βœ… 2.26βœ… 2.66βœ… 1.72βœ… 3.89βœ… 1.49βœ… 2.54βœ… β€” 2.75βœ…
i8 2.29βœ… 3.03βœ… 0.20🟠 2.03βœ… 1.63βœ… 2.00βœ… 2.20βœ… 2.43βœ… 2.29βœ… 1.76βœ… 3.61βœ… 1.68βœ… 1.79βœ… β€” 2.76βœ…
i16 2.45βœ… 3.08βœ… 2.89βœ… 1.35βœ… 2.02βœ… 2.03βœ… 1.90βœ… 2.45βœ… 2.34βœ… 2.04βœ… 3.88βœ… 2.02βœ… 2.36βœ… β€” 2.80βœ…
u16 2.32βœ… 2.26βœ… 3.09βœ… 2.09βœ… 1.78βœ… 1.83βœ… 2.02βœ… 2.46βœ… 2.52βœ… 1.49βœ… 3.92βœ… 2.03βœ… 2.54βœ… β€” 2.87βœ…
i32 1.90βœ… 1.23βœ… 1.27βœ… 1.58βœ… 1.56βœ… 1.81βœ… 2.16βœ… 2.42βœ… 2.41βœ… 1.55βœ… 3.89βœ… 1.84βœ… 2.24βœ… β€” 2.82βœ…
u32 2.00βœ… 1.12βœ… 1.04βœ… 1.57βœ… 1.56βœ… 2.43βœ… 1.73βœ… 2.32βœ… 2.17βœ… 1.55βœ… 3.87βœ… 1.58βœ… 2.38βœ… β€” 2.75βœ…
i64 1.18βœ… 1.15βœ… 1.00🟑 1.18βœ… 1.28βœ… 1.88βœ… 1.79βœ… 2.08βœ… 2.65βœ… 1.42βœ… 1.85βœ… 1.67βœ… 2.31βœ… β€” 2.64βœ…
u64 1.18βœ… 0.93🟑 0.95🟑 1.14βœ… 1.26βœ… 1.73βœ… 1.71βœ… 2.68βœ… 2.11βœ… 1.40βœ… 2.51βœ… 1.20βœ… 1.74βœ… β€” 2.35βœ…
char 2.45βœ… 2.21βœ… 2.31βœ… 1.87βœ… 1.26βœ… 1.72βœ… 1.59βœ… 2.24βœ… 2.45βœ… 1.29βœ… 3.58βœ… 1.57βœ… 2.49βœ… β€” 2.28βœ…
f16 5.96βœ… 6.20βœ… 6.19βœ… 4.19βœ… 4.48βœ… 4.05βœ… 2.09βœ… 3.27βœ… 1.15βœ… 4.22βœ… 1.22βœ… 2.84βœ… 0.99🟑 β€” 1.66βœ…
f32 3.16βœ… 2.19βœ… 2.28βœ… 1.73βœ… 1.71βœ… 1.87βœ… 1.40βœ… 0.84🟑 0.87🟑 1.66βœ… 3.80βœ… 1.82βœ… 2.48βœ… β€” 2.30βœ…
f64 2.29βœ… 1.22βœ… 1.27βœ… 1.47βœ… 1.52βœ… 1.69βœ… 1.52βœ… 0.87🟑 0.90🟑 1.43βœ… 1.64βœ… 1.80βœ… 2.15βœ… β€” 2.46βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 1.00βœ… 0.92🟑 0.89🟑 1.14βœ… 1.14βœ… 1.46βœ… 1.19βœ… 0.89🟑 0.86🟑 1.16βœ… 1.50βœ… 1.29βœ… 1.45βœ… β€” 3.29βœ…

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

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 0.20πŸ”΄ 2.59βœ… 3.31βœ… 2.05βœ… 2.00βœ… 1.50βœ… 1.58βœ… 2.39βœ… 2.28βœ… 1.95βœ… 3.98βœ… 1.87βœ… 2.42βœ… β€” 3.28βœ…
u8 2.61βœ… 0.22🟠 2.86βœ… 1.96βœ… 1.85βœ… 2.02βœ… 1.98βœ… 2.25βœ… 2.37βœ… 1.95βœ… 3.73βœ… 1.50βœ… 2.53βœ… β€” 3.04βœ…
i8 2.69βœ… 3.27βœ… 0.29🟠 1.88βœ… 1.77βœ… 2.12βœ… 1.94βœ… 2.37βœ… 2.49βœ… 1.67βœ… 3.83βœ… 1.60βœ… 2.44βœ… β€” 2.79βœ…
i16 2.61βœ… 2.75βœ… 2.62βœ… 1.47βœ… 1.56βœ… 2.09βœ… 1.91βœ… 2.22βœ… 2.38βœ… 1.66βœ… 3.56βœ… 2.05βœ… 2.08βœ… β€” 2.36βœ…
u16 2.51βœ… 3.01βœ… 2.99βœ… 1.60βœ… 1.40βœ… 2.05βœ… 2.10βœ… 2.55βœ… 2.25βœ… 1.54βœ… 3.70βœ… 2.13βœ… 2.72βœ… β€” 2.72βœ…
i32 1.72βœ… 2.09βœ… 2.42βœ… 1.58βœ… 1.63βœ… 1.85βœ… 1.87βœ… 2.35βœ… 2.39βœ… 1.50βœ… 3.68βœ… 1.62βœ… 2.37βœ… β€” 2.87βœ…
u32 1.91βœ… 2.15βœ… 2.19βœ… 1.55βœ… 1.47βœ… 1.88βœ… 1.99βœ… 2.01βœ… 2.13βœ… 1.62βœ… 3.67βœ… 1.55βœ… 2.22βœ… β€” 2.63βœ…
i64 1.13βœ… 1.27βœ… 1.26βœ… 1.36βœ… 1.38βœ… 1.80βœ… 1.88βœ… 2.64βœ… 2.52βœ… 1.29βœ… 1.81βœ… 1.63βœ… 2.23βœ… β€” 2.59βœ…
u64 1.21βœ… 1.25βœ… 1.27βœ… 1.30βœ… 1.25βœ… 1.76βœ… 1.83βœ… 2.20βœ… 2.68βœ… 1.31βœ… 2.32βœ… 1.00🟑 1.63βœ… β€” 2.43βœ…
char 1.45βœ… 2.45βœ… 2.83βœ… 1.61βœ… 1.48βœ… 1.64βœ… 1.68βœ… 2.03βœ… 2.39βœ… 1.40βœ… 3.38βœ… 1.49βœ… 2.17βœ… β€” 2.92βœ…
f16 5.03βœ… 5.33βœ… 5.42βœ… 3.92βœ… 3.92βœ… 3.57βœ… 2.01βœ… 3.10βœ… 1.11βœ… 4.00βœ… 1.37βœ… 2.81βœ… 1.01βœ… β€” 1.61βœ…
f32 3.18βœ… 2.29βœ… 2.34βœ… 1.71βœ… 1.61βœ… 1.87βœ… 1.37βœ… 0.84🟑 0.90🟑 1.54βœ… 3.54βœ… 1.82βœ… 2.32βœ… β€” 2.36βœ…
f64 1.82βœ… 1.17βœ… 1.18βœ… 1.36βœ… 1.33βœ… 0.80🟑 1.34βœ… 0.86🟑 0.89🟑 1.50βœ… 1.58βœ… 1.85βœ… 2.30βœ… β€” 2.51βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 0.97🟑 0.93🟑 0.92🟑 1.15βœ… 0.99🟑 1.47βœ… 1.08βœ… 0.86🟑 0.77🟑 1.07βœ… 1.44βœ… 1.26βœ… 1.55βœ… β€” 2.15βœ…

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

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 0.24🟠 3.08βœ… 3.39βœ… 1.93βœ… 2.01βœ… 1.50βœ… 1.55βœ… 2.17βœ… 2.33βœ… 1.98βœ… 3.85βœ… 1.67βœ… 2.62βœ… β€” 2.97βœ…
u8 3.02βœ… 0.23🟠 2.94βœ… 1.80βœ… 1.74βœ… 2.00βœ… 2.04βœ… 2.24βœ… 2.33βœ… 1.76βœ… 3.81βœ… 1.49βœ… 2.53βœ… β€” 3.11βœ…
i8 2.84βœ… 2.66βœ… 0.24🟠 1.88βœ… 1.70βœ… 2.05βœ… 2.07βœ… 2.53βœ… 2.57βœ… 1.88βœ… 3.79βœ… 1.65βœ… 2.41βœ… β€” 3.07βœ…
i16 3.40βœ… 2.43βœ… 2.21βœ… 1.46βœ… 1.76βœ… 1.92βœ… 2.07βœ… 2.21βœ… 2.23βœ… 1.73βœ… 3.49βœ… 2.14βœ… 2.19βœ… β€” 2.63βœ…
u16 2.52βœ… 2.65βœ… 3.08βœ… 1.60βœ… 1.44βœ… 2.04βœ… 2.07βœ… 2.60βœ… 2.42βœ… 1.44βœ… 3.65βœ… 2.03βœ… 2.49βœ… β€” 2.83βœ…
i32 2.08βœ… 2.13βœ… 2.38βœ… 1.59βœ… 1.58βœ… 1.99βœ… 1.97βœ… 2.34βœ… 2.27βœ… 1.58βœ… 3.60βœ… 1.69βœ… 2.39βœ… β€” 2.67βœ…
u32 1.71βœ… 2.19βœ… 2.32βœ… 1.59βœ… 1.59βœ… 1.98βœ… 1.93βœ… 2.51βœ… 2.09βœ… 1.53βœ… 3.72βœ… 1.54βœ… 2.17βœ… β€” 2.77βœ…
i64 1.18βœ… 1.26βœ… 1.25βœ… 1.36βœ… 1.38βœ… 1.82βœ… 1.84βœ… 2.39βœ… 2.23βœ… 1.44βœ… 1.79βœ… 1.55βœ… 2.23βœ… β€” 2.36βœ…
u64 1.20βœ… 1.17βœ… 1.21βœ… 1.43βœ… 1.37βœ… 1.87βœ… 1.84βœ… 2.20βœ… 2.51βœ… 1.43βœ… 2.33βœ… 0.99🟑 1.48βœ… β€” 2.42βœ…
char 2.22βœ… 2.50βœ… 2.15βœ… 1.59βœ… 1.33βœ… 1.71βœ… 1.57βœ… 2.35βœ… 2.30βœ… 1.44βœ… 3.40βœ… 1.49βœ… 2.29βœ… β€” 2.68βœ…
f16 5.36βœ… 4.77βœ… 4.63βœ… 3.79βœ… 4.08βœ… 3.86βœ… 2.03βœ… 3.19βœ… 1.07βœ… 3.86βœ… 1.38βœ… 2.80βœ… 0.98🟑 β€” 1.62βœ…
f32 3.48βœ… 2.27βœ… 2.31βœ… 1.60βœ… 1.54βœ… 2.01βœ… 1.37βœ… 0.87🟑 0.88🟑 1.73βœ… 3.57βœ… 1.84βœ… 2.23βœ… β€” 2.24βœ…
f64 1.97βœ… 1.25βœ… 1.28βœ… 1.48βœ… 1.55βœ… 1.77βœ… 1.50βœ… 0.87🟑 0.91🟑 1.64βœ… 1.60βœ… 1.87βœ… 2.36βœ… β€” 2.46βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 0.83🟑 0.77🟑 0.93🟑 1.15βœ… 1.13βœ… 1.53βœ… 1.14βœ… 0.90🟑 0.81🟑 1.08βœ… 1.42βœ… 1.27βœ… 1.38βœ… β€” 2.33βœ…

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

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 2.32βœ… 5.20βœ… 4.90βœ… 2.08βœ… 2.28βœ… 1.53βœ… 1.53βœ… 2.33βœ… 2.49βœ… 2.29βœ… 2.86βœ… 1.92βœ… 2.42βœ… β€” 2.91βœ…
u8 1.20βœ… 2.65βœ… 3.15βœ… 1.96βœ… 1.85βœ… 1.90βœ… 1.84βœ… 2.21βœ… 2.35βœ… 1.86βœ… 2.55βœ… 1.48βœ… 2.46βœ… β€” 2.98βœ…
i8 1.20βœ… 2.97βœ… 3.04βœ… 1.84βœ… 1.94βœ… 1.85βœ… 1.83βœ… 2.32βœ… 2.68βœ… 1.93βœ… 2.64βœ… 1.63βœ… 2.13βœ… β€” 2.96βœ…
i16 4.16βœ… 3.05βœ… 2.48βœ… 1.72βœ… 1.79βœ… 1.83βœ… 1.77βœ… 2.44βœ… 2.57βœ… 1.89βœ… 2.00βœ… 1.67βœ… 2.46βœ… β€” 2.72βœ…
u16 3.53βœ… 3.04βœ… 2.95βœ… 1.70βœ… 1.68βœ… 1.74βœ… 1.69βœ… 2.39βœ… 2.23βœ… 1.70βœ… 2.04βœ… 1.46βœ… 2.56βœ… β€” 2.76βœ…
i32 1.96βœ… 1.93βœ… 1.58βœ… 1.69βœ… 1.76βœ… 1.70βœ… 1.64βœ… 2.66βœ… 2.48βœ… 1.71βœ… 2.01βœ… 1.71βœ… 2.29βœ… β€” 2.73βœ…
u32 2.01βœ… 1.57βœ… 1.63βœ… 1.66βœ… 1.69βœ… 1.65βœ… 1.73βœ… 2.28βœ… 2.30βœ… 1.76βœ… 2.07βœ… 1.48βœ… 2.35βœ… β€” 2.81βœ…
i64 1.23βœ… 0.95🟑 0.95🟑 1.33βœ… 1.39βœ… 1.85βœ… 1.77βœ… 2.40βœ… 2.29βœ… 1.31βœ… 1.30βœ… 1.59βœ… 2.56βœ… β€” 2.54βœ…
u64 1.25βœ… 1.05βœ… 0.92🟑 1.33βœ… 1.36βœ… 1.60βœ… 1.75βœ… 2.56βœ… 2.42βœ… 1.37βœ… 1.64βœ… 1.07βœ… 1.61βœ… β€” 2.35βœ…
char 4.04βœ… 2.53βœ… 2.58βœ… 1.62βœ… 1.65βœ… 1.70βœ… 1.69βœ… 2.12βœ… 2.26βœ… 1.66βœ… 1.94βœ… 1.56βœ… 2.41βœ… β€” 2.70βœ…
f16 5.66βœ… 1.74βœ… 1.75βœ… 1.80βœ… 1.81βœ… 2.18βœ… 1.31βœ… 2.04βœ… 0.90🟑 1.79βœ… 1.77βœ… 1.57βœ… 0.99🟑 β€” 1.58βœ…
f32 2.29βœ… 1.70βœ… 1.66βœ… 1.77βœ… 1.82βœ… 1.93βœ… 1.10βœ… 0.88🟑 0.82🟑 1.78βœ… 1.96βœ… 1.41βœ… 1.19βœ… β€” 2.21βœ…
f64 1.49βœ… 1.08βœ… 1.10βœ… 1.32βœ… 1.45βœ… 1.92βœ… 1.13βœ… 0.85🟑 0.82🟑 1.36βœ… 1.15βœ… 1.45βœ… 2.37βœ… β€” 2.39βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 0.87🟑 0.89🟑 0.97🟑 1.22βœ… 1.08βœ… 1.51βœ… 0.98🟑 0.86🟑 0.79🟑 1.16βœ… 0.97🟑 1.10βœ… 1.53βœ… β€” 2.07βœ…

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

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 1.71βœ… 3.24βœ… 3.65βœ… 1.76βœ… 1.96βœ… 1.22βœ… 1.28βœ… 1.88βœ… 1.77βœ… 2.21βœ… 2.49βœ… 1.44βœ… 1.86βœ… β€” 2.43βœ…
u8 0.98🟑 2.62βœ… 2.02βœ… 1.71βœ… 1.33βœ… 1.41βœ… 1.37βœ… 2.09βœ… 2.00βœ… 1.80βœ… 2.38βœ… 1.18βœ… 2.00βœ… β€” 2.60βœ…
i8 1.03βœ… 2.14βœ… 1.85βœ… 1.44βœ… 1.51βœ… 1.35βœ… 1.41βœ… 2.10βœ… 2.06βœ… 1.44βœ… 2.35βœ… 1.34βœ… 1.93βœ… β€” 2.58βœ…
i16 2.48βœ… 1.61βœ… 1.68βœ… 1.65βœ… 1.77βœ… 1.43βœ… 1.33βœ… 1.93βœ… 1.92βœ… 1.62βœ… 1.96βœ… 1.34βœ… 1.98βœ… β€” 2.37βœ…
u16 2.36βœ… 1.76βœ… 2.09βœ… 1.40βœ… 1.28βœ… 1.36βœ… 1.25βœ… 2.01βœ… 1.82βœ… 1.31βœ… 1.90βœ… 1.18βœ… 1.88βœ… β€” 2.45βœ…
i32 1.77βœ… 1.15βœ… 1.40βœ… 1.15βœ… 1.18βœ… 1.23βœ… 1.17βœ… 1.89βœ… 1.95βœ… 1.18βœ… 1.89βœ… 1.19βœ… 2.05βœ… β€” 2.53βœ…
u32 1.77βœ… 1.41βœ… 1.46βœ… 1.27βœ… 1.25βœ… 1.28βœ… 1.23βœ… 1.90βœ… 1.83βœ… 1.22βœ… 1.88βœ… 1.20βœ… 2.09βœ… β€” 2.37βœ…
i64 1.16βœ… 1.00🟑 1.00βœ… 0.93🟑 0.94🟑 1.25βœ… 1.28βœ… 1.75βœ… 1.65βœ… 1.01βœ… 1.18βœ… 1.34βœ… 1.82βœ… β€” 2.35βœ…
u64 1.13βœ… 0.97🟑 1.01βœ… 0.86🟑 0.98🟑 1.26βœ… 1.33βœ… 1.66βœ… 1.78βœ… 0.99🟑 1.44βœ… 0.92🟑 1.43βœ… β€” 2.27βœ…
char 2.14βœ… 1.77βœ… 1.99βœ… 1.35βœ… 1.16βœ… 1.32βœ… 1.40βœ… 1.81βœ… 2.05βœ… 1.30βœ… 1.79βœ… 1.14βœ… 1.83βœ… β€” 2.19βœ…
f16 4.00βœ… 1.51βœ… 1.50βœ… 1.60βœ… 1.60βœ… 1.77βœ… 1.14βœ… 1.95βœ… 0.90🟑 1.61βœ… 1.42βœ… 1.32βœ… 0.97🟑 β€” 1.46βœ…
f32 1.61βœ… 1.05βœ… 1.35βœ… 1.16βœ… 1.16βœ… 1.35βœ… 0.78🟑 0.91🟑 0.80🟑 1.32βœ… 1.76βœ… 1.15βœ… 1.26βœ… β€” 2.34βœ…
f64 1.21βœ… 0.83🟑 1.13βœ… 0.94🟑 0.96🟑 1.28βœ… 1.03βœ… 0.96🟑 0.81🟑 0.96🟑 1.06βœ… 1.21βœ… 1.73βœ… β€” 2.23βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 0.82🟑 1.17βœ… 0.95🟑 0.91🟑 0.81🟑 1.14βœ… 0.87🟑 1.02βœ… 0.75🟑 0.82🟑 0.84🟑 1.11βœ… 1.43βœ… β€” 1.56βœ…

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

src\dst bool u8 i8 i16 u16 i32 u32 i64 u64 char f16 f32 f64 dec c128
bool 0.22🟠 4.09βœ… 4.15βœ… 2.28βœ… 2.13βœ… 1.54βœ… 1.61βœ… 2.33βœ… 2.55βœ… 2.33βœ… 4.19βœ… 1.92βœ… 2.41βœ… β€” 3.36βœ…
u8 4.89βœ… 0.23🟠 3.71βœ… 1.97βœ… 1.76βœ… 2.07βœ… 2.20βœ… 2.30βœ… 2.41βœ… 1.76βœ… 3.81βœ… 2.39βœ… 2.29βœ… β€” 3.21βœ…
i8 3.86βœ… 2.95βœ… 0.18πŸ”΄ 1.87βœ… 1.91βœ… 2.07βœ… 2.38βœ… 2.28βœ… 2.59βœ… 1.99βœ… 3.63βœ… 2.08βœ… 2.41βœ… β€” 2.92βœ…
i16 5.51βœ… 4.13βœ… 3.91βœ… 1.76βœ… 1.71βœ… 1.97βœ… 2.15βœ… 2.39βœ… 2.39βœ… 1.81βœ… 3.68βœ… 2.37βœ… 2.53βœ… β€” 2.96βœ…
u16 4.78βœ… 4.90βœ… 3.58βœ… 1.70βœ… 1.58βœ… 1.99βœ… 1.95βœ… 2.14βœ… 2.47βœ… 1.85βœ… 3.76βœ… 2.16βœ… 2.11βœ… β€” 2.90βœ…
i32 3.52βœ… 3.21βœ… 2.47βœ… 1.82βœ… 1.87βœ… 2.26βœ… 2.04βœ… 2.36βœ… 2.40βœ… 1.69βœ… 3.80βœ… 1.99βœ… 2.12βœ… β€” 2.87βœ…
u32 4.98βœ… 3.15βœ… 2.88βœ… 1.71βœ… 1.95βœ… 1.92βœ… 2.23βœ… 2.22βœ… 2.17βœ… 1.92βœ… 3.67βœ… 2.34βœ… 2.28βœ… β€” 2.78βœ…
i64 2.38βœ… 2.10βœ… 2.21βœ… 1.79βœ… 1.75βœ… 2.08βœ… 2.02βœ… 2.49βœ… 2.38βœ… 1.86βœ… 1.81βœ… 2.01βœ… 2.30βœ… β€” 2.74βœ…
u64 2.66βœ… 2.27βœ… 2.14βœ… 1.64βœ… 1.75βœ… 2.13βœ… 2.05βœ… 2.20βœ… 2.88βœ… 1.72βœ… 2.37βœ… 2.34βœ… 2.34βœ… β€” 2.58βœ…
char 4.06βœ… 3.83βœ… 2.84βœ… 1.64βœ… 1.56βœ… 1.73βœ… 1.77βœ… 2.42βœ… 2.08βœ… 1.78βœ… 3.52βœ… 1.59βœ… 2.27βœ… β€” 2.65βœ…
f16 5.14βœ… 5.61βœ… 5.48βœ… 4.15βœ… 3.79βœ… 3.96βœ… 2.10βœ… 2.90βœ… 1.11βœ… 3.91βœ… 1.56βœ… 2.92βœ… 0.99🟑 β€” 1.60βœ…
f32 5.24βœ… 2.78βœ… 3.44βœ… 1.83βœ… 1.80βœ… 2.13βœ… 1.45βœ… 2.38βœ… 0.87🟑 2.05βœ… 3.59βœ… 2.29βœ… 2.39βœ… β€” 2.37βœ…
f64 2.77βœ… 2.12βœ… 1.89βœ… 1.85βœ… 1.88βœ… 2.00βœ… 1.54βœ… 2.30βœ… 0.91🟑 1.85βœ… 1.59βœ… 2.07βœ… 2.65βœ… β€” 2.62βœ…
dec β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
c128 1.06βœ… 1.04βœ… 1.08βœ… 1.42βœ… 1.38βœ… 1.93βœ… 1.38βœ… 0.88🟑 0.79🟑 1.36βœ… 1.51βœ… 1.61βœ… 2.19βœ… β€” 2.93βœ…

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

key NumSharp ms NumPy ms ratio
bool|C|bool 0.0930 0.0146 0.16 πŸ”΄
u8|T|u8 0.0942 0.0150 0.16 πŸ”΄
bool|T|bool 0.0836 0.0148 0.18 πŸ”΄
i8|bcast|i8 0.0741 0.0133 0.18 πŸ”΄
bool|sliced|bool 0.0866 0.0172 0.20 πŸ”΄
i8|T|i8 0.0753 0.0153 0.20 🟠
u8|C|u8 0.0719 0.0147 0.20 🟠
u8|sliced|u8 0.0782 0.0170 0.22 🟠
bool|bcast|bool 0.0601 0.0134 0.22 🟠
u8|bcast|u8 0.0580 0.0133 0.23 🟠
u8|negrow|u8 0.0754 0.0174 0.23 🟠
bool|negrow|bool 0.0731 0.0172 0.24 🟠
i8|negrow|i8 0.0732 0.0175 0.24 🟠
i8|C|i8 0.0556 0.0146 0.26 🟠
i8|sliced|i8 0.0596 0.0173 0.29 🟠
c128|strided|u64 1.0409 0.7793 0.75 🟑
c128|sliced|u64 1.8015 1.3784 0.77 🟑
c128|negrow|u8 0.4046 0.3127 0.77 🟑
f32|strided|u32 0.4345 0.3399 0.78 🟑
c128|negcol|u64 1.7175 1.3574 0.79 🟑
c128|bcast|u64 1.5889 1.2598 0.79 🟑
f32|strided|u64 0.8030 0.6402 0.80 🟑
f64|sliced|i32 0.9055 0.7249 0.80 🟑
c128|C|u64 1.6541 1.3315 0.80 🟑
c128|negrow|u64 1.7336 1.4027 0.81 🟑
f64|strided|u64 0.8082 0.6566 0.81 🟑
c128|strided|u16 0.3140 0.2553 0.81 🟑
f32|negcol|u64 1.5682 1.2821 0.82 🟑
c128|strided|bool 0.3447 0.2829 0.82 🟑
c128|F|u64 1.7086 1.4038 0.82 🟑
f64|negcol|u64 1.5536 1.2785 0.82 🟑
c128|strided|char 0.3088 0.2547 0.82 🟑
c128|negrow|bool 0.5430 0.4512 0.83 🟑
f64|strided|u8 0.1717 0.1430 0.83 🟑
f32|sliced|i64 1.4652 1.2288 0.84 🟑
c128|strided|f16 0.8931 0.7492 0.84 🟑
f64|C|u8 0.2835 0.2387 0.84 🟑
f32|T|i64 1.4811 1.2507 0.84 🟑
f32|F|i64 1.4574 1.2362 0.85 🟑
c128|F|u8 0.3452 0.2939 0.85 🟑
f64|negcol|i64 1.4715 1.2532 0.85 🟑
c128|T|u64 1.6769 1.4340 0.86 🟑
c128|sliced|i64 1.5784 1.3516 0.86 🟑
c128|F|i8 0.3486 0.2987 0.86 🟑
f32|C|u64 1.4853 1.2784 0.86 🟑
c128|negcol|i64 1.6269 1.4042 0.86 🟑
f64|sliced|i64 1.4984 1.2939 0.86 🟑
u64|strided|i16 0.1644 0.1420 0.86 🟑
f32|T|u64 1.4626 1.2668 0.87 🟑
c128|strided|u32 0.5487 0.4762 0.87 🟑
f32|negrow|i64 1.4789 1.2839 0.87 🟑
f64|T|i64 1.4482 1.2586 0.87 🟑
f32|C|i64 1.4536 1.2668 0.87 🟑
c128|F|i64 1.5922 1.3883 0.87 🟑
f32|bcast|u64 1.4674 1.2816 0.87 🟑
f64|negrow|i64 1.4964 1.3079 0.87 🟑
c128|negcol|bool 0.5195 0.4544 0.87 🟑
c128|bcast|i64 1.4481 1.2677 0.88 🟑
f32|F|u64 1.4896 1.3080 0.88 🟑
f32|negrow|u64 1.4970 1.3187 0.88 🟑
f64|F|i64 1.4520 1.2833 0.88 🟑
f32|negcol|i64 1.4142 1.2505 0.88 🟑
f64|F|u64 1.4627 1.2941 0.88 🟑
c128|T|i8 0.3269 0.2902 0.89 🟑
c128|T|i64 1.5379 1.3708 0.89 🟑
c128|negcol|u8 0.3712 0.3314 0.89 🟑
f64|sliced|u64 1.4568 1.3039 0.89 🟑
f32|sliced|u64 1.4956 1.3400 0.90 🟑
f64|T|u64 1.4262 1.2802 0.90 🟑
f16|negcol|u64 2.0974 1.8845 0.90 🟑
f64|C|i8 0.2900 0.2608 0.90 🟑
u64|C|u8 0.2218 0.2000 0.90 🟑
c128|negrow|i64 1.6017 1.4469 0.90 🟑
f16|strided|u64 1.0325 0.9327 0.90 🟑
f64|C|i64 1.4545 1.3151 0.90 🟑
f64|bcast|u64 1.4342 1.3050 0.91 🟑
f64|negrow|u64 1.4679 1.3358 0.91 🟑
c128|strided|i16 0.2931 0.2677 0.91 🟑
f32|strided|i64 0.7058 0.6456 0.91 🟑
u64|strided|f32 0.4321 0.3956 0.92 🟑
u64|F|i8 0.2140 0.1962 0.92 🟑
c128|sliced|i8 0.3210 0.2949 0.92 🟑
u64|negcol|i8 0.2499 0.2296 0.92 🟑
c128|T|u8 0.3420 0.3149 0.92 🟑
c128|C|i64 1.5669 1.4433 0.92 🟑
f64|C|u64 1.4336 1.3246 0.92 🟑
u64|F|u8 0.2147 0.1985 0.92 🟑
c128|F|bool 0.4381 0.4058 0.93 🟑
i64|strided|i16 0.1542 0.1434 0.93 🟑
f16|C|f64 1.5849 1.4744 0.93 🟑
c128|negrow|i8 0.3334 0.3111 0.93 🟑
u64|T|u8 0.2141 0.1998 0.93 🟑
c128|sliced|u8 0.3155 0.2949 0.93 🟑
i64|C|i8 0.2113 0.1976 0.94 🟑
i64|strided|u16 0.1507 0.1417 0.94 🟑
f64|strided|i16 0.1653 0.1562 0.94 🟑
u64|T|i8 0.2094 0.1981 0.95 🟑
c128|strided|i8 0.2675 0.2533 0.95 🟑
i64|negcol|u8 0.2486 0.2356 0.95 🟑
i64|F|i8 0.2086 0.1983 0.95 🟑
i64|negcol|i8 0.2551 0.2430 0.95 🟑
c128|C|bool 0.4338 0.4158 0.96 🟑
f64|strided|u16 0.1591 0.1527 0.96 🟑
f64|strided|char 0.1576 0.1517 0.96 🟑
f64|strided|i64 0.7156 0.6903 0.96 🟑
f16|strided|f64 0.7580 0.7321 0.97 🟑
u64|strided|u8 0.1434 0.1386 0.97 🟑
c128|negcol|i8 0.3582 0.3466 0.97 🟑
c128|sliced|bool 0.4285 0.4147 0.97 🟑
c128|negcol|f16 1.8312 1.7743 0.97 🟑
f16|F|f64 1.4863 1.4453 0.97 🟑
f16|C|u64 1.8897 1.8418 0.97 🟑
c128|C|u8 0.3243 0.3163 0.98 🟑
f16|negrow|f64 1.5172 1.4849 0.98 🟑
u8|strided|bool 0.1541 0.1513 0.98 🟑
c128|negcol|u32 0.7951 0.7816 0.98 🟑
char|C|u16 0.2561 0.2517 0.98 🟑
u64|strided|u16 0.1497 0.1474 0.98 🟑
f64|F|u8 0.2394 0.2366 0.99 🟑
f16|T|f64 1.4960 1.4799 0.99 🟑
u64|negrow|f32 0.7876 0.7794 0.99 🟑
u64|C|i8 0.2056 0.2036 0.99 🟑
c128|sliced|u16 0.5149 0.5101 0.99 🟑
u64|strided|char 0.1500 0.1490 0.99 🟑
f16|bcast|f64 1.4862 1.4782 0.99 🟑
f16|negcol|f64 1.5169 1.5088 0.99 🟑
i64|strided|u8 0.1367 0.1361 1.00 🟑
i64|T|i8 0.2063 0.2055 1.00 🟑
u64|sliced|f32 0.7792 0.7791 1.00 🟑

1568 comparable cells (1800 NumSharp rows; 129 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    4.48 ms   unfused    6.97 ms   (1.56x)
  (a-b)/(a+b) fused    3.26 ms   unfused   13.54 ms   (4.16x)
  sum(a*b)    fused    2.44 ms   unfused    3.90 ms   (1.60x)
  sum(af*bf)  fused    1.30 ms   unfused    1.68 ms   (1.29x)  [f32]
  a*b+c out=  fused    3.77 ms   [1-pass fused-into-out]
  i4*2+f8     fused    2.93 ms   unfused    4.18 ms   (1.43x)

  a*b+c across operand layouts (2-D 2000x2000, all 3 operands same layout):
    [C      ] fused    3.68 ms   unfused    6.43 ms   (1.75x)
    [F      ] fused    3.60 ms   unfused    6.67 ms   (1.85x)
    [T      ] fused    3.67 ms   unfused    6.37 ms   (1.74x)
    [strided] fused    3.49 ms   unfused    4.75 ms   (1.36x)
    [bcast  ] fused    1.11 ms   unfused    3.99 ms   (3.60x)

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

numpy 2.4.2, 4M float64, best of 9:
  a*b+c         12.93 ms
  (a-b)/(a+b)   19.64 ms
  sum(a*b)       8.45 ms
  sum(af*bf)     4.19 ms  [f32]
  a*b+c out=     4.96 ms  [two-pass with out=]
  i4*2+f8        9.99 ms
  a*b+c across operand layouts (2-D 2000x2000, unfused):
    [C      ]   12.87 ms
    [F      ]   12.76 ms
    [T      ]   12.84 ms
    [strided]    7.87 ms
    [bcast  ]   12.36 ms