n = 2 10^6; a = RandomReal[{0, 1}, {n}]; k = UnitStep[# - n/4 - 1]~BitAnd~UnitStep[3 n/4 - #] &@Range[n]; k2 = With[{n = n}, Compile[x, n/4 + 1 <= x <= 3 n/4 // Not // Boole, RuntimeAttributes -> Listable]]@Range[n]; r1 = (2 a + 3) BitXor[k, 1] // Hash // AbsoluteTiming r2 = (2 a + 3) k2 // Hash // AbsoluteTiming >{0.232013, 1123183045} >{0.189011, 1123183045} n = 100; b = RandomReal[{0, 1}, {n, n, n}]; Table[If[i^2 + j^2 + k^2 <= n^2, 0., 2 b[[i, j, k]] + 3], {i, n}, {j, n}, {k, n}] // Hash // AbsoluteTiming cf =With[{n = n, i = A[[1]], j = A[[2]], k = A[[3]]}, Compile[{{A, _Real, 1}}, i^2 + j^2 + k^2 <= n^2 // Not // Boole, RuntimeAttributes -> Listable ]] // Quiet; ( k = cf@Outer[List, #, #, #] &@Range[n]; (2 b + 3) k // Hash ) // AbsoluteTiming ( k2 = With[{n = n},Table[UnitStep[n^2 - (i^2 + j^2 + k^2)], {i, n}, {j, n}, {k, n}]]; (2 b + 3) BitXor[k2, 1] // Hash ) // AbsoluteTiming ( k3 = With[{n = n, k = Range@n}, Table[UnitStep[n^2 - (i^2 + j^2 + k^2)], {i, n}, {j, n}]]; (2 b + 3) BitXor[k3, 1] // Hash ) // AbsoluteTiming >{6.528373, 92915038} >{0.344020, 92915038} >{0.282016, 92915038} >{0.169010, 92915038}