Table of Contents

Cast matrix — astype src→dst × layout × dtype (NumSharp vs NumPy 2.4.2)

Full astype(dst, copy:true) sweep over every src→dst dtype pair × 8 memory layouts at 1M elements, best-of-3. ratio = NumPy_ms / NumSharp_ms — >1.0 = NumSharp faster. ✅≥1.0 🟡≥0.5 🟠≥0.2 🔴<0.2 · = no NumPy counterpart (Decimal has no NumPy dtype).

Summary

  • 118 / 1568 comparable cells lag (<1.0); 1450 win (≥1.0).
  • 🔴 <0.2 — 0 cells.
  • 🟠 0.2–0.5 — 1 cells. Top: 1× * → bool
  • 🟡 0.5–1.0 — 117 cells. Top: 23× int → sub-word (narrow); 21× float/cplx → narrow-int (bool/u8/i8/i16/u16/char); 8× f16 → f64

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

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

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

Geomean by src dtype (all layouts×dst)

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

Geomean by dst dtype (all layouts×src)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Lagging cells (<1.0) — the worklist (118 cells)

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

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