array_size 256 1024 4096 1 CREATE TABLE array_distance_f32_{array_size} ( id UInt64, a Array(Float32), b Array(Float32) ) ENGINE = Memory CREATE TABLE array_distance_mixed_{array_size} ( id UInt64, u8 Array(UInt8), f64 Array(Float64) ) ENGINE = Memory INSERT INTO array_distance_f32_{array_size} SELECT number, arrayMap(i -> toFloat32((number * 9 + i) % 1000) * 0.001, range({array_size})), arrayMap(i -> toFloat32((number * 7 + i + 13) % 1000) * 0.001, range({array_size})) FROM numbers(100000) INSERT INTO array_distance_mixed_{array_size} SELECT number, arrayMap(i -> toUInt8((number + i) % 256), range({array_size})), arrayMap(i -> toFloat64((number * 3 + i) % 997) * 0.5, range({array_size})) FROM numbers(100000) SELECT sum(L1Distance(a, b)) FROM array_distance_f32_{array_size} SELECT sum(L2Distance(a, b)) FROM array_distance_f32_{array_size} SELECT sum(L2SquaredDistance(a, b)) FROM array_distance_f32_{array_size} SELECT sum(LinfDistance(a, b)) FROM array_distance_f32_{array_size} SELECT sum(cosineDistance(a, b)) FROM array_distance_f32_{array_size} WITH (SELECT a FROM array_distance_f32_{array_size} LIMIT 1) AS needle SELECT sum(L2Distance(needle, b)) FROM array_distance_f32_{array_size} WITH (SELECT a FROM array_distance_f32_{array_size} LIMIT 1) AS needle SELECT sum(cosineDistance(needle, b)) FROM array_distance_f32_{array_size} SELECT sum(L1Distance(u8, f64)) FROM array_distance_mixed_{array_size} SELECT sum(L2Distance(u8, f64)) FROM array_distance_mixed_{array_size} SELECT sum(cosineDistance(u8, f64)) FROM array_distance_mixed_{array_size} WITH (SELECT u8 FROM array_distance_mixed_{array_size} LIMIT 1) AS needle SELECT sum(L2Distance(needle, f64)) FROM array_distance_mixed_{array_size} DROP TABLE array_distance_f32_{array_size} DROP TABLE array_distance_mixed_{array_size}