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

  • 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).