Skip to content

Performance: CPU

The compiler is measured on twenty-two programs, each written four times: in the xc language, in Objective-C with ARC, in C++ and in Swift, doing the same work with the same algorithm and the same data. All are built with optimisation (-O3 for xc, Objective-C and C++, -O for Swift), every version prints a checksum, and a run only counts if all four checksums agree. Every program, in all four languages, is on the benchmark sources page; each benchmark’s name below links to its own. On x86-64 the C++ source is built twice, with clang and with GCC (g++ -O3), on both targets, so each carries a column for each C++ compiler.

Each figure is measured with the released 1.0 xcc on two machines:

  • arm64: an Apple MacBook Pro with an M3 Max (12 performance and 4 efficiency cores, a 40-core GPU, no SME matrix unit), macOS; Apple clang 17.0.0, GCC 16.2.0 and Swift 6.1.2;
  • x86-64: an AMD Ryzen 9 9955HX (16 cores, 32 threads), Linux; GCC 15.2.0, clang 21.1.8 and Swift 6.1.3; its CPU frequency governor is performance (amd-pstate-epp) for the run.

Every compiler is given the machine’s full instruction set: -march=native (x86-64) or -mcpu=native (arm64) for clang and GCC, -target-cpu native for Swift. xc needs no flag for that: with its default -msimd=auto, xcc builds each vectorised function for SSE2, AVX2 and AVX-512 and the program picks one when it starts. Nothing else is set: no link-time optimisation, no profile-guided build, no -ffast-math, on any side.

Every program runs on one thread: xc’s par blocks, and the loops xcc lifts into them, are held to one CPU thread for this suite, and the other languages’ builds use no threading. SIMD is used on every side.

Times are seconds for the timed region, the best of five runs, each run waiting until the machine is otherwise idle.

How much faster xc’s code runs than each language’s, as the geometric mean over eighteen of the twenty-two benchmarks:

xc compared witharm64 (Apple M3 Max)x86-64 (AMD Ryzen 9 9955HX)
Objective-C1.42× faster1.34× faster
C++ (clang)1.13× faster1.10× faster
C++ (GCC)1.29× faster1.30× faster
Swift1.47× faster1.56× faster

On both targets xc is ahead of all of them.

Four benchmarks are kept out of those means. xcc recognises the loop nest of matrix_mul_f32 and replaces it with a matrix kernel of its own, which makes xc tens to hundreds of times faster at that one operation; counted in, it would dominate means that stand for ordinary code, and most programs do not multiply matrices. Its figures are under Matrix multiplies. method_call makes a virtual call in a loop, which xcc turns into a class test and a direct call it can inline, so xc runs it 11.9× faster on arm64 and 57× faster on x86-64 than C++ (clang). The result is real, and it is in every table and chart below, but one ratio that large would move a mean of ordinary code by itself. int_muldiv_hoist and array_sum_hoist measure whether a compiler notices that an outer loop repeats the same work on every pass. xcc does, and runs both in microseconds, so their ratios say nothing about ordinary code; the tables show them as “repetition removed”.

Each row is a benchmark, each dot one language: how much faster or slower xc is than that language. Dots left of the centre line are benchmarks xc wins. Choose a release above a chart to see how it stood then; the rows stay in 1.0’s order. On arm64 every release’s xc was timed again on the Apple M3 Max with today’s programs, and is set against the other languages as measured there for 1.0. On x86-64 releases before 0.65 were measured against Objective-C alone, apart from matrix_mul_f32, which was added later and measured against all three.

Release:
arm64: xc against each language, per benchmark (0.62)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.2× faster than Swiftpoly_dispatch: xc is 1.61× faster than Objective-Cpoly_dispatch: xc is 1.03× faster than C++ (clang)poly_dispatch: xc is 2.7× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 2.7× faster than C++ (GCC)array_map: xc is 1.03× slower than Objective-Carray_map: xc is 1.53× slower than C++ (clang); xc is 1.57× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.34× faster than Swiftsort_small: xc is 1.27× slower than C++ (GCC); xc is 1.28× slower than C++ (clang)sort_small: xc is 1.32× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.25× faster than C++ (GCC)int_muldiv: xc is 1.10× slower than C++ (clang); xc is 1.10× slower than Objective-C; xc is 1.10× slower than Swiftarc_allocarc_alloc: the four programsstruct_copystruct_copy: the four programsstruct_copy: xc is 1.26× slower than Swift; xc is 1.26× slower than Objective-C; xc is 1.26× slower than C++ (clang)struct_copy: xc is 1.94× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.02× slower than Objective-Cmem_copy: xc is 1.22× slower than C++ (GCC)mem_copy: xc is 1.84× slower than C++ (clang); xc is 1.90× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is 1.19× slower than C++ (clang); xc is 1.19× slower than Objective-C; xc is 1.19× slower than Swift; xc is 1.22× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.13× slower than Swift; xc is 1.13× slower than Objective-C; xc is 1.14× slower than C++ (GCC); xc is 1.16× slower than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is 1.03× slower than Objective-C; xc is 1.03× slower than C++ (clang); xc is 1.03× slower than C++ (GCC); xc is 1.03× slower than Swiftint_accumint_accum: the four programsint_accum: xc is 1.08× slower than C++ (GCC); xc is 1.11× slower than Swift; xc is 1.12× slower than Objective-C; xc is 1.12× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is the same than Objective-C; xc is the same than Swift; xc is the same than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 5.6× faster than Objective-Carc_array: xc is 1.18× faster than Swiftarc_array: xc is 1.19× slower than C++ (GCC)arc_array: xc is 1.63× slower than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 1.31× slower than Swiftmatrix_mul: xc is 4.6× slower than C++ (GCC)matrix_mul: xc is 8.0× slower than C++ (clang); xc is 8.0× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.07× slower than Swift; xc is 1.07× slower than C++ (clang); xc is 1.07× slower than C++ (GCC); xc is 1.08× slower than Objective-Csievesieve: the four programssieve: xc is 1.87× faster than Swiftsieve: xc is 1.41× faster than C++ (clang); xc is 1.41× faster than Objective-Csieve: xc is 1.20× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.10× faster than C++ (GCC)call_depth: xc is 1.04× faster than Objective-C; xc is 1.03× faster than Swift; xc is 1.03× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Objective-Cstring_scan: xc is 1.45× faster than C++ (GCC)method_callmethod_call: the four programsmatrix_mul_f32matrix_mul_f32: the four programsarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.62)
arm64: xc against each language, per benchmark (0.63)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.2× faster than Swiftpoly_dispatch: xc is 1.64× faster than Objective-Cpoly_dispatch: xc is 1.05× faster than C++ (clang)poly_dispatch: xc is 2.6× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 2.7× faster than C++ (GCC)array_map: xc is 1.05× slower than Objective-Carray_map: xc is 1.55× slower than C++ (clang); xc is 1.59× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.34× faster than Swiftsort_small: xc is 1.26× slower than C++ (GCC); xc is 1.27× slower than C++ (clang)sort_small: xc is 1.32× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.25× faster than C++ (GCC)int_muldiv: xc is 1.10× slower than C++ (clang); xc is 1.10× slower than Objective-C; xc is 1.10× slower than Swiftarc_allocarc_alloc: the four programsstruct_copystruct_copy: the four programsstruct_copy: xc is 1.26× slower than Swift; xc is 1.26× slower than Objective-C; xc is 1.26× slower than C++ (clang)struct_copy: xc is 1.94× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.03× slower than Objective-Cmem_copy: xc is 1.22× slower than C++ (GCC)mem_copy: xc is 1.85× slower than C++ (clang); xc is 1.91× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is 1.19× slower than C++ (clang); xc is 1.19× slower than Objective-C; xc is 1.19× slower than Swift; xc is 1.22× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.13× slower than Swift; xc is 1.13× slower than Objective-C; xc is 1.14× slower than C++ (GCC); xc is 1.16× slower than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is 1.03× slower than Objective-C; xc is 1.03× slower than C++ (clang); xc is 1.03× slower than C++ (GCC); xc is 1.03× slower than Swiftint_accumint_accum: the four programsint_accum: xc is 1.08× slower than C++ (GCC); xc is 1.11× slower than Swift; xc is 1.12× slower than Objective-C; xc is 1.12× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is the same than Objective-C; xc is the same than Swift; xc is the same than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 5.6× faster than Objective-Carc_array: xc is 1.18× faster than Swiftarc_array: xc is 1.19× slower than C++ (GCC)arc_array: xc is 1.63× slower than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 1.31× slower than Swiftmatrix_mul: xc is 4.6× slower than C++ (GCC)matrix_mul: xc is 8.0× slower than C++ (clang); xc is 8.0× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.08× slower than Swift; xc is 1.08× slower than C++ (clang); xc is 1.08× slower than C++ (GCC); xc is 1.09× slower than Objective-Csievesieve: the four programssieve: xc is 1.83× faster than Swiftsieve: xc is 1.38× faster than C++ (clang); xc is 1.38× faster than Objective-Csieve: xc is 1.17× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.10× faster than C++ (GCC)call_depth: xc is 1.04× faster than Objective-C; xc is 1.03× faster than Swift; xc is 1.03× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Objective-Cstring_scan: xc is 1.45× faster than C++ (GCC)method_callmethod_call: the four programsmatrix_mul_f32matrix_mul_f32: the four programsarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.63)
arm64: xc against each language, per benchmark (0.64)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.2× faster than Swiftpoly_dispatch: xc is 1.63× faster than Objective-Cpoly_dispatch: xc is 1.04× faster than C++ (clang)poly_dispatch: xc is 2.6× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 2.7× faster than C++ (GCC)array_map: xc is 1.04× slower than Objective-Carray_map: xc is 1.54× slower than C++ (clang); xc is 1.58× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.30× faster than Swiftsort_small: xc is 1.30× slower than C++ (GCC); xc is 1.31× slower than C++ (clang)sort_small: xc is 1.36× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.25× faster than C++ (GCC)int_muldiv: xc is 1.10× slower than C++ (clang); xc is 1.10× slower than Objective-C; xc is 1.10× slower than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.61× faster than Objective-Carc_alloc: xc is 1.04× faster than C++ (GCC); xc is 1.04× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.26× slower than Swift; xc is 1.26× slower than Objective-C; xc is 1.26× slower than C++ (clang)struct_copy: xc is 1.94× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.03× slower than Objective-Cmem_copy: xc is 1.22× slower than C++ (GCC)mem_copy: xc is 1.84× slower than C++ (clang); xc is 1.91× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is 1.19× slower than C++ (clang); xc is 1.19× slower than Objective-C; xc is 1.19× slower than Swift; xc is 1.22× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.13× slower than Swift; xc is 1.13× slower than Objective-C; xc is 1.14× slower than C++ (GCC); xc is 1.16× slower than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is 1.03× slower than Objective-C; xc is 1.03× slower than C++ (clang); xc is 1.03× slower than C++ (GCC); xc is 1.03× slower than Swiftint_accumint_accum: the four programsint_accum: xc is 1.08× slower than C++ (GCC); xc is 1.11× slower than Swift; xc is 1.12× slower than Objective-C; xc is 1.12× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is the same than Objective-C; xc is the same than Swift; xc is the same than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 5.6× faster than Objective-Carc_array: xc is 1.18× faster than Swiftarc_array: xc is 1.19× slower than C++ (GCC)arc_array: xc is 1.63× slower than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 1.30× slower than Swiftmatrix_mul: xc is 4.6× slower than C++ (GCC)matrix_mul: xc is 7.9× slower than C++ (clang); xc is 8.0× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.07× slower than Swift; xc is 1.08× slower than C++ (clang); xc is 1.08× slower than C++ (GCC); xc is 1.08× slower than Objective-Csievesieve: the four programssieve: xc is 1.83× faster than Swiftsieve: xc is 1.38× faster than C++ (clang); xc is 1.38× faster than Objective-Csieve: xc is 1.18× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.10× faster than C++ (GCC)call_depth: xc is 1.04× faster than Objective-C; xc is 1.04× faster than Swift; xc is 1.03× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Objective-Cstring_scan: xc is 1.45× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.3× faster than Objective-Cmethod_call: xc is 1.14× faster than C++ (clang)method_call: xc is 1.08× faster than Swiftmethod_call: xc is 5.2× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.64)
arm64: xc against each language, per benchmark (0.65)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.74× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.2× faster than C++ (GCC)array_map: xc is 1.48× faster than Objective-Carray_map: xc is the same than C++ (clang); xc is 1.03× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.42× faster than Swiftsort_small: xc is 1.19× slower than C++ (GCC); xc is 1.20× slower than C++ (clang)sort_small: xc is 1.25× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.25× faster than C++ (GCC)int_muldiv: xc is 1.10× slower than C++ (clang); xc is 1.10× slower than Objective-C; xc is 1.10× slower than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.61× faster than Objective-Carc_alloc: xc is 1.04× faster than C++ (GCC); xc is 1.04× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.46× faster than Swift; xc is 1.45× faster than Objective-C; xc is 1.45× faster than C++ (clang)struct_copy: xc is 1.06× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.81× faster than Objective-Cmem_copy: xc is 1.52× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.03× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than Swift; xc is 1.02× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.02× faster than Swift; xc is 1.01× faster than Objective-C; xc is 1.01× faster than C++ (GCC); xc is 1.01× slower than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.05× faster than C++ (GCC); xc is 1.02× faster than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.5× faster than C++ (GCC)array_sum: xc is 1.01× slower than Objective-C; xc is 1.01× slower than Swift; xc is 1.01× slower than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 9.6× faster than Objective-Carc_array: xc is 2.0× faster than Swiftarc_array: xc is 1.45× faster than C++ (GCC)arc_array: xc is 1.06× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 3.5× faster than Swiftmatrix_mul: xc is 1.01× faster than C++ (GCC)matrix_mul: xc is 1.72× slower than C++ (clang); xc is 1.74× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.09× faster than Swift; xc is 1.09× faster than C++ (clang); xc is 1.09× faster than C++ (GCC); xc is 1.09× faster than Objective-Csievesieve: the four programssieve: xc is 1.86× faster than Swiftsieve: xc is 1.41× faster than C++ (clang); xc is 1.40× faster than Objective-Csieve: xc is 1.20× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.13× faster than C++ (GCC)call_depth: xc is 1.07× faster than Objective-C; xc is 1.06× faster than Swift; xc is 1.06× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Objective-Cstring_scan: xc is 1.45× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.7× faster than Objective-Cmethod_call: xc is 1.32× faster than C++ (clang)method_call: xc is 1.25× faster than Swiftmethod_call: xc is 4.5× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.65)
arm64: xc against each language, per benchmark (0.66)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.74× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.2× faster than C++ (GCC)array_map: xc is 1.48× faster than Objective-Carray_map: xc is the same than C++ (clang); xc is 1.03× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.42× faster than Swiftsort_small: xc is 1.19× slower than C++ (GCC); xc is 1.20× slower than C++ (clang)sort_small: xc is 1.25× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.25× faster than C++ (GCC)int_muldiv: xc is 1.10× slower than C++ (clang); xc is 1.10× slower than Objective-C; xc is 1.10× slower than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.61× faster than Objective-Carc_alloc: xc is 1.04× faster than C++ (GCC); xc is 1.04× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.46× faster than Swift; xc is 1.45× faster than Objective-C; xc is 1.45× faster than C++ (clang)struct_copy: xc is 1.06× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.81× faster than Objective-Cmem_copy: xc is 1.52× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.03× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than Swift; xc is 1.02× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.04× faster than Swift; xc is 1.04× faster than Objective-C; xc is 1.03× faster than C++ (GCC); xc is 1.01× faster than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.05× faster than C++ (GCC); xc is 1.02× faster than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.5× faster than C++ (GCC)array_sum: xc is 1.01× slower than Objective-C; xc is 1.01× slower than Swift; xc is 1.01× slower than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 9.6× faster than Objective-Carc_array: xc is 2.0× faster than Swiftarc_array: xc is 1.45× faster than C++ (GCC)arc_array: xc is 1.06× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 3.5× faster than Swiftmatrix_mul: xc is 1.01× faster than C++ (GCC)matrix_mul: xc is 1.72× slower than C++ (clang); xc is 1.74× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.09× faster than Swift; xc is 1.09× faster than C++ (clang); xc is 1.09× faster than C++ (GCC); xc is 1.08× faster than Objective-Csievesieve: the four programssieve: xc is 1.87× faster than Swiftsieve: xc is 1.41× faster than C++ (clang); xc is 1.40× faster than Objective-Csieve: xc is 1.20× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.13× faster than C++ (GCC)call_depth: xc is 1.07× faster than Objective-C; xc is 1.06× faster than Swift; xc is 1.06× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Objective-Cstring_scan: xc is 1.47× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.7× faster than Objective-Cmethod_call: xc is 1.32× faster than C++ (clang)method_call: xc is 1.25× faster than Swiftmethod_call: xc is 4.5× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.66)
arm64: xc against each language, per benchmark (0.7)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.74× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.1× faster than C++ (GCC)array_map: xc is 1.45× faster than Objective-Carray_map: xc is 1.02× slower than C++ (clang); xc is 1.05× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.40× faster than Swiftsort_small: xc is 1.21× slower than C++ (GCC); xc is 1.22× slower than C++ (clang)sort_small: xc is 1.27× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.25× faster than C++ (GCC)int_muldiv: xc is 1.10× slower than C++ (clang); xc is 1.10× slower than Objective-C; xc is 1.10× slower than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.61× faster than Objective-Carc_alloc: xc is 1.04× faster than C++ (GCC); xc is 1.04× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.46× faster than Swift; xc is 1.45× faster than Objective-C; xc is 1.45× faster than C++ (clang)struct_copy: xc is 1.06× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.81× faster than Objective-Cmem_copy: xc is 1.52× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.03× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than Swift; xc is 1.02× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.02× faster than Swift; xc is 1.02× faster than Objective-C; xc is 1.01× faster than C++ (GCC); xc is 1.01× slower than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.05× faster than C++ (GCC); xc is 1.02× faster than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.5× faster than C++ (GCC)array_sum: xc is 1.01× slower than Objective-C; xc is 1.01× slower than Swift; xc is 1.01× slower than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 9.6× faster than Objective-Carc_array: xc is 2.0× faster than Swiftarc_array: xc is 1.45× faster than C++ (GCC)arc_array: xc is 1.06× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 3.5× faster than Swiftmatrix_mul: xc is 1.01× faster than C++ (GCC)matrix_mul: xc is 1.72× slower than C++ (clang); xc is 1.74× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.09× faster than Swift; xc is 1.09× faster than C++ (clang); xc is 1.09× faster than C++ (GCC); xc is 1.09× faster than Objective-Csievesieve: the four programssieve: xc is 1.86× faster than Swiftsieve: xc is 1.40× faster than C++ (clang); xc is 1.40× faster than Objective-Csieve: xc is 1.19× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.14× faster than C++ (GCC)call_depth: xc is 1.07× faster than Objective-C; xc is 1.07× faster than Swift; xc is 1.06× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Objective-Cstring_scan: xc is 1.45× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.7× faster than Objective-Cmethod_call: xc is 1.34× faster than C++ (clang)method_call: xc is 1.26× faster than Swiftmethod_call: xc is 4.5× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.7)
arm64: xc against each language, per benchmark (0.71)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.74× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.3× faster than C++ (GCC)array_map: xc is 1.52× faster than Objective-Carray_map: xc is 1.03× faster than C++ (clang); xc is the same than Swiftsort_smallsort_small: the four programssort_small: xc is 1.41× faster than Swiftsort_small: xc is 1.20× slower than C++ (GCC); xc is 1.21× slower than C++ (clang)sort_small: xc is 1.26× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.25× faster than C++ (GCC)int_muldiv: xc is 1.10× slower than C++ (clang); xc is 1.10× slower than Objective-C; xc is 1.10× slower than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.61× faster than Objective-Carc_alloc: xc is 1.04× faster than C++ (GCC); xc is 1.04× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.46× faster than Swift; xc is 1.45× faster than Objective-C; xc is 1.45× faster than C++ (clang)struct_copy: xc is 1.06× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.81× faster than Objective-Cmem_copy: xc is 1.52× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.03× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than Swift; xc is 1.02× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.03× faster than Swift; xc is 1.03× faster than Objective-C; xc is 1.02× faster than C++ (GCC); xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.05× faster than C++ (GCC); xc is 1.02× faster than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.5× faster than C++ (GCC)array_sum: xc is 1.01× slower than Objective-C; xc is 1.01× slower than Swift; xc is 1.01× slower than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 9.6× faster than Objective-Carc_array: xc is 2.0× faster than Swiftarc_array: xc is 1.45× faster than C++ (GCC)arc_array: xc is 1.06× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 3.5× faster than Swiftmatrix_mul: xc is 1.01× faster than C++ (GCC)matrix_mul: xc is 1.72× slower than C++ (clang); xc is 1.74× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.09× faster than Swift; xc is 1.09× faster than C++ (clang); xc is 1.09× faster than C++ (GCC); xc is 1.09× faster than Objective-Csievesieve: the four programssieve: xc is 1.87× faster than Swiftsieve: xc is 1.41× faster than C++ (clang); xc is 1.40× faster than Objective-Csieve: xc is 1.20× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.13× faster than C++ (GCC)call_depth: xc is 1.07× faster than Objective-C; xc is 1.06× faster than Swift; xc is 1.06× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Objective-Cstring_scan: xc is 1.46× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.7× faster than Objective-Cmethod_call: xc is 1.32× faster than C++ (clang)method_call: xc is 1.25× faster than Swiftmethod_call: xc is 4.5× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.71)
arm64: xc against each language, per benchmark (0.72)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.74× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.2× faster than C++ (GCC)array_map: xc is 1.50× faster than Objective-Carray_map: xc is 1.01× faster than C++ (clang); xc is 1.01× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.38× faster than Swiftsort_small: xc is 1.23× slower than C++ (GCC); xc is 1.24× slower than C++ (clang)sort_small: xc is 1.29× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.25× faster than C++ (GCC)int_muldiv: xc is 1.10× slower than C++ (clang); xc is 1.10× slower than Objective-C; xc is 1.10× slower than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.61× faster than Objective-Carc_alloc: xc is 1.04× faster than C++ (GCC); xc is 1.04× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.46× faster than Swift; xc is 1.45× faster than Objective-C; xc is 1.45× faster than C++ (clang)struct_copy: xc is 1.06× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.81× faster than Objective-Cmem_copy: xc is 1.52× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.03× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than Swift; xc is 1.02× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.02× faster than Swift; xc is 1.02× faster than Objective-C; xc is 1.01× faster than C++ (GCC); xc is 1.01× slower than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.05× faster than C++ (GCC); xc is 1.02× faster than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.5× faster than C++ (GCC)array_sum: xc is 1.01× slower than Objective-C; xc is 1.01× slower than Swift; xc is 1.01× slower than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 9.6× faster than Objective-Carc_array: xc is 2.0× faster than Swiftarc_array: xc is 1.45× faster than C++ (GCC)arc_array: xc is 1.06× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 3.5× faster than Swiftmatrix_mul: xc is 1.01× faster than C++ (GCC)matrix_mul: xc is 1.72× slower than C++ (clang); xc is 1.74× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.09× faster than Swift; xc is 1.09× faster than C++ (clang); xc is 1.09× faster than C++ (GCC); xc is 1.09× faster than Objective-Csievesieve: the four programssieve: xc is 1.77× faster than Swiftsieve: xc is 1.34× faster than C++ (clang); xc is 1.33× faster than Objective-Csieve: xc is 1.14× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.12× faster than C++ (GCC)call_depth: xc is 1.06× faster than Objective-C; xc is 1.05× faster than Swift; xc is 1.05× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Objective-Cstring_scan: xc is 1.46× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.7× faster than Objective-Cmethod_call: xc is 1.31× faster than C++ (clang)method_call: xc is 1.24× faster than Swiftmethod_call: xc is 4.5× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.20× faster than Swiftmatrix_mul_f32: xc is 1.06× faster than C++ (clang); xc is 1.06× faster than Objective-C; xc is 1.06× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.72)
arm64: xc against each language, per benchmark (0.73)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.74× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.2× faster than C++ (GCC)array_map: xc is 1.51× faster than Objective-Carray_map: xc is 1.02× faster than C++ (clang); xc is 1.01× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.62× faster than Swiftsort_small: xc is 1.05× slower than C++ (GCC); xc is 1.06× slower than C++ (clang)sort_small: xc is 1.10× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.25× faster than C++ (GCC)int_muldiv: xc is 1.10× slower than C++ (clang); xc is 1.10× slower than Objective-C; xc is 1.10× slower than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.61× faster than Objective-Carc_alloc: xc is 1.04× faster than C++ (GCC); xc is 1.04× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.46× faster than Swift; xc is 1.45× faster than Objective-C; xc is 1.45× faster than C++ (clang)struct_copy: xc is 1.06× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.81× faster than Objective-Cmem_copy: xc is 1.52× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.02× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than Swift; xc is 1.02× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.02× faster than Swift; xc is 1.01× faster than Objective-C; xc is 1.01× faster than C++ (GCC); xc is 1.01× slower than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.05× faster than C++ (GCC); xc is 1.02× faster than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 4.0× faster than C++ (GCC)array_sum: xc is 1.12× faster than Objective-C; xc is 1.11× faster than Swift; xc is 1.11× faster than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 9.7× faster than Objective-Carc_array: xc is 2.0× faster than Swiftarc_array: xc is 1.45× faster than C++ (GCC)arc_array: xc is 1.06× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.3× faster than Swiftmatrix_mul: xc is 1.80× faster than C++ (GCC)matrix_mul: xc is 1.04× faster than C++ (clang); xc is 1.02× faster than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.09× faster than Swift; xc is 1.09× faster than C++ (clang); xc is 1.09× faster than C++ (GCC); xc is 1.08× faster than Objective-Csievesieve: the four programssieve: xc is 1.86× faster than Swiftsieve: xc is 1.40× faster than C++ (clang); xc is 1.40× faster than Objective-Csieve: xc is 1.19× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.13× faster than C++ (GCC)call_depth: xc is 1.07× faster than Objective-C; xc is 1.06× faster than Swift; xc is 1.06× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Objective-Cstring_scan: xc is 1.45× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.7× faster than Objective-Cmethod_call: xc is 1.32× faster than C++ (clang)method_call: xc is 1.25× faster than Swiftmethod_call: xc is 4.5× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.21× faster than Swiftmatrix_mul_f32: xc is 1.07× faster than C++ (clang); xc is 1.07× faster than Objective-C; xc is 1.07× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.73)
arm64: xc against each language, per benchmark (0.74)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.74× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.1× faster than C++ (GCC)array_map: xc is 1.45× faster than Objective-Carray_map: xc is 1.02× slower than C++ (clang); xc is 1.05× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.63× faster than Swiftsort_small: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)sort_small: xc is 1.08× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.25× faster than C++ (GCC)int_muldiv: xc is 1.10× slower than C++ (clang); xc is 1.10× slower than Objective-C; xc is 1.10× slower than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.61× faster than Objective-Carc_alloc: xc is 1.04× faster than C++ (GCC); xc is 1.04× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.46× faster than Swift; xc is 1.45× faster than Objective-C; xc is 1.45× faster than C++ (clang)struct_copy: xc is 1.06× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.81× faster than Objective-Cmem_copy: xc is 1.52× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.03× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-C; xc is 1.01× slower than Swift; xc is 1.03× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.03× faster than Swift; xc is 1.03× faster than Objective-C; xc is 1.02× faster than C++ (GCC); xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.05× faster than C++ (GCC); xc is 1.02× faster than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 4.0× faster than C++ (GCC)array_sum: xc is 1.11× faster than Objective-C; xc is 1.11× faster than Swift; xc is 1.11× faster than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 9.7× faster than Objective-Carc_array: xc is 2.0× faster than Swiftarc_array: xc is 1.45× faster than C++ (GCC)arc_array: xc is 1.06× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.3× faster than Swiftmatrix_mul: xc is 1.80× faster than C++ (GCC)matrix_mul: xc is 1.04× faster than C++ (clang); xc is 1.03× faster than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.09× faster than Swift; xc is 1.09× faster than C++ (clang); xc is 1.09× faster than C++ (GCC); xc is 1.08× faster than Objective-Csievesieve: the four programssieve: xc is 1.85× faster than Swiftsieve: xc is 1.39× faster than C++ (clang); xc is 1.39× faster than Objective-Csieve: xc is 1.19× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.13× faster than C++ (GCC)call_depth: xc is 1.07× faster than Objective-C; xc is 1.06× faster than Swift; xc is 1.05× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Objective-Cstring_scan: xc is 1.46× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.7× faster than Objective-Cmethod_call: xc is 1.31× faster than C++ (clang)method_call: xc is 1.24× faster than Swiftmethod_call: xc is 4.5× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.21× faster than Swiftmatrix_mul_f32: xc is 1.07× faster than C++ (clang); xc is 1.07× faster than Objective-C; xc is 1.07× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.74)
arm64: xc against each language, per benchmark (0.75)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.74× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.2× faster than C++ (GCC)array_map: xc is 1.50× faster than Objective-Carray_map: xc is 1.01× faster than C++ (clang); xc is 1.01× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.71× faster than Swiftsort_small: xc is 1.01× faster than C++ (GCC); xc is the same than C++ (clang)sort_small: xc is 1.03× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.25× faster than C++ (GCC)int_muldiv: xc is 1.10× slower than C++ (clang); xc is 1.10× slower than Objective-C; xc is 1.10× slower than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.61× faster than Objective-Carc_alloc: xc is 1.04× faster than C++ (GCC); xc is 1.04× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.46× faster than Swift; xc is 1.45× faster than Objective-C; xc is 1.45× faster than C++ (clang)struct_copy: xc is 1.06× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.81× faster than Objective-Cmem_copy: xc is 1.52× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.03× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-C; xc is 1.01× slower than Swift; xc is 1.03× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.05× faster than Swift; xc is 1.04× faster than Objective-C; xc is 1.04× faster than C++ (GCC); xc is 1.02× faster than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.05× faster than C++ (GCC); xc is 1.02× faster than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 4.0× faster than C++ (GCC)array_sum: xc is 1.11× faster than Objective-C; xc is 1.11× faster than Swift; xc is 1.11× faster than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 9.7× faster than Objective-Carc_array: xc is 2.0× faster than Swiftarc_array: xc is 1.45× faster than C++ (GCC)arc_array: xc is 1.06× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.3× faster than Swiftmatrix_mul: xc is 1.80× faster than C++ (GCC)matrix_mul: xc is 1.03× faster than C++ (clang); xc is 1.02× faster than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.09× faster than Swift; xc is 1.09× faster than C++ (clang); xc is 1.09× faster than C++ (GCC); xc is 1.08× faster than Objective-Csievesieve: the four programssieve: xc is 1.87× faster than Swiftsieve: xc is 1.41× faster than C++ (clang); xc is 1.41× faster than Objective-Csieve: xc is 1.20× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.13× faster than C++ (GCC)call_depth: xc is 1.06× faster than Objective-C; xc is 1.05× faster than Swift; xc is 1.05× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Objective-Cstring_scan: xc is 1.46× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.7× faster than Objective-Cmethod_call: xc is 1.31× faster than C++ (clang)method_call: xc is 1.24× faster than Swiftmethod_call: xc is 4.5× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.21× faster than Swiftmatrix_mul_f32: xc is 1.07× faster than C++ (clang); xc is 1.07× faster than Objective-C; xc is 1.07× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.75)
arm64: xc against each language, per benchmark (0.8)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.74× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.2× faster than C++ (GCC)array_map: xc is 1.47× faster than Objective-Carray_map: xc is 1.01× slower than C++ (clang); xc is 1.03× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.74× faster than Swiftsort_small: xc is 1.03× faster than C++ (GCC); xc is 1.02× faster than C++ (clang)sort_small: xc is 1.02× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.25× faster than C++ (GCC)int_muldiv: xc is 1.10× slower than C++ (clang); xc is 1.10× slower than Objective-C; xc is 1.10× slower than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.61× faster than Objective-Carc_alloc: xc is 1.04× faster than C++ (GCC); xc is 1.04× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.46× faster than Swift; xc is 1.45× faster than Objective-C; xc is 1.45× faster than C++ (clang)struct_copy: xc is 1.06× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.81× faster than Objective-Cmem_copy: xc is 1.52× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.03× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-C; xc is 1.01× slower than Swift; xc is 1.03× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.05× faster than Swift; xc is 1.04× faster than Objective-C; xc is 1.03× faster than C++ (GCC); xc is 1.01× faster than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.05× faster than C++ (GCC); xc is 1.02× faster than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 4.0× faster than C++ (GCC)array_sum: xc is 1.11× faster than Objective-C; xc is 1.11× faster than Swift; xc is 1.11× faster than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 9.7× faster than Objective-Carc_array: xc is 2.0× faster than Swiftarc_array: xc is 1.45× faster than C++ (GCC)arc_array: xc is 1.06× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.3× faster than Swiftmatrix_mul: xc is 1.79× faster than C++ (GCC)matrix_mul: xc is 1.03× faster than C++ (clang); xc is 1.02× faster than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.09× faster than Swift; xc is 1.09× faster than C++ (clang); xc is 1.09× faster than C++ (GCC); xc is 1.08× faster than Objective-Csievesieve: the four programssieve: xc is 1.87× faster than Swiftsieve: xc is 1.41× faster than C++ (clang); xc is 1.40× faster than Objective-Csieve: xc is 1.20× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.11× faster than C++ (GCC)call_depth: xc is 1.05× faster than Objective-C; xc is 1.04× faster than Swift; xc is 1.04× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Objective-Cstring_scan: xc is 1.45× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.7× faster than Objective-Cmethod_call: xc is 1.31× faster than C++ (clang)method_call: xc is 1.24× faster than Swiftmethod_call: xc is 4.5× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.21× faster than Swiftmatrix_mul_f32: xc is 1.07× faster than C++ (clang); xc is 1.07× faster than Objective-C; xc is 1.07× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.8)
arm64: xc against each language, per benchmark (0.85)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.74× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.1× faster than C++ (GCC)array_map: xc is 1.44× faster than Objective-Carray_map: xc is 1.03× slower than C++ (clang); xc is 1.06× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.69× faster than Swiftsort_small: xc is the same than C++ (GCC); xc is 1.01× slower than C++ (clang)sort_small: xc is 1.05× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.25× faster than C++ (GCC)int_muldiv: xc is 1.10× slower than C++ (clang); xc is 1.10× slower than Objective-C; xc is 1.10× slower than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.58× faster than Objective-Carc_alloc: xc is 1.02× faster than C++ (GCC); xc is 1.02× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.46× faster than Swift; xc is 1.45× faster than Objective-C; xc is 1.45× faster than C++ (clang)struct_copy: xc is 1.06× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.81× faster than Objective-Cmem_copy: xc is 1.52× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.03× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-C; xc is 1.01× slower than Swift; xc is 1.03× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.05× faster than Swift; xc is 1.04× faster than Objective-C; xc is 1.04× faster than C++ (GCC); xc is 1.02× faster than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.05× faster than C++ (GCC); xc is 1.02× faster than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 4.0× faster than C++ (GCC)array_sum: xc is 1.12× faster than Objective-C; xc is 1.11× faster than Swift; xc is 1.11× faster than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 9.7× faster than Objective-Carc_array: xc is 2.0× faster than Swiftarc_array: xc is 1.45× faster than C++ (GCC)arc_array: xc is 1.06× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.3× faster than Swiftmatrix_mul: xc is 1.80× faster than C++ (GCC)matrix_mul: xc is 1.04× faster than C++ (clang); xc is 1.03× faster than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.09× faster than Swift; xc is 1.09× faster than C++ (clang); xc is 1.09× faster than C++ (GCC); xc is 1.08× faster than Objective-Csievesieve: the four programssieve: xc is 1.89× faster than Swiftsieve: xc is 1.43× faster than C++ (clang); xc is 1.42× faster than Objective-Csieve: xc is 1.21× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.12× faster than C++ (GCC)call_depth: xc is 1.06× faster than Objective-C; xc is 1.05× faster than Swift; xc is 1.05× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Objective-Cstring_scan: xc is 1.45× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.7× faster than Objective-Cmethod_call: xc is 1.31× faster than C++ (clang)method_call: xc is 1.24× faster than Swiftmethod_call: xc is 4.5× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.21× faster than Swiftmatrix_mul_f32: xc is 1.07× faster than C++ (clang); xc is 1.07× faster than Objective-C; xc is 1.07× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.85)
arm64: xc against each language, per benchmark (0.86)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.74× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.1× faster than C++ (GCC)array_map: xc is 1.44× faster than Objective-Carray_map: xc is 1.03× slower than C++ (clang); xc is 1.06× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.69× faster than Swiftsort_small: xc is the same than C++ (GCC); xc is 1.01× slower than C++ (clang)sort_small: xc is 1.05× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.25× faster than C++ (GCC)int_muldiv: xc is 1.10× slower than C++ (clang); xc is 1.10× slower than Objective-C; xc is 1.10× slower than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.58× faster than Objective-Carc_alloc: xc is 1.02× faster than C++ (GCC); xc is 1.02× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.46× faster than Swift; xc is 1.45× faster than Objective-C; xc is 1.45× faster than C++ (clang)struct_copy: xc is 1.06× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.81× faster than Objective-Cmem_copy: xc is 1.52× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.03× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-C; xc is 1.01× slower than Swift; xc is 1.03× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.05× faster than Swift; xc is 1.04× faster than Objective-C; xc is 1.04× faster than C++ (GCC); xc is 1.02× faster than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.05× faster than C++ (GCC); xc is 1.02× faster than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 4.0× faster than C++ (GCC)array_sum: xc is 1.12× faster than Objective-C; xc is 1.11× faster than Swift; xc is 1.11× faster than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 9.7× faster than Objective-Carc_array: xc is 2.0× faster than Swiftarc_array: xc is 1.45× faster than C++ (GCC)arc_array: xc is 1.06× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.3× faster than Swiftmatrix_mul: xc is 1.80× faster than C++ (GCC)matrix_mul: xc is 1.04× faster than C++ (clang); xc is 1.03× faster than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.09× faster than Swift; xc is 1.09× faster than C++ (clang); xc is 1.09× faster than C++ (GCC); xc is 1.08× faster than Objective-Csievesieve: the four programssieve: xc is 1.89× faster than Swiftsieve: xc is 1.43× faster than C++ (clang); xc is 1.42× faster than Objective-Csieve: xc is 1.21× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.12× faster than C++ (GCC)call_depth: xc is 1.06× faster than Objective-C; xc is 1.05× faster than Swift; xc is 1.05× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Objective-Cstring_scan: xc is 1.45× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.7× faster than Objective-Cmethod_call: xc is 1.31× faster than C++ (clang)method_call: xc is 1.24× faster than Swiftmethod_call: xc is 4.5× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.21× faster than Swiftmatrix_mul_f32: xc is 1.07× faster than C++ (clang); xc is 1.07× faster than Objective-C; xc is 1.07× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.86)
arm64: xc against each language, per benchmark (0.87)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.67× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.4× faster than C++ (GCC)array_map: xc is 1.59× faster than Objective-Carray_map: xc is 1.03× faster than C++ (clang); xc is 1.01× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.43× faster than Swiftsort_small: xc is 1.25× slower than C++ (GCC); xc is 1.26× slower than C++ (clang); xc is 1.28× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.20× slower than Objective-C; xc is 1.22× slower than C++ (clang); xc is 1.22× slower than Swiftint_muldiv: xc is 1.47× slower than C++ (GCC)arc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.58× faster than Objective-Carc_alloc: xc is 1.02× faster than C++ (GCC); xc is 1.02× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.46× faster than Swift; xc is 1.45× faster than Objective-C; xc is 1.45× faster than C++ (clang)struct_copy: xc is 1.11× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.71× faster than Objective-Cmem_copy: xc is 1.45× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.02× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-C; xc is 1.01× slower than Swift; xc is 1.03× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.02× faster than Swift; xc is 1.02× faster than C++ (GCC); xc is 1.01× faster than C++ (clang); xc is the same than Objective-Chash_mixhash_mix: the four programshash_mix: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (GCC); xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 4.0× faster than C++ (GCC)array_sum: xc is 1.11× faster than Objective-C; xc is 1.11× faster than C++ (clang); xc is 1.10× faster than Swiftarc_arrayarc_array: the four programsarc_array: xc is 9.7× faster than Objective-Carc_array: xc is 1.73× faster than Swiftarc_array: xc is 1.38× faster than C++ (GCC)arc_array: xc is 1.05× slower than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.3× faster than Swiftmatrix_mul: xc is 1.74× faster than C++ (GCC)matrix_mul: xc is 1.02× slower than C++ (clang); xc is 1.02× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.08× faster than C++ (GCC); xc is 1.06× faster than Swift; xc is 1.06× faster than C++ (clang); xc is 1.04× faster than Objective-Csievesieve: the four programssieve: xc is 1.81× faster than Swiftsieve: xc is 1.37× faster than Objective-C; xc is 1.37× faster than C++ (clang)sieve: xc is 1.16× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.11× faster than C++ (GCC)call_depth: xc is 1.05× faster than Swift; xc is 1.05× faster than Objective-C; xc is 1.05× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than Objective-C; xc is 2.4× faster than C++ (clang)string_scan: xc is 1.39× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.7× faster than Objective-Cmethod_call: xc is 1.28× faster than C++ (clang); xc is 1.28× faster than Swiftmethod_call: xc is 4.4× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.16× faster than Swiftmatrix_mul_f32: xc is 1.07× faster than C++ (clang); xc is 1.07× faster than Objective-C; xc is 1.07× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.87)
arm64: xc against each language, per benchmark (0.87.3)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.67× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.1× faster than C++ (GCC)array_map: xc is 1.45× faster than Objective-Carray_map: xc is 1.07× slower than C++ (clang); xc is 1.10× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.43× faster than Swiftsort_small: xc is 1.25× slower than C++ (GCC); xc is 1.26× slower than C++ (clang); xc is 1.28× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.19× slower than Objective-C; xc is 1.21× slower than C++ (clang); xc is 1.21× slower than Swiftint_muldiv: xc is 1.47× slower than C++ (GCC)arc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.58× faster than Objective-Carc_alloc: xc is 1.02× faster than C++ (GCC); xc is 1.02× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.46× faster than Swift; xc is 1.45× faster than Objective-C; xc is 1.45× faster than C++ (clang)struct_copy: xc is 1.11× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.71× faster than Objective-Cmem_copy: xc is 1.44× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.03× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-C; xc is 1.01× slower than Swift; xc is 1.03× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.02× faster than Swift; xc is 1.02× faster than C++ (GCC); xc is 1.01× faster than C++ (clang); xc is the same than Objective-Chash_mixhash_mix: the four programshash_mix: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (GCC); xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 4.0× faster than C++ (GCC)array_sum: xc is 1.11× faster than Objective-C; xc is 1.11× faster than C++ (clang); xc is 1.11× faster than Swiftarc_arrayarc_array: the four programsarc_array: xc is 9.7× faster than Objective-Carc_array: xc is 1.73× faster than Swiftarc_array: xc is 1.38× faster than C++ (GCC)arc_array: xc is 1.05× slower than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.4× faster than Swiftmatrix_mul: xc is 1.76× faster than C++ (GCC)matrix_mul: xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.08× faster than C++ (GCC); xc is 1.06× faster than Swift; xc is 1.06× faster than C++ (clang); xc is 1.04× faster than Objective-Csievesieve: the four programssieve: xc is 1.79× faster than Swiftsieve: xc is 1.35× faster than Objective-C; xc is 1.35× faster than C++ (clang)sieve: xc is 1.15× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.11× faster than C++ (GCC)call_depth: xc is 1.05× faster than Swift; xc is 1.05× faster than Objective-C; xc is 1.05× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.5× faster than Swift; xc is 2.5× faster than Objective-C; xc is 2.5× faster than C++ (clang)string_scan: xc is 1.43× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.8× faster than Objective-Cmethod_call: xc is 1.29× faster than C++ (clang); xc is 1.29× faster than Swiftmethod_call: xc is 4.4× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.16× faster than Swiftmatrix_mul_f32: xc is 1.07× faster than C++ (clang); xc is 1.07× faster than Objective-C; xc is 1.07× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.87.3)
arm64: xc against each language, per benchmark (0.88)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.67× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.1× faster than C++ (GCC)array_map: xc is 1.45× faster than Objective-Carray_map: xc is 1.07× slower than C++ (clang); xc is 1.10× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.43× faster than Swiftsort_small: xc is 1.24× slower than C++ (GCC); xc is 1.26× slower than C++ (clang); xc is 1.28× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.20× slower than Objective-C; xc is 1.22× slower than C++ (clang); xc is 1.22× slower than Swiftint_muldiv: xc is 1.47× slower than C++ (GCC)arc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.58× faster than Objective-Carc_alloc: xc is 1.02× faster than C++ (GCC); xc is 1.02× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.46× faster than Swift; xc is 1.45× faster than Objective-C; xc is 1.45× faster than C++ (clang)struct_copy: xc is 1.11× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.71× faster than Objective-Cmem_copy: xc is 1.44× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.02× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-C; xc is 1.01× slower than Swift; xc is 1.03× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.02× faster than Swift; xc is 1.02× faster than C++ (GCC); xc is 1.01× faster than C++ (clang); xc is the same than Objective-Chash_mixhash_mix: the four programshash_mix: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (GCC); xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 4.0× faster than C++ (GCC)array_sum: xc is 1.11× faster than Objective-C; xc is 1.11× faster than C++ (clang); xc is 1.10× faster than Swiftarc_arrayarc_array: the four programsarc_array: xc is 9.7× faster than Objective-Carc_array: xc is 1.73× faster than Swiftarc_array: xc is 1.39× faster than C++ (GCC)arc_array: xc is 1.05× slower than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.3× faster than Swiftmatrix_mul: xc is 1.74× faster than C++ (GCC)matrix_mul: xc is 1.01× slower than C++ (clang); xc is 1.02× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.08× faster than C++ (GCC); xc is 1.06× faster than Swift; xc is 1.06× faster than C++ (clang); xc is 1.04× faster than Objective-Csievesieve: the four programssieve: xc is 1.85× faster than Swiftsieve: xc is 1.40× faster than Objective-C; xc is 1.40× faster than C++ (clang)sieve: xc is 1.19× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.10× faster than C++ (GCC)call_depth: xc is 1.04× faster than Swift; xc is 1.03× faster than Objective-C; xc is 1.03× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than Objective-C; xc is 2.4× faster than C++ (clang)string_scan: xc is 1.40× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.7× faster than Objective-Cmethod_call: xc is 1.27× faster than C++ (clang); xc is 1.27× faster than Swiftmethod_call: xc is 4.4× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.16× faster than Swiftmatrix_mul_f32: xc is 1.07× faster than C++ (clang); xc is 1.07× faster than Objective-C; xc is 1.07× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.88)
arm64: xc against each language, per benchmark (0.89)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.67× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.2× faster than C++ (GCC)array_map: xc is 1.49× faster than Objective-Carray_map: xc is 1.04× slower than C++ (clang); xc is 1.07× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.43× faster than Swiftsort_small: xc is 1.25× slower than C++ (GCC); xc is 1.26× slower than C++ (clang); xc is 1.28× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.20× slower than Objective-C; xc is 1.22× slower than C++ (clang); xc is 1.22× slower than Swiftint_muldiv: xc is 1.48× slower than C++ (GCC)arc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.58× faster than Objective-Carc_alloc: xc is 1.02× faster than C++ (GCC); xc is 1.02× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.46× faster than Swift; xc is 1.45× faster than Objective-C; xc is 1.45× faster than C++ (clang)struct_copy: xc is 1.11× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.71× faster than Objective-Cmem_copy: xc is 1.45× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.02× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-C; xc is 1.01× slower than Swift; xc is 1.03× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.02× faster than Swift; xc is 1.02× faster than C++ (GCC); xc is 1.01× faster than C++ (clang); xc is the same than Objective-Chash_mixhash_mix: the four programshash_mix: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (GCC); xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 4.0× faster than C++ (GCC)array_sum: xc is 1.11× faster than Objective-C; xc is 1.11× faster than C++ (clang); xc is 1.11× faster than Swiftarc_arrayarc_array: the four programsarc_array: xc is 9.7× faster than Objective-Carc_array: xc is 1.73× faster than Swiftarc_array: xc is 1.39× faster than C++ (GCC)arc_array: xc is 1.05× slower than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.3× faster than Swiftmatrix_mul: xc is 1.74× faster than C++ (GCC)matrix_mul: xc is 1.02× slower than C++ (clang); xc is 1.02× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.08× faster than C++ (GCC); xc is 1.06× faster than Swift; xc is 1.06× faster than C++ (clang); xc is 1.04× faster than Objective-Csievesieve: the four programssieve: xc is 1.83× faster than Swiftsieve: xc is 1.39× faster than Objective-C; xc is 1.39× faster than C++ (clang)sieve: xc is 1.18× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.12× faster than C++ (GCC)call_depth: xc is 1.05× faster than Swift; xc is 1.05× faster than Objective-C; xc is 1.05× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than Objective-C; xc is 2.4× faster than C++ (clang)string_scan: xc is 1.38× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.7× faster than Objective-Cmethod_call: xc is 1.27× faster than C++ (clang); xc is 1.27× faster than Swiftmethod_call: xc is 4.4× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 5.9× faster than Swiftmatrix_mul_f32: xc is 5.5× faster than C++ (clang); xc is 5.5× faster than Objective-C; xc is 5.5× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.89)
arm64: xc against each language, per benchmark (0.9)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.67× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.1× faster than C++ (GCC)array_map: xc is 1.48× faster than Objective-Carray_map: xc is 1.04× slower than C++ (clang); xc is 1.08× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.43× faster than Swiftsort_small: xc is 1.24× slower than C++ (GCC); xc is 1.26× slower than C++ (clang); xc is 1.28× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.12× slower than Objective-C; xc is 1.14× slower than C++ (clang); xc is 1.14× slower than Swiftint_muldiv: xc is 1.38× slower than C++ (GCC)arc_allocarc_alloc: the four programsarc_alloc: xc is 2.3× faster than Swiftarc_alloc: xc is 1.67× faster than Objective-Carc_alloc: xc is 1.08× faster than C++ (GCC); xc is 1.08× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.58× faster than Swift; xc is 1.57× faster than Objective-C; xc is 1.57× faster than C++ (clang)struct_copy: xc is 1.02× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.76× faster than Objective-Cmem_copy: xc is 1.49× faster than C++ (GCC)mem_copy: xc is 1.04× faster than C++ (clang); xc is 1.01× faster than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than Swift; xc is 1.02× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.02× faster than Swift; xc is 1.01× faster than C++ (GCC); xc is 1.01× faster than C++ (clang); xc is 1.01× slower than Objective-Chash_mixhash_mix: the four programshash_mix: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (GCC); xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 4.3× faster than C++ (GCC)array_sum: xc is 1.19× faster than Objective-C; xc is 1.19× faster than C++ (clang); xc is 1.18× faster than Swiftarc_arrayarc_array: the four programsarc_array: xc is 10.8× faster than Objective-Carc_array: xc is 1.92× faster than Swiftarc_array: xc is 1.54× faster than C++ (GCC)arc_array: xc is 1.06× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.7× faster than Swiftmatrix_mul: xc is 1.85× faster than C++ (GCC)matrix_mul: xc is 1.05× faster than C++ (clang); xc is 1.05× faster than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.08× faster than C++ (GCC); xc is 1.06× faster than Swift; xc is 1.06× faster than C++ (clang); xc is 1.04× faster than Objective-Csievesieve: the four programssieve: xc is 1.71× faster than Swiftsieve: xc is 1.29× faster than Objective-C; xc is 1.29× faster than C++ (clang)sieve: xc is 1.10× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.13× faster than C++ (GCC)call_depth: xc is 1.06× faster than Swift; xc is 1.06× faster than Objective-C; xc is 1.06× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.6× faster than Swift; xc is 2.6× faster than Objective-C; xc is 2.6× faster than C++ (clang)string_scan: xc is 1.47× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.9× faster than Objective-Cmethod_call: xc is 1.33× faster than C++ (clang); xc is 1.33× faster than Swiftmethod_call: xc is 4.2× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 5.9× faster than Swiftmatrix_mul_f32: xc is 5.5× faster than C++ (clang); xc is 5.5× faster than Objective-C; xc is 5.5× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.9)
arm64: xc against each language, per benchmark (0.9.1)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.2× faster than Swiftpoly_dispatch: xc is 1.65× faster than Objective-Cpoly_dispatch: xc is 1.10× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.3× faster than C++ (GCC)array_map: xc is 1.53× faster than Objective-Carray_map: xc is 1.01× slower than C++ (clang); xc is 1.05× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.43× faster than Swiftsort_small: xc is 1.25× slower than C++ (GCC); xc is 1.26× slower than C++ (clang); xc is 1.28× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.12× slower than Objective-C; xc is 1.14× slower than C++ (clang); xc is 1.14× slower than Swiftint_muldiv: xc is 1.38× slower than C++ (GCC)arc_allocarc_alloc: the four programsarc_alloc: xc is 2.3× faster than Swiftarc_alloc: xc is 1.67× faster than Objective-Carc_alloc: xc is 1.08× faster than C++ (GCC); xc is 1.08× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.58× faster than Swift; xc is 1.57× faster than Objective-C; xc is 1.57× faster than C++ (clang)struct_copy: xc is 1.02× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.73× faster than Objective-Cmem_copy: xc is 1.46× faster than C++ (GCC)mem_copy: xc is 1.02× faster than C++ (clang); xc is 1.01× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than Swift; xc is 1.02× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.02× faster than Swift; xc is 1.01× faster than C++ (GCC); xc is 1.01× faster than C++ (clang); xc is 1.01× slower than Objective-Chash_mixhash_mix: the four programshash_mix: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (GCC); xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 4.2× faster than C++ (GCC)array_sum: xc is 1.17× faster than Objective-C; xc is 1.17× faster than C++ (clang); xc is 1.16× faster than Swiftarc_arrayarc_array: the four programsarc_array: xc is 10.8× faster than Objective-Carc_array: xc is 1.92× faster than Swiftarc_array: xc is 1.54× faster than C++ (GCC)arc_array: xc is 1.06× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.7× faster than Swiftmatrix_mul: xc is 1.83× faster than C++ (GCC)matrix_mul: xc is 1.04× faster than C++ (clang); xc is 1.03× faster than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.08× faster than C++ (GCC); xc is 1.06× faster than Swift; xc is 1.06× faster than C++ (clang); xc is 1.04× faster than Objective-Csievesieve: the four programssieve: xc is 1.69× faster than Swiftsieve: xc is 1.28× faster than Objective-C; xc is 1.28× faster than C++ (clang)sieve: xc is 1.09× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.13× faster than C++ (GCC)call_depth: xc is 1.06× faster than Swift; xc is 1.06× faster than Objective-C; xc is 1.06× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.5× faster than Swift; xc is 2.5× faster than Objective-C; xc is 2.5× faster than C++ (clang)string_scan: xc is 1.43× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.9× faster than Objective-Cmethod_call: xc is 1.33× faster than C++ (clang); xc is 1.33× faster than Swiftmethod_call: xc is 4.2× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 5.9× faster than Swiftmatrix_mul_f32: xc is 5.5× faster than C++ (clang); xc is 5.5× faster than Objective-C; xc is 5.5× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.9.1)
arm64: xc against each language, per benchmark (0.9.2)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.2× faster than Swiftpoly_dispatch: xc is 1.67× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.3× faster than C++ (GCC)array_map: xc is 1.44× faster than Objective-Carray_map: xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.67× faster than Swiftsort_small: xc is 1.06× slower than C++ (GCC); xc is 1.09× slower than C++ (clang)sort_small: xc is 1.13× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.20× slower than C++ (clang); xc is 1.21× slower than Objective-C; xc is 1.21× slower than Swiftint_muldiv: xc is 1.41× slower than C++ (GCC)arc_allocarc_alloc: the four programsarc_alloc: xc is 2.1× faster than Swiftarc_alloc: xc is 1.52× faster than Objective-Carc_alloc: xc is 1.02× slower than C++ (GCC); xc is 1.02× slower than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.58× faster than Swift; xc is 1.57× faster than Objective-C; xc is 1.57× faster than C++ (clang)struct_copy: xc is 1.04× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.73× faster than Objective-Cmem_copy: xc is 1.45× faster than C++ (GCC)mem_copy: xc is 1.03× faster than C++ (clang); xc is 1.01× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is the same than Swift; xc is the same than C++ (clang); xc is the same than Objective-C; xc is 1.02× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.01× faster than Swift; xc is 1.01× slower than C++ (GCC); xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-Chash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (GCC); xc is the same than C++ (clang); xc is the same than Objective-Carray_sumarray_sum: the four programsarray_sum: xc is 4.3× faster than C++ (GCC)array_sum: xc is 1.12× faster than Swift; xc is 1.12× faster than Objective-C; xc is 1.11× faster than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 8.7× faster than Objective-Carc_array: xc is 1.93× faster than Swiftarc_array: xc is 1.32× faster than C++ (GCC)arc_array: xc is 1.02× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.4× faster than Swiftmatrix_mul: xc is 1.81× faster than C++ (GCC)matrix_mul: xc is 1.04× faster than C++ (clang); xc is 1.04× faster than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.03× faster than Swift; xc is 1.02× faster than Objective-C; xc is 1.02× faster than C++ (clang); xc is 1.02× faster than C++ (GCC)sievesieve: the four programssieve: xc is 1.80× faster than Swiftsieve: xc is 1.36× faster than Objective-C; xc is 1.36× faster than C++ (clang)sieve: xc is 1.15× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.27× faster than C++ (GCC)call_depth: xc is 1.19× faster than C++ (clang); xc is 1.19× faster than Objective-C; xc is 1.19× faster than Swiftstring_scanstring_scan: the four programsstring_scan: xc is 2.5× faster than Swift; xc is 2.5× faster than Objective-C; xc is 2.5× faster than C++ (clang)string_scan: xc is 1.45× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.8× faster than Objective-Cmethod_call: xc is 1.33× faster than C++ (clang); xc is 1.33× faster than Swiftmethod_call: xc is 4.2× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 5.8× faster than Swiftmatrix_mul_f32: xc is 5.5× faster than Objective-C; xc is 5.5× faster than C++ (clang); xc is 5.5× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.9.2)
arm64: xc against each language, per benchmark (0.9.3)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 2.3× faster than Swiftpoly_dispatch: xc is 1.68× faster than Objective-Cpoly_dispatch: xc is 1.11× faster than C++ (clang)poly_dispatch: xc is 2.5× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.0× faster than C++ (GCC)array_map: xc is 1.39× faster than Objective-Carray_map: xc is 1.02× slower than C++ (clang); xc is 1.06× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.65× faster than Swiftsort_small: xc is 1.05× slower than C++ (GCC); xc is 1.06× slower than C++ (clang); xc is 1.09× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.10× faster than C++ (GCC)int_muldiv: xc is 1.19× slower than C++ (clang); xc is 1.19× slower than Swift; xc is 1.19× slower than Objective-Carc_allocarc_alloc: the four programsarc_alloc: xc is 2.1× faster than Swiftarc_alloc: xc is 1.52× faster than Objective-Carc_alloc: xc is 1.01× faster than C++ (GCC); xc is 1.02× slower than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.53× faster than Swift; xc is 1.52× faster than Objective-C; xc is 1.52× faster than C++ (clang)struct_copy: xc is 1.05× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.74× faster than Objective-Cmem_copy: xc is 1.49× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.02× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is the same than C++ (clang); xc is the same than Swift; xc is the same than Objective-C; xc is 1.02× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.01× faster than Swift; xc is 1.01× slower than C++ (GCC); xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-Chash_mixhash_mix: the four programshash_mix: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (GCC); xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.02× faster than Objective-C; xc is 1.01× faster than C++ (clang); xc is 1.01× faster than Swiftarc_arrayarc_array: the four programsarc_array: xc is 9.1× faster than Objective-Carc_array: xc is 1.97× faster than Swiftarc_array: xc is 1.37× faster than C++ (GCC)arc_array: xc is 1.02× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.3× faster than Swiftmatrix_mul: xc is 1.79× faster than C++ (GCC)matrix_mul: xc is the same than C++ (clang); xc is 1.01× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.05× faster than C++ (GCC); xc is 1.03× faster than Swift; xc is 1.02× faster than Objective-C; xc is 1.02× faster than C++ (clang)sievesieve: the four programssieve: xc is 1.79× faster than Swiftsieve: xc is 1.36× faster than Objective-C; xc is 1.35× faster than C++ (clang)sieve: xc is 1.15× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.27× faster than C++ (GCC)call_depth: xc is 1.19× faster than Objective-C; xc is 1.19× faster than C++ (clang); xc is 1.19× faster than Swiftstring_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Objective-C; xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang)string_scan: xc is 1.39× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 2.7× faster than Objective-Cmethod_call: xc is 1.25× faster than C++ (clang); xc is 1.25× faster than Swiftmethod_call: xc is 4.5× slower than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 6.0× faster than Swiftmatrix_mul_f32: xc is 5.5× faster than C++ (clang); xc is 5.5× faster than Objective-C; xc is 5.5× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.9.3)
arm64: xc against each language, per benchmark (0.9.4)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 3.7× faster than Swiftpoly_dispatch: xc is 2.8× faster than Objective-Cpoly_dispatch: xc is 1.82× faster than C++ (clang)poly_dispatch: xc is 1.50× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.0× faster than C++ (GCC)array_map: xc is 1.43× faster than Objective-Carray_map: xc is 1.05× slower than Swift; xc is 1.07× slower than C++ (clang)sort_smallsort_small: the four programssort_small: xc is 1.66× faster than Swiftsort_small: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang); xc is 1.07× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.27× faster than C++ (GCC)int_muldiv: xc is 1.05× slower than C++ (clang); xc is 1.05× slower than Objective-C; xc is 1.05× slower than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.1× faster than Swiftarc_alloc: xc is 1.48× faster than Objective-Carc_alloc: xc is 1.01× slower than C++ (GCC); xc is 1.03× slower than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.51× faster than Swift; xc is 1.50× faster than Objective-C; xc is 1.50× faster than C++ (clang)struct_copy: xc is 1.03× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.78× faster than Objective-Cmem_copy: xc is 1.50× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.02× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than Swift; xc is 1.02× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (GCC); xc is the same than C++ (clang); xc is 1.01× slower than Objective-Chash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.01× faster than C++ (GCC); xc is 1.01× faster than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.01× faster than Objective-C; xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 9.3× faster than Objective-Carc_array: xc is 1.97× faster than Swiftarc_array: xc is 1.39× faster than C++ (GCC)arc_array: xc is 1.02× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.3× faster than Swiftmatrix_mul: xc is 1.83× faster than C++ (GCC)matrix_mul: xc is 1.02× faster than Objective-C; xc is the same than C++ (clang)bit_opsbit_ops: the four programsbit_ops: xc is 1.06× faster than C++ (GCC); xc is 1.04× faster than Swift; xc is 1.04× faster than Objective-C; xc is 1.03× faster than C++ (clang)sievesieve: the four programssieve: xc is 1.77× faster than Swiftsieve: xc is 1.34× faster than C++ (clang); xc is 1.34× faster than Objective-Csieve: xc is 1.14× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.28× faster than C++ (GCC)call_depth: xc is 1.20× faster than Objective-C; xc is 1.19× faster than Swift; xc is 1.19× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Swift; xc is 2.4× faster than Objective-Cstring_scan: xc is 1.43× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 11.6× faster than C++ (clang); xc is 24× faster than Objective-C; xc is 11.4× faster than Swiftmethod_call: xc is 2.0× faster than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 6.1× faster than Swiftmatrix_mul_f32: xc is 5.5× faster than C++ (clang); xc is 5.5× faster than Objective-C; xc is 5.5× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.9.4)
arm64: xc against each language, per benchmark (0.9.5)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 3.7× faster than Swiftpoly_dispatch: xc is 2.7× faster than Objective-Cpoly_dispatch: xc is 1.82× faster than C++ (clang)poly_dispatch: xc is 1.50× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.3× faster than C++ (GCC)array_map: xc is 1.44× faster than Objective-Carray_map: xc is 1.02× faster than C++ (clang)array_map: xc is 1.06× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.67× faster than Swiftsort_small: xc is 1.05× slower than C++ (GCC); xc is 1.06× slower than C++ (clang); xc is 1.09× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.24× faster than C++ (GCC)int_muldiv: xc is 1.05× slower than C++ (clang); xc is 1.05× slower than Swift; xc is 1.06× slower than Objective-Carc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Swiftarc_alloc: xc is 1.52× faster than Objective-Carc_alloc: xc is 1.01× faster than C++ (GCC); xc is the same than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.56× faster than Swift; xc is 1.56× faster than Objective-C; xc is 1.56× faster than C++ (clang)struct_copy: xc is 1.02× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.73× faster than Objective-Cmem_copy: xc is 1.46× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.03× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than Swift; xc is 1.02× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.01× faster than Swift; xc is 1.01× slower than C++ (GCC); xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-Chash_mixhash_mix: the four programshash_mix: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than Swift; xc is the same than C++ (GCC)int_accumint_accum: the four programsint_accum: xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (GCC); xc is the same than C++ (clang); xc is the same than Objective-Carray_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.02× faster than Objective-C; xc is 1.02× faster than C++ (clang); xc is 1.02× faster than Swiftarc_arrayarc_array: the four programsarc_array: xc is 9.3× faster than Objective-Carc_array: xc is 1.97× faster than Swiftarc_array: xc is 1.38× faster than C++ (GCC)arc_array: xc is 1.02× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.3× faster than Swiftmatrix_mul: xc is 1.76× faster than C++ (GCC)matrix_mul: xc is 1.01× slower than C++ (clang); xc is 1.02× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.04× faster than C++ (GCC); xc is 1.02× faster than Swift; xc is 1.02× faster than C++ (clang); xc is 1.02× faster than Objective-Csievesieve: the four programssieve: xc is 1.79× faster than Swiftsieve: xc is 1.36× faster than Objective-C; xc is 1.35× faster than C++ (clang)sieve: xc is 1.15× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.27× faster than C++ (GCC)call_depth: xc is 1.19× faster than C++ (clang); xc is 1.19× faster than Swift; xc is 1.19× faster than Objective-Cstring_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than Objective-C; xc is 2.4× faster than C++ (clang)string_scan: xc is 1.41× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 11.4× faster than C++ (clang); xc is 24× faster than Objective-C; xc is 11.3× faster than Swiftmethod_call: xc is 2.0× faster than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 6.0× faster than Swiftmatrix_mul_f32: xc is 5.5× faster than Objective-C; xc is 5.5× faster than C++ (clang); xc is 5.5× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.9.5)
arm64: xc against each language, per benchmark (0.9.6)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 3.7× faster than Swiftpoly_dispatch: xc is 2.7× faster than Objective-Cpoly_dispatch: xc is 1.79× faster than C++ (clang)poly_dispatch: xc is 1.53× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.1× faster than C++ (GCC)array_map: xc is 1.40× faster than Objective-Carray_map: xc is 1.02× slower than Swift; xc is 1.04× slower than C++ (clang)sort_smallsort_small: the four programssort_small: xc is 1.67× faster than Swiftsort_small: xc is 1.02× slower than C++ (GCC); xc is 1.05× slower than C++ (clang); xc is 1.06× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.27× faster than C++ (GCC)int_muldiv: xc is 1.05× slower than C++ (clang); xc is 1.05× slower than Swift; xc is 1.05× slower than Objective-Carc_allocarc_alloc: the four programsarc_alloc: xc is 2.1× faster than Swiftarc_alloc: xc is 1.47× faster than Objective-Carc_alloc: xc is 1.01× slower than C++ (GCC); xc is 1.03× slower than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.54× faster than Swift; xc is 1.53× faster than Objective-C; xc is 1.53× faster than C++ (clang)struct_copy: xc is 1.01× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.77× faster than Objective-Cmem_copy: xc is 1.48× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.03× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is the same than Swift; xc is the same than Objective-C; xc is the same than C++ (clang); xc is 1.02× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (GCC); xc is the same than C++ (clang); xc is the same than Objective-Chash_mixhash_mix: the four programshash_mix: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (GCC); xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.02× faster than Objective-C; xc is 1.01× faster than C++ (clang); xc is 1.01× faster than Swiftarc_arrayarc_array: the four programsarc_array: xc is 9.3× faster than Objective-Carc_array: xc is 1.97× faster than Swiftarc_array: xc is 1.38× faster than C++ (GCC)arc_array: xc is 1.03× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.3× faster than Swiftmatrix_mul: xc is 1.80× faster than C++ (GCC)matrix_mul: xc is the same than C++ (clang); xc is the same than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.06× faster than C++ (GCC); xc is 1.04× faster than Swift; xc is 1.04× faster than C++ (clang); xc is 1.03× faster than Objective-Csievesieve: the four programssieve: xc is 1.79× faster than Swiftsieve: xc is 1.35× faster than C++ (clang); xc is 1.35× faster than Objective-Csieve: xc is 1.15× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.28× faster than C++ (GCC)call_depth: xc is 1.20× faster than Objective-C; xc is 1.20× faster than Swift; xc is 1.19× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than Objective-C; xc is 2.4× faster than C++ (clang)string_scan: xc is 1.40× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 11.5× faster than C++ (clang); xc is 24× faster than Objective-C; xc is 11.3× faster than Swiftmethod_call: xc is 2.0× faster than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 6.0× faster than Swiftmatrix_mul_f32: xc is 5.5× faster than Objective-C; xc is 5.5× faster than C++ (clang); xc is 5.5× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.9.6)
arm64: xc against each language, per benchmark (0.9.7)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 3.6× faster than Swiftpoly_dispatch: xc is 2.7× faster than Objective-Cpoly_dispatch: xc is 1.81× faster than C++ (clang)poly_dispatch: xc is 1.55× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.1× faster than C++ (GCC)array_map: xc is 1.40× faster than Objective-Carray_map: xc is 1.01× faster than Swift; xc is 1.01× slower than C++ (clang)sort_smallsort_small: the four programssort_small: xc is 1.52× faster than Swiftsort_small: xc is 1.19× slower than C++ (GCC); xc is 1.20× slower than C++ (clang); xc is 1.23× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.28× faster than C++ (GCC)int_muldiv: xc is 1.04× slower than Objective-C; xc is 1.04× slower than Swift; xc is 1.06× slower than C++ (clang)arc_allocarc_alloc: the four programsarc_alloc: xc is 2.1× faster than Swiftarc_alloc: xc is 1.50× faster than Objective-Carc_alloc: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.58× faster than Swift; xc is 1.57× faster than Objective-C; xc is 1.57× faster than C++ (clang)struct_copy: xc is 1.04× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.71× faster than Objective-Cmem_copy: xc is 1.43× faster than C++ (GCC)mem_copy: xc is the same than C++ (clang); xc is 1.02× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is the same than Swift; xc is the same than C++ (clang); xc is the same than Objective-C; xc is 1.02× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.01× faster than Swift; xc is 1.01× slower than C++ (GCC); xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-Chash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than Swift; xc is the same than C++ (clang); xc is the same than C++ (GCC)int_accumint_accum: the four programsint_accum: xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (GCC); xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.8× faster than C++ (GCC)array_sum: xc is 1.05× faster than Objective-C; xc is 1.05× faster than Swift; xc is 1.05× faster than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 8.8× faster than Objective-Carc_array: xc is 1.91× faster than Swiftarc_array: xc is 1.32× faster than C++ (GCC)arc_array: xc is 1.03× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.3× faster than Swiftmatrix_mul: xc is 1.79× faster than C++ (GCC)matrix_mul: xc is 1.03× faster than C++ (clang); xc is 1.02× faster than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.02× faster than Swift; xc is 1.02× faster than Objective-C; xc is 1.02× faster than C++ (clang); xc is 1.02× faster than C++ (GCC)sievesieve: the four programssieve: xc is 1.80× faster than Swiftsieve: xc is 1.37× faster than C++ (clang); xc is 1.35× faster than Objective-Csieve: xc is 1.15× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.27× faster than C++ (GCC)call_depth: xc is 1.19× faster than Swift; xc is 1.19× faster than C++ (clang); xc is 1.19× faster than Objective-Cstring_scanstring_scan: the four programsstring_scan: xc is 2.5× faster than Objective-C; xc is 2.5× faster than Swift; xc is 2.5× faster than C++ (clang)string_scan: xc is 1.45× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 11.3× faster than C++ (clang); xc is 24× faster than Objective-C; xc is 11.3× faster than Swiftmethod_call: xc is 2.0× faster than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 5.8× faster than Swiftmatrix_mul_f32: xc is 5.5× faster than Objective-C; xc is 5.5× faster than C++ (clang); xc is 5.5× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (0.9.7)
arm64: xc against each language, per benchmark (1.0)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →poly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 3.3× faster than Swiftpoly_dispatch: xc is 2.4× faster than Objective-Cpoly_dispatch: xc is 1.56× faster than C++ (clang)poly_dispatch: xc is 1.76× slower than C++ (GCC)array_maparray_map: the four programsarray_map: xc is 4.0× faster than C++ (GCC)array_map: xc is 1.43× faster than Objective-Carray_map: xc is 1.04× slower than C++ (clang); xc is 1.06× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.67× faster than Swiftsort_small: xc is 1.01× slower than C++ (GCC); xc is 1.02× slower than C++ (clang)sort_small: xc is 1.06× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.30× faster than C++ (GCC)int_muldiv: xc is 1.05× slower than C++ (clang); xc is 1.05× slower than Objective-C; xc is 1.05× slower than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.1× faster than Swiftarc_alloc: xc is 1.50× faster than Objective-Carc_alloc: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.51× faster than Swift; xc is 1.50× faster than Objective-C; xc is 1.50× faster than C++ (clang)struct_copy: xc is 1.03× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.81× faster than Objective-Cmem_copy: xc is 1.52× faster than C++ (GCC)mem_copy: xc is 1.01× faster than C++ (clang); xc is 1.03× slower than Swiftfloat_mathfloat_math: the four programsfloat_math: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than Swift; xc is 1.02× slower than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is 1.03× faster than Swift; xc is 1.02× faster than Objective-C; xc is 1.02× faster than C++ (GCC); xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is 1.05× faster than C++ (GCC); xc is 1.02× faster than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.02× faster than Objective-C; xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (clang)arc_arrayarc_array: the four programsarc_array: xc is 9.3× faster than Objective-Carc_array: xc is 1.97× faster than Swiftarc_array: xc is 1.40× faster than C++ (GCC)arc_array: xc is 1.02× faster than C++ (clang)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 6.3× faster than Swiftmatrix_mul: xc is 1.80× faster than C++ (GCC)matrix_mul: xc is 1.04× faster than C++ (clang); xc is 1.03× faster than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is 1.07× faster than Swift; xc is 1.06× faster than C++ (clang); xc is 1.06× faster than C++ (GCC); xc is 1.06× faster than Objective-Csievesieve: the four programssieve: xc is 1.79× faster than Swiftsieve: xc is 1.35× faster than C++ (clang); xc is 1.34× faster than Objective-Csieve: xc is 1.15× faster than C++ (GCC)call_depthcall_depth: the four programscall_depth: xc is 1.28× faster than C++ (GCC)call_depth: xc is 1.21× faster than Objective-C; xc is 1.20× faster than Swift; xc is 1.20× faster than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 2.4× faster than Swift; xc is 2.4× faster than C++ (clang); xc is 2.4× faster than Objective-Cstring_scan: xc is 1.45× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 11.9× faster than C++ (clang); xc is 24× faster than Objective-C; xc is 11.3× faster than Swiftmethod_call: xc is 2.0× faster than C++ (GCC)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 6.2× faster than Swiftmatrix_mul_f32: xc is 5.5× faster than C++ (clang); xc is 5.5× faster than Objective-C; xc is 5.5× faster than C++ (GCC)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
arm64: xc against each language, per benchmark (1.0)
Release:
x86-64: xc against each language, per benchmark (0.62)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.2× faster than Objective-Csort_smallsort_small: the four programssort_small: xc is 1.50× slower than Objective-Csievesieve: the four programssieve: xc is 2.3× slower than Objective-Carray_sumarray_sum: the four programsarray_sum: xc is 1.20× faster than Objective-Carray_maparray_map: the four programsarray_map: xc is 1.35× slower than Objective-Cfloat_mathfloat_math: the four programsfloat_math: xc is 2.0× slower than Objective-Cmatrix_mulmatrix_mul: the four programsmatrix_mul: xc is 2.0× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.19× slower than Objective-Cmem_copymem_copy: the four programsmem_copy: xc is 1.46× slower than Objective-Ccall_depthcall_depth: the four programscall_depth: xc is 1.11× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Objective-Cbranch_mixbranch_mix: the four programsbranch_mix: xc is 1.01× slower than Objective-Chash_mixhash_mix: the four programshash_mix: xc is 1.10× faster than Objective-Carc_allocarc_alloc: the four programsstruct_copystruct_copy: the four programsstruct_copy: xc is 1.44× slower than Objective-Cstring_scanstring_scan: the four programsstring_scan: xc is 1.94× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 1.27× faster than Objective-Cmatrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.79× slower than Swiftmatrix_mul_f32: xc is 2.5× slower than Objective-C; xc is 2.6× slower than C++ (clang)method_callmethod_call: the four programsarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.62)
x86-64: xc against each language, per benchmark (0.63)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.2× faster than Objective-Csort_smallsort_small: the four programssort_small: xc is 1.25× slower than Objective-Csievesieve: the four programssieve: xc is 2.3× slower than Objective-Carray_sumarray_sum: the four programsarray_sum: xc is 1.19× faster than Objective-Carray_maparray_map: the four programsarray_map: xc is 1.37× slower than Objective-Cfloat_mathfloat_math: the four programsfloat_math: xc is 2.0× slower than Objective-Cmatrix_mulmatrix_mul: the four programsmatrix_mul: xc is 2.0× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.19× slower than Objective-Cmem_copymem_copy: the four programsmem_copy: xc is 1.46× slower than Objective-Ccall_depthcall_depth: the four programscall_depth: xc is 1.11× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Objective-Cbranch_mixbranch_mix: the four programsbranch_mix: xc is 1.13× slower than Objective-Chash_mixhash_mix: the four programshash_mix: xc is 1.07× faster than Objective-Carc_allocarc_alloc: the four programsstruct_copystruct_copy: the four programsstruct_copy: xc is 1.44× slower than Objective-Cstring_scanstring_scan: the four programsstring_scan: xc is 1.94× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 1.27× faster than Objective-Cmatrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.70× slower than Swiftmatrix_mul_f32: xc is 2.4× slower than Objective-C; xc is 2.4× slower than C++ (clang)method_callmethod_call: the four programsarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.63)
x86-64: xc against each language, per benchmark (0.64)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.2× faster than Objective-Csort_smallsort_small: the four programssort_small: xc is 1.21× slower than Objective-Csievesieve: the four programssieve: xc is 1.82× slower than Objective-Carray_sumarray_sum: the four programsarray_sum: xc is 1.55× faster than Objective-Carray_maparray_map: the four programsarray_map: xc is 1.01× faster than Objective-Cfloat_mathfloat_math: the four programsfloat_math: xc is 1.01× faster than Objective-Cmatrix_mulmatrix_mul: the four programsmatrix_mul: xc is 1.08× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.19× slower than Objective-Cmem_copymem_copy: the four programsmem_copy: xc is 1.02× slower than Objective-Ccall_depthcall_depth: the four programscall_depth: xc is 1.11× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Objective-Cbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than Objective-Chash_mixhash_mix: the four programshash_mix: xc is 1.07× faster than Objective-Carc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Objective-Cstruct_copystruct_copy: the four programsstruct_copy: xc is 1.09× slower than Objective-Cstring_scanstring_scan: the four programsstring_scan: xc is 1.95× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 1.27× faster than Objective-Cmatrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.40× slower than Swiftmatrix_mul_f32: xc is 1.98× slower than Objective-C; xc is 2.00× slower than C++ (clang)method_callmethod_call: the four programsmethod_call: xc is 1.41× faster than Objective-Carray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.64)
x86-64: xc against each language, per benchmark (0.65)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.2× faster than Objective-Carc_array: xc is 1.84× slower than C++ (clang)arc_array: xc is 1.92× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.19× slower than Objective-C; xc is 1.22× slower than C++ (clang)sort_small: xc is 1.75× slower than Swiftsievesieve: the four programssieve: xc is 1.01× slower than Swiftsieve: xc is 1.48× slower than C++ (clang); xc is 1.49× slower than Objective-Carray_sumarray_sum: the four programsarray_sum: xc is 1.58× faster than Objective-Carray_sum: xc is 1.19× faster than Swift; xc is 1.19× faster than C++ (clang)array_maparray_map: the four programsarray_map: xc is 1.32× faster than Swiftarray_map: xc is 1.01× faster than Objective-Carray_map: xc is 1.06× slower than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.05× slower than Objective-C; xc is 1.05× slower than C++ (clang); xc is 1.05× slower than Swiftmatrix_mulmatrix_mul: the four programsmatrix_mul: xc is 3.6× faster than Swiftmatrix_mul: xc is 1.10× faster than Objective-C; xc is 1.10× faster than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.19× slower than Objective-C; xc is 1.19× slower than Swift; xc is 1.19× slower than C++ (clang)mem_copymem_copy: the four programsmem_copy: xc is 1.02× slower than Objective-C; xc is 1.06× slower than C++ (clang)mem_copy: xc is 1.12× slower than Swiftcall_depthcall_depth: the four programscall_depth: xc is 1.09× slower than Swift; xc is 1.11× slower than Objective-C; xc is 1.11× slower than C++ (clang)bit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is the same than Swift; xc is the same than C++ (clang); xc is the same than Objective-Cbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than Objective-C; xc is the same than Swift; xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is 1.08× faster than Objective-C; xc is 1.07× faster than C++ (clang); xc is 1.06× faster than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.3× faster than Objective-Carc_alloc: xc is 1.27× slower than Swiftarc_alloc: xc is 2.2× slower than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.10× slower than Objective-C; xc is 1.11× slower than C++ (clang); xc is 1.11× slower than Swiftstring_scanstring_scan: the four programsstring_scan: xc is 1.95× faster than C++ (clang); xc is 1.95× faster than Swift; xc is 1.94× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.28× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.24× slower than Swiftmatrix_mul_f32: xc is 1.76× slower than Objective-C; xc is 1.78× slower than C++ (clang)method_callmethod_call: the four programsmethod_call: xc is 1.41× faster than Objective-C; xc is 1.41× faster than Swiftmethod_call: xc is 1.18× faster than C++ (clang)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.65)
x86-64: xc against each language, per benchmark (0.66)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.0× faster than Objective-Carc_array: xc is 1.94× slower than C++ (clang)arc_array: xc is 2.0× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.14× slower than Objective-C; xc is 1.14× slower than C++ (clang)sort_small: xc is 1.67× slower than Swiftsievesieve: the four programssieve: xc is 1.13× slower than Swiftsieve: xc is 1.67× slower than Objective-C; xc is 1.69× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 2.9× faster than Objective-Carray_sum: xc is 2.2× faster than C++ (clang); xc is 2.2× faster than Swiftarray_maparray_map: the four programsarray_map: xc is 2.7× faster than Swiftarray_map: xc is 2.0× faster than Objective-Carray_map: xc is 1.91× faster than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.02× slower than C++ (clang); xc is 1.02× slower than Objective-C; xc is 1.02× slower than Swiftmatrix_mulmatrix_mul: the four programsmatrix_mul: xc is 3.6× faster than Swiftmatrix_mul: xc is 1.10× faster than C++ (clang); xc is 1.10× faster than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.67× faster than Swift; xc is 1.67× faster than Objective-C; xc is 1.66× faster than C++ (clang)mem_copymem_copy: the four programsmem_copy: xc is 1.52× faster than Objective-C; xc is 1.47× faster than C++ (clang)mem_copy: xc is 1.40× faster than Swiftcall_depthcall_depth: the four programscall_depth: xc is 1.54× slower than Swift; xc is 1.57× slower than C++ (clang); xc is 1.57× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than Swift; xc is the same than C++ (clang); xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Objective-C; xc is the same than Swift; xc is the same than C++ (clang)branch_mixbranch_mix: the four programsbranch_mix: xc is the same than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is 1.06× faster than Swift; xc is 1.06× faster than C++ (clang); xc is 1.06× faster than Objective-Carc_allocarc_alloc: the four programsarc_alloc: xc is 1.99× faster than Objective-Carc_alloc: xc is 1.44× slower than Swiftarc_alloc: xc is 2.5× slower than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.09× slower than Objective-C; xc is 1.09× slower than Swift; xc is 1.09× slower than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 1.95× faster than C++ (clang); xc is 1.95× faster than Swift; xc is 1.94× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.27× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.08× slower than Swiftmatrix_mul_f32: xc is 1.53× slower than Objective-C; xc is 1.54× slower than C++ (clang)method_callmethod_call: the four programsmethod_call: xc is 1.45× faster than Objective-Cmethod_call: xc is 1.21× faster than C++ (clang)method_call: xc is 1.03× slower than Swiftarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.66)
x86-64: xc against each language, per benchmark (0.7)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.0× faster than Objective-Carc_array: xc is 1.89× slower than C++ (clang)arc_array: xc is 2.0× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.19× slower than Objective-C; xc is 1.19× slower than C++ (clang)sort_small: xc is 1.72× slower than Swiftsievesieve: the four programssieve: xc is 1.12× slower than Swiftsieve: xc is 1.63× slower than Objective-C; xc is 1.65× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.1× faster than Objective-Carray_sum: xc is 2.3× faster than C++ (clang); xc is 2.3× faster than Swiftarray_maparray_map: the four programsarray_map: xc is 2.7× faster than Swiftarray_map: xc is 2.0× faster than Objective-Carray_map: xc is 1.91× faster than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.01× slower than C++ (clang); xc is 1.02× slower than Objective-C; xc is 1.02× slower than Swiftmatrix_mulmatrix_mul: the four programsmatrix_mul: xc is 3.6× faster than Swiftmatrix_mul: xc is 1.10× faster than Objective-C; xc is 1.10× faster than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.69× faster than Swift; xc is 1.69× faster than C++ (clang); xc is 1.69× faster than Objective-Cmem_copymem_copy: the four programsmem_copy: xc is 1.87× faster than Objective-C; xc is 1.81× faster than C++ (clang)mem_copy: xc is 1.73× faster than Swiftcall_depthcall_depth: the four programscall_depth: xc is 1.87× faster than Swift; xc is 1.83× faster than Objective-C; xc is 1.83× faster than C++ (clang)bit_opsbit_ops: the four programsbit_ops: xc is the same than Swift; xc is the same than C++ (clang); xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)branch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (clang); xc is the same than Swift; xc is the same than Objective-Chash_mixhash_mix: the four programshash_mix: xc is 1.06× faster than C++ (clang); xc is 1.06× faster than Swift; xc is 1.06× faster than Objective-Carc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Objective-Carc_alloc: xc is 1.29× slower than Swiftarc_alloc: xc is 2.2× slower than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.09× slower than Objective-C; xc is 1.09× slower than C++ (clang); xc is 1.09× slower than Swiftstring_scanstring_scan: the four programsstring_scan: xc is 1.96× faster than C++ (clang); xc is 1.95× faster than Swift; xc is 1.95× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.27× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 1.10× slower than Swiftmatrix_mul_f32: xc is 1.56× slower than Objective-C; xc is 1.57× slower than C++ (clang)method_callmethod_call: the four programsmethod_call: xc is 1.43× faster than Objective-Cmethod_call: xc is 1.20× faster than Swift; xc is 1.20× faster than C++ (clang)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.7)
x86-64: xc against each language, per benchmark (0.71)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.0× faster than Objective-Carc_array: xc is 1.84× slower than C++ (clang)arc_array: xc is 2.0× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.24× slower than Objective-C; xc is 1.24× slower than C++ (clang)sort_small: xc is 1.81× slower than Swiftsievesieve: the four programssieve: xc is 1.02× slower than Swiftsieve: xc is 1.45× slower than Objective-Csieve: xc is 1.51× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 4.3× faster than Objective-Carray_sum: xc is 3.3× faster than C++ (clang); xc is 3.3× faster than Swiftarray_maparray_map: the four programsarray_map: xc is 4.8× faster than Swiftarray_map: xc is 3.7× faster than Objective-Carray_map: xc is 3.4× faster than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.05× slower than Objective-C; xc is 1.05× slower than C++ (clang); xc is 1.06× slower than Swiftmatrix_mulmatrix_mul: the four programsmatrix_mul: xc is 3.6× faster than Swiftmatrix_mul: xc is 1.10× faster than Objective-C; xc is 1.10× faster than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 3.3× faster than Swift; xc is 3.3× faster than Objective-C; xc is 3.3× faster than C++ (clang)mem_copymem_copy: the four programsmem_copy: xc is 2.8× faster than Objective-C; xc is 2.7× faster than C++ (clang)mem_copy: xc is 2.6× faster than Swiftcall_depthcall_depth: the four programscall_depth: xc is 3.7× faster than Swift; xc is 3.6× faster than Objective-C; xc is 3.6× faster than C++ (clang)bit_opsbit_ops: the four programsbit_ops: xc is the same than Swift; xc is the same than C++ (clang); xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than Swiftbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (clang); xc is the same than Swift; xc is the same than Objective-Chash_mixhash_mix: the four programshash_mix: xc is 1.06× faster than Objective-C; xc is 1.06× faster than C++ (clang); xc is 1.06× faster than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.2× faster than Objective-Carc_alloc: xc is 1.30× slower than Swiftarc_alloc: xc is 2.2× slower than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.11× slower than Swift; xc is 1.11× slower than C++ (clang); xc is 1.11× slower than Objective-Cstring_scanstring_scan: the four programsstring_scan: xc is 1.95× faster than C++ (clang); xc is 1.95× faster than Swift; xc is 1.94× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.28× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 22× faster than C++ (clang); xc is 22× faster than Objective-C; xc is 31× faster than Swiftmethod_callmethod_call: the four programsmethod_call: xc is 1.41× faster than Objective-Cmethod_call: xc is 1.21× faster than C++ (clang)method_call: xc is 1.08× faster than Swiftarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.71)
x86-64: xc against each language, per benchmark (0.72)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.2× faster than Objective-Carc_array: xc is 1.78× slower than C++ (clang)arc_array: xc is 1.90× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.23× slower than Objective-C; xc is 1.23× slower than C++ (clang)sort_small: xc is 1.79× slower than Swiftsievesieve: the four programssieve: xc is 1.14× slower than Swiftsieve: xc is 1.71× slower than Objective-C; xc is 1.71× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.8× faster than Objective-Carray_sum: xc is 2.9× faster than Swift; xc is 2.9× faster than C++ (clang)array_maparray_map: the four programsarray_map: xc is 4.8× faster than Swiftarray_map: xc is 3.6× faster than Objective-Carray_map: xc is 3.4× faster than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.05× slower than C++ (clang); xc is 1.05× slower than Objective-C; xc is 1.06× slower than Swiftmatrix_mulmatrix_mul: the four programsmatrix_mul: xc is 3.6× faster than Swiftmatrix_mul: xc is 1.10× faster than Objective-C; xc is 1.10× faster than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 3.3× faster than Swift; xc is 3.3× faster than Objective-C; xc is 3.3× faster than C++ (clang)mem_copymem_copy: the four programsmem_copy: xc is 3.0× faster than Objective-C; xc is 2.9× faster than C++ (clang)mem_copy: xc is 2.7× faster than Swiftcall_depthcall_depth: the four programscall_depth: xc is 3.7× faster than Swift; xc is 3.6× faster than C++ (clang); xc is 3.6× faster than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is the same than Swift; xc is the same than C++ (clang); xc is the same than Objective-Cbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than Swift; xc is the same than C++ (clang); xc is the same than Objective-Chash_mixhash_mix: the four programshash_mix: xc is 1.06× faster than C++ (clang); xc is 1.06× faster than Objective-C; xc is 1.06× faster than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 2.3× faster than Objective-Carc_alloc: xc is 1.27× slower than Swiftarc_alloc: xc is 2.2× slower than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.11× slower than C++ (clang); xc is 1.11× slower than Swift; xc is 1.11× slower than Objective-Cstring_scanstring_scan: the four programsstring_scan: xc is 1.95× faster than C++ (clang); xc is 1.95× faster than Swift; xc is 1.94× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.27× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 28× faster than C++ (clang); xc is 28× faster than Objective-C; xc is 40× faster than Swiftmethod_callmethod_call: the four programsmethod_call: xc is 1.45× faster than Objective-Cmethod_call: xc is 1.21× faster than C++ (clang)method_call: xc is 1.11× faster than Swiftarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.72)
x86-64: xc against each language, per benchmark (0.73)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.2× faster than Objective-Carc_array: xc is 1.79× slower than C++ (clang)arc_array: xc is 1.88× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.27× slower than Objective-C; xc is 1.28× slower than C++ (clang)sort_small: xc is 1.86× slower than Swiftsievesieve: the four programssieve: xc is 1.09× faster than Swiftsieve: xc is 1.32× slower than C++ (clang); xc is 1.35× slower than Objective-Carray_sumarray_sum: the four programsarray_sum: xc is 6.0× faster than Objective-Carray_sum: xc is 4.5× faster than Swift; xc is 4.5× faster than C++ (clang)array_maparray_map: the four programsarray_map: xc is 4.9× faster than Swiftarray_map: xc is 3.7× faster than Objective-Carray_map: xc is 3.4× faster than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.01× slower than C++ (clang); xc is 1.02× slower than Objective-C; xc is 1.02× slower than Swiftmatrix_mulmatrix_mul: the four programsmatrix_mul: xc is 3.2× faster than Swiftmatrix_mul: xc is 1.02× slower than Objective-C; xc is 1.02× slower than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 3.3× faster than Swift; xc is 3.3× faster than Objective-C; xc is 3.3× faster than C++ (clang)mem_copymem_copy: the four programsmem_copy: xc is 3.0× faster than Objective-C; xc is 2.9× faster than C++ (clang)mem_copy: xc is 2.7× faster than Swiftcall_depthcall_depth: the four programscall_depth: xc is 3.7× faster than Swift; xc is 3.6× faster than Objective-C; xc is 3.6× faster than C++ (clang)bit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is the same than Objective-C; xc is the same than Swift; xc is the same than C++ (clang)branch_mixbranch_mix: the four programsbranch_mix: xc is the same than Swift; xc is 1.01× slower than Objective-C; xc is 1.01× slower than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is 1.06× faster than Objective-C; xc is 1.06× faster than C++ (clang); xc is 1.06× faster than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 5.7× faster than Objective-Carc_alloc: xc is 2.0× faster than Swiftarc_alloc: xc is 1.17× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.11× slower than Objective-C; xc is 1.11× slower than Swift; xc is 1.11× slower than C++ (clang)string_scanstring_scan: the four programsstring_scan: xc is 1.95× faster than C++ (clang); xc is 1.95× faster than Swift; xc is 1.94× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.27× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 27× faster than C++ (clang); xc is 27× faster than Objective-C; xc is 40× faster than Swiftmethod_callmethod_call: the four programsmethod_call: xc is 1.45× faster than Objective-Cmethod_call: xc is 1.21× faster than C++ (clang)method_call: xc is 1.03× slower than Swiftarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.73)
x86-64: xc against each language, per benchmark (0.74)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.4× faster than Objective-Carc_array: xc is 1.43× slower than C++ (clang)arc_array: xc is 1.74× slower than C++ (GCC)arc_array: xc is 1.96× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.66× slower than Swiftsort_small: xc is 2.3× slower than C++ (GCC)sort_small: xc is 2.6× slower than C++ (clang); xc is 2.6× slower than Objective-Csievesieve: the four programssieve: xc is 1.05× faster than Swiftsieve: xc is 1.32× slower than C++ (GCC)sieve: xc is 1.45× slower than Objective-C; xc is 1.46× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.0× faster than C++ (GCC)array_sum: xc is 1.51× faster than C++ (clang)array_sum: xc is 1.07× slower than Objective-C; xc is 1.08× slower than Swiftarray_maparray_map: the four programsarray_map: xc is 4.8× faster than C++ (GCC)array_map: xc is 1.21× faster than Swiftarray_map: xc is 1.57× slower than Objective-C; xc is 1.59× slower than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.01× slower than C++ (clang); xc is 1.02× slower than Swift; xc is 1.02× slower than Objective-Cfloat_math: xc is 1.12× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 3.0× faster than Swiftmatrix_mul: xc is 4.8× slower than C++ (clang)matrix_mul: xc is 8.0× slower than C++ (GCC); xc is 8.2× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.51× slower than C++ (clang); xc is 1.51× slower than Swift; xc is 1.52× slower than Objective-Cint_muldiv: xc is 2.9× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.55× faster than Swiftmem_copy: xc is 1.48× faster than Objective-Cmem_copy: xc is 1.08× faster than C++ (GCC)mem_copy: xc is 1.01× slower than C++ (clang)call_depthcall_depth: the four programscall_depth: xc is 1.10× slower than C++ (GCC)call_depth: xc is 1.39× slower than C++ (clang); xc is 1.39× slower than Objective-C; xc is 1.40× slower than Swiftbit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (GCC); xc is the same than Objective-C; xc is the same than Swift; xc is the same than C++ (clang)int_accumint_accum: the four programsint_accum: xc is the same than Swift; xc is the same than C++ (GCC); xc is the same than Objective-C; xc is the same than C++ (clang)branch_mixbranch_mix: the four programsbranch_mix: xc is the same than Swift; xc is the same than C++ (GCC); xc is 1.01× slower than Objective-C; xc is 1.01× slower than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than C++ (clang); xc is the same than Swift; xc is the same than C++ (GCC); xc is the same than Objective-Carc_allocarc_alloc: the four programsarc_alloc: xc is 5.7× faster than Objective-Carc_alloc: xc is 1.96× faster than Swiftarc_alloc: xc is 1.17× faster than C++ (GCC); xc is 1.16× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is the same than C++ (clang); xc is the same than Swift; xc is the same than Objective-Cstruct_copy: xc is 1.34× slower than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.92× slower than C++ (GCC)string_scan: xc is 2.9× slower than C++ (clang); xc is 3.0× slower than Swift; xc is 3.0× slower than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.27× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 37× faster than C++ (clang); xc is 37× faster than Objective-C; xc is 38× faster than Swiftmatrix_mul_f32: xc is 3.7× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 1.45× faster than Objective-Cmethod_call: xc is 1.23× faster than C++ (GCC); xc is 1.21× faster than C++ (clang)method_call: xc is 1.02× slower than Swiftarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.74)
x86-64: xc against each language, per benchmark (0.75)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.2× faster than Objective-Carc_array: xc is 1.51× slower than C++ (clang)arc_array: xc is 1.85× slower than C++ (GCC)arc_array: xc is 2.1× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.19× faster than Swiftsort_small: xc is 1.13× slower than C++ (GCC)sort_small: xc is 1.30× slower than C++ (clang); xc is 1.30× slower than Objective-Csievesieve: the four programssieve: xc is 1.18× faster than Swiftsieve: xc is 1.19× slower than C++ (GCC)sieve: xc is 1.29× slower than C++ (clang); xc is 1.30× slower than Objective-Carray_sumarray_sum: the four programsarray_sum: xc is 1.95× faster than C++ (GCC)array_sum: xc is 1.02× slower than C++ (clang)array_sum: xc is 1.65× slower than Objective-C; xc is 1.65× slower than Swiftarray_maparray_map: the four programsarray_map: xc is 6.2× faster than C++ (GCC)array_map: xc is 1.58× faster than C++ (clang); xc is 1.58× faster than Swiftarray_map: xc is 1.22× slower than Objective-Cfloat_mathfloat_math: the four programsfloat_math: xc is 1.03× slower than Objective-C; xc is 1.03× slower than C++ (clang); xc is 1.03× slower than Swiftfloat_math: xc is 1.13× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 15.4× faster than Swiftmatrix_mul: xc is 1.56× slower than C++ (GCC); xc is 1.61× slower than Objective-C; xc is 1.61× slower than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.51× slower than Objective-C; xc is 1.51× slower than C++ (clang); xc is 1.51× slower than Swiftint_muldiv: xc is 3.0× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.57× faster than Swiftmem_copy: xc is 1.50× faster than C++ (clang)mem_copy: xc is 1.10× faster than C++ (GCC)mem_copy: xc is the same than Objective-Ccall_depthcall_depth: the four programscall_depth: xc is 1.10× slower than C++ (GCC)call_depth: xc is 1.39× slower than Swift; xc is 1.39× slower than C++ (clang); xc is 1.40× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Objective-C; xc is the same than Swift; xc is the same than C++ (GCC); xc is the same than C++ (clang)branch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Swift; xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than C++ (GCC)arc_allocarc_alloc: the four programsarc_alloc: xc is 5.5× faster than Objective-Carc_alloc: xc is 1.89× faster than Swiftarc_alloc: xc is 1.12× faster than C++ (GCC); xc is 1.12× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.02× faster than Objective-C; xc is 1.02× faster than C++ (clang); xc is 1.02× faster than Swiftstruct_copy: xc is 1.32× slower than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.78× faster than C++ (GCC)string_scan: xc is 1.16× faster than Objective-C; xc is 1.16× faster than C++ (clang); xc is 1.15× faster than Swiftpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.28× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 36× faster than C++ (clang); xc is 36× faster than Objective-C; xc is 35× faster than Swiftmatrix_mul_f32: xc is 3.6× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 1.47× faster than Objective-Cmethod_call: xc is 1.23× faster than C++ (clang); xc is 1.22× faster than C++ (GCC)method_call: xc is 1.02× slower than Swiftarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.75)
x86-64: xc against each language, per benchmark (0.8)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.2× faster than Objective-Carc_array: xc is 1.50× slower than C++ (clang)arc_array: xc is 1.84× slower than C++ (GCC)arc_array: xc is 2.1× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.22× faster than Swiftsort_small: xc is 1.11× slower than C++ (GCC)sort_small: xc is 1.28× slower than C++ (clang); xc is 1.28× slower than Objective-Csievesieve: the four programssieve: xc is 1.18× faster than Swiftsieve: xc is 1.19× slower than C++ (GCC)sieve: xc is 1.31× slower than Objective-C; xc is 1.32× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 1.95× faster than C++ (GCC)array_sum: xc is 1.65× slower than Objective-C; xc is 1.66× slower than C++ (clang); xc is 1.66× slower than Swiftarray_maparray_map: the four programsarray_map: xc is 6.2× faster than C++ (GCC)array_map: xc is 1.58× faster than Swiftarray_map: xc is 1.20× slower than Objective-C; xc is 1.22× slower than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.03× slower than Swift; xc is 1.03× slower than Objective-C; xc is 1.04× slower than C++ (clang)float_math: xc is 1.13× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 21× faster than Swiftmatrix_mul: xc is 1.50× faster than Objective-Cmatrix_mul: xc is 1.13× slower than C++ (GCC); xc is 1.16× slower than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.51× slower than Objective-C; xc is 1.51× slower than Swift; xc is 1.51× slower than C++ (clang)int_muldiv: xc is 3.0× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.57× faster than Swiftmem_copy: xc is 1.51× faster than Objective-Cmem_copy: xc is 1.10× faster than C++ (GCC)mem_copy: xc is the same than C++ (clang)call_depthcall_depth: the four programscall_depth: xc is 1.10× slower than C++ (GCC)call_depth: xc is 1.39× slower than Swift; xc is 1.40× slower than C++ (clang); xc is 1.40× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (GCC); xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than Swifthash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than C++ (clang)arc_allocarc_alloc: the four programsarc_alloc: xc is 5.6× faster than Objective-Carc_alloc: xc is 1.87× faster than Swiftarc_alloc: xc is 1.12× faster than C++ (GCC); xc is 1.11× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.02× faster than Swift; xc is 1.02× faster than Objective-C; xc is 1.02× faster than C++ (clang)struct_copy: xc is 1.32× slower than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.78× faster than C++ (GCC)string_scan: xc is 1.16× faster than C++ (clang); xc is 1.15× faster than Objective-C; xc is 1.15× faster than Swiftpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.28× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 37× faster than C++ (clang); xc is 37× faster than Objective-C; xc is 36× faster than Swiftmatrix_mul_f32: xc is 3.6× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 1.46× faster than Objective-Cmethod_call: xc is 1.22× faster than C++ (GCC); xc is 1.22× faster than C++ (clang)method_call: xc is 1.12× faster than Swiftarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.8)
x86-64: xc against each language, per benchmark (0.85)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.3× faster than Objective-Carc_array: xc is 1.48× slower than C++ (clang)arc_array: xc is 1.81× slower than C++ (GCC)arc_array: xc is 2.0× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.21× faster than Swiftsort_small: xc is 1.12× slower than C++ (GCC)sort_small: xc is 1.27× slower than C++ (clang); xc is 1.28× slower than Objective-Csievesieve: the four programssieve: xc is 1.14× faster than Swiftsieve: xc is 1.24× slower than C++ (GCC)sieve: xc is 1.36× slower than Objective-C; xc is 1.37× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.5× faster than C++ (GCC)array_sum: xc is 1.10× faster than Objective-C; xc is 1.09× faster than C++ (clang); xc is 1.08× faster than Swiftarray_maparray_map: the four programsarray_map: xc is 6.2× faster than C++ (GCC)array_map: xc is 1.61× faster than Objective-C; xc is 1.58× faster than Swiftarray_map: xc is 1.22× slower than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.01× faster than Objective-C; xc is the same than C++ (clang); xc is the same than Swiftfloat_math: xc is 1.10× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 21× faster than Swiftmatrix_mul: xc is 1.44× faster than Objective-Cmatrix_mul: xc is 1.15× slower than C++ (GCC); xc is 1.19× slower than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.50× slower than Objective-C; xc is 1.51× slower than Swift; xc is 1.51× slower than C++ (clang)int_muldiv: xc is 2.9× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.58× faster than Swiftmem_copy: xc is 1.11× faster than C++ (GCC)mem_copy: xc is the same than Objective-C; xc is the same than C++ (clang)call_depthcall_depth: the four programscall_depth: xc is 1.01× slower than C++ (GCC)call_depth: xc is 1.27× slower than Swift; xc is 1.28× slower than C++ (clang); xc is 1.28× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Swift; xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Swift; xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Objective-Cbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than C++ (clang)arc_allocarc_alloc: the four programsarc_alloc: xc is 5.4× faster than Objective-Carc_alloc: xc is 1.82× faster than Swiftarc_alloc: xc is 1.09× faster than C++ (GCC); xc is 1.08× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.02× faster than C++ (clang); xc is 1.02× faster than Objective-C; xc is 1.02× faster than Swiftstruct_copy: xc is 1.32× slower than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.79× faster than C++ (GCC)string_scan: xc is 1.16× faster than C++ (clang); xc is 1.15× faster than Swift; xc is 1.15× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.28× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 36× faster than C++ (clang); xc is 36× faster than Objective-C; xc is 35× faster than Swiftmatrix_mul_f32: xc is 3.6× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 1.45× faster than Objective-Cmethod_call: xc is 1.38× faster than Swiftmethod_call: xc is 1.21× faster than C++ (GCC); xc is 1.20× faster than C++ (clang)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.85)
x86-64: xc against each language, per benchmark (0.86)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.3× faster than Objective-Carc_array: xc is 1.46× slower than C++ (clang)arc_array: xc is 1.79× slower than C++ (GCC)arc_array: xc is 2.0× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.20× faster than Swiftsort_small: xc is 1.13× slower than C++ (GCC)sort_small: xc is 1.28× slower than C++ (clang); xc is 1.29× slower than Objective-Csievesieve: the four programssieve: xc is 1.14× faster than Swiftsieve: xc is 1.24× slower than C++ (GCC)sieve: xc is 1.36× slower than Objective-C; xc is 1.37× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.12× faster than Objective-C; xc is 1.11× faster than C++ (clang); xc is 1.10× faster than Swiftarray_maparray_map: the four programsarray_map: xc is 6.2× faster than C++ (GCC)array_map: xc is 1.61× faster than Objective-C; xc is 1.58× faster than Swiftarray_map: xc is 1.22× slower than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than Swiftfloat_math: xc is 1.10× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 21× faster than Swiftmatrix_mul: xc is 1.44× faster than Objective-Cmatrix_mul: xc is 1.16× slower than C++ (GCC); xc is 1.19× slower than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.50× slower than Objective-C; xc is 1.50× slower than Swift; xc is 1.50× slower than C++ (clang)int_muldiv: xc is 2.9× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.58× faster than Swiftmem_copy: xc is 1.10× faster than C++ (GCC)mem_copy: xc is the same than Objective-C; xc is the same than C++ (clang)call_depthcall_depth: the four programscall_depth: xc is 1.01× slower than C++ (GCC)call_depth: xc is 1.28× slower than Swift; xc is 1.28× slower than C++ (clang); xc is 1.28× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Swift; xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Swift; xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Objective-Cbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than C++ (clang)arc_allocarc_alloc: the four programsarc_alloc: xc is 5.5× faster than Objective-Carc_alloc: xc is 1.84× faster than Swiftarc_alloc: xc is 1.10× faster than C++ (GCC); xc is 1.09× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.01× faster than C++ (clang); xc is 1.01× faster than Objective-C; xc is 1.01× faster than Swiftstruct_copy: xc is 1.32× slower than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.79× faster than C++ (GCC)string_scan: xc is 1.17× faster than C++ (clang); xc is 1.16× faster than Swift; xc is 1.16× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.28× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 36× faster than C++ (clang); xc is 36× faster than Objective-C; xc is 35× faster than Swiftmatrix_mul_f32: xc is 3.7× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 1.45× faster than Objective-Cmethod_call: xc is 1.38× faster than Swiftmethod_call: xc is 1.21× faster than C++ (GCC); xc is 1.21× faster than C++ (clang)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.86)
x86-64: xc against each language, per benchmark (0.87)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.3× faster than Objective-Carc_array: xc is 1.48× slower than C++ (clang)arc_array: xc is 1.81× slower than C++ (GCC)arc_array: xc is 2.0× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.18× faster than Swiftsort_small: xc is 1.15× slower than C++ (GCC)sort_small: xc is 1.31× slower than C++ (clang); xc is 1.32× slower than Objective-Csievesieve: the four programssieve: xc is 1.20× faster than Swiftsieve: xc is 1.18× slower than C++ (GCC)sieve: xc is 1.29× slower than Objective-C; xc is 1.29× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.12× faster than Objective-C; xc is 1.11× faster than C++ (clang); xc is 1.10× faster than Swiftarray_maparray_map: the four programsarray_map: xc is 6.2× faster than C++ (GCC)array_map: xc is 1.60× faster than Objective-C; xc is 1.57× faster than Swiftarray_map: xc is 1.22× slower than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.01× faster than Objective-C; xc is the same than C++ (clang); xc is the same than Swiftfloat_math: xc is 1.10× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 20× faster than Swiftmatrix_mul: xc is 1.41× faster than Objective-Cmatrix_mul: xc is 1.18× slower than C++ (GCC); xc is 1.21× slower than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.50× slower than Objective-C; xc is 1.50× slower than Swift; xc is 1.50× slower than C++ (clang)int_muldiv: xc is 2.9× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.58× faster than Swiftmem_copy: xc is 1.10× faster than C++ (GCC)mem_copy: xc is the same than Objective-C; xc is the same than C++ (clang)call_depthcall_depth: the four programscall_depth: xc is 1.01× slower than C++ (GCC)call_depth: xc is 1.28× slower than Swift; xc is 1.28× slower than C++ (clang); xc is 1.28× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Swift; xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Swift; xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Objective-Cbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than C++ (clang)arc_allocarc_alloc: the four programsarc_alloc: xc is 5.5× faster than Objective-Carc_alloc: xc is 1.87× faster than Swiftarc_alloc: xc is 1.11× faster than C++ (GCC); xc is 1.11× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.02× faster than C++ (clang); xc is 1.02× faster than Objective-C; xc is 1.01× faster than Swiftstruct_copy: xc is 1.32× slower than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.78× faster than C++ (GCC)string_scan: xc is 1.16× faster than C++ (clang); xc is 1.15× faster than Swift; xc is 1.15× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.27× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 36× faster than C++ (clang); xc is 36× faster than Objective-C; xc is 35× faster than Swiftmatrix_mul_f32: xc is 3.6× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 1.44× faster than Objective-Cmethod_call: xc is 1.37× faster than Swiftmethod_call: xc is 1.20× faster than C++ (GCC); xc is 1.20× faster than C++ (clang)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.87)
x86-64: xc against each language, per benchmark (0.87.3)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.2× faster than Objective-Carc_array: xc is 1.53× slower than C++ (clang)arc_array: xc is 1.87× slower than C++ (GCC)arc_array: xc is 2.1× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.20× faster than Swiftsort_small: xc is 1.13× slower than C++ (GCC)sort_small: xc is 1.28× slower than C++ (clang); xc is 1.29× slower than Objective-Csievesieve: the four programssieve: xc is 1.19× faster than Swiftsieve: xc is 1.19× slower than C++ (GCC)sieve: xc is 1.30× slower than Objective-C; xc is 1.31× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.12× faster than Objective-C; xc is 1.10× faster than C++ (clang); xc is 1.10× faster than Swiftarray_maparray_map: the four programsarray_map: xc is 6.2× faster than C++ (GCC)array_map: xc is 1.60× faster than Objective-C; xc is 1.57× faster than Swiftarray_map: xc is 1.22× slower than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.01× faster than Objective-C; xc is the same than C++ (clang); xc is the same than Swiftfloat_math: xc is 1.10× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 21× faster than Swiftmatrix_mul: xc is 1.42× faster than Objective-Cmatrix_mul: xc is 1.17× slower than C++ (GCC); xc is 1.21× slower than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.50× slower than Objective-C; xc is 1.50× slower than Swift; xc is 1.50× slower than C++ (clang)int_muldiv: xc is 2.9× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.58× faster than Swiftmem_copy: xc is 1.10× faster than C++ (GCC)mem_copy: xc is the same than Objective-C; xc is the same than C++ (clang)call_depthcall_depth: the four programscall_depth: xc is 1.01× slower than C++ (GCC)call_depth: xc is 1.27× slower than Swift; xc is 1.28× slower than C++ (clang); xc is 1.28× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Swift; xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Swift; xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Objective-Cbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than C++ (clang)arc_allocarc_alloc: the four programsarc_alloc: xc is 5.6× faster than Objective-Carc_alloc: xc is 1.88× faster than Swiftarc_alloc: xc is 1.12× faster than C++ (GCC); xc is 1.11× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.02× faster than C++ (clang); xc is 1.02× faster than Objective-C; xc is 1.02× faster than Swiftstruct_copy: xc is 1.32× slower than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.79× faster than C++ (GCC)string_scan: xc is 1.16× faster than C++ (clang); xc is 1.15× faster than Swift; xc is 1.15× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.28× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 37× faster than C++ (clang); xc is 37× faster than Objective-C; xc is 36× faster than Swiftmatrix_mul_f32: xc is 3.7× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 1.44× faster than Objective-Cmethod_call: xc is 1.37× faster than Swiftmethod_call: xc is 1.20× faster than C++ (GCC); xc is 1.20× faster than C++ (clang)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.87.3)
x86-64: xc against each language, per benchmark (0.88)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.1× faster than Objective-Carc_array: xc is 1.57× slower than C++ (clang)arc_array: xc is 1.93× slower than C++ (GCC)arc_array: xc is 2.2× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.20× faster than Swiftsort_small: xc is 1.12× slower than C++ (GCC)sort_small: xc is 1.28× slower than C++ (clang); xc is 1.29× slower than Objective-Csievesieve: the four programssieve: xc is 1.20× faster than Swiftsieve: xc is 1.18× slower than C++ (GCC)sieve: xc is 1.30× slower than Objective-C; xc is 1.30× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.12× faster than Objective-C; xc is 1.11× faster than C++ (clang); xc is 1.11× faster than Swiftarray_maparray_map: the four programsarray_map: xc is 6.1× faster than C++ (GCC)array_map: xc is 1.59× faster than Objective-C; xc is 1.55× faster than Swiftarray_map: xc is 1.24× slower than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than Swiftfloat_math: xc is 1.10× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 21× faster than Swiftmatrix_mul: xc is 1.47× faster than Objective-Cmatrix_mul: xc is 1.13× slower than C++ (GCC); xc is 1.16× slower than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.50× slower than Objective-C; xc is 1.50× slower than Swift; xc is 1.50× slower than C++ (clang)int_muldiv: xc is 2.9× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.57× faster than Swiftmem_copy: xc is 1.10× faster than C++ (GCC)mem_copy: xc is 1.01× slower than Objective-C; xc is 1.01× slower than C++ (clang)call_depthcall_depth: the four programscall_depth: xc is 1.01× slower than C++ (GCC)call_depth: xc is 1.28× slower than Swift; xc is 1.28× slower than C++ (clang); xc is 1.28× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Swift; xc is 1.01× slower than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Swift; xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Objective-Cbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than C++ (clang)arc_allocarc_alloc: the four programsarc_alloc: xc is 5.5× faster than Objective-Carc_alloc: xc is 1.86× faster than Swiftarc_alloc: xc is 1.11× faster than C++ (GCC); xc is 1.10× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.02× faster than C++ (clang); xc is 1.02× faster than Objective-C; xc is 1.02× faster than Swiftstruct_copy: xc is 1.32× slower than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.78× faster than C++ (GCC)string_scan: xc is 1.16× faster than C++ (clang); xc is 1.15× faster than Swift; xc is 1.15× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.28× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 36× faster than C++ (clang); xc is 37× faster than Objective-C; xc is 35× faster than Swiftmatrix_mul_f32: xc is 3.7× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 1.44× faster than Objective-Cmethod_call: xc is 1.37× faster than Swiftmethod_call: xc is 1.20× faster than C++ (GCC); xc is 1.20× faster than C++ (clang)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.88)
x86-64: xc against each language, per benchmark (0.89)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 3.2× faster than Objective-Carc_array: xc is 1.50× slower than C++ (clang)arc_array: xc is 1.83× slower than C++ (GCC)arc_array: xc is 2.1× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.20× faster than Swiftsort_small: xc is 1.13× slower than C++ (GCC)sort_small: xc is 1.28× slower than C++ (clang); xc is 1.29× slower than Objective-Csievesieve: the four programssieve: xc is 1.20× faster than Swiftsieve: xc is 1.18× slower than C++ (GCC)sieve: xc is 1.30× slower than Objective-C; xc is 1.30× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.12× faster than Objective-C; xc is 1.11× faster than C++ (clang); xc is 1.10× faster than Swiftarray_maparray_map: the four programsarray_map: xc is 6.1× faster than C++ (GCC)array_map: xc is 1.59× faster than Objective-C; xc is 1.55× faster than Swiftarray_map: xc is 1.24× slower than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.01× faster than Objective-C; xc is the same than C++ (clang); xc is the same than Swiftfloat_math: xc is 1.10× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 21× faster than Swiftmatrix_mul: xc is 1.48× faster than Objective-Cmatrix_mul: xc is 1.12× slower than C++ (GCC); xc is 1.16× slower than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.50× slower than Objective-C; xc is 1.50× slower than Swift; xc is 1.50× slower than C++ (clang)int_muldiv: xc is 2.9× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.57× faster than Swiftmem_copy: xc is 1.09× faster than C++ (GCC)mem_copy: xc is 1.01× slower than Objective-C; xc is 1.01× slower than C++ (clang)call_depthcall_depth: the four programscall_depth: xc is 1.01× slower than C++ (GCC)call_depth: xc is 1.28× slower than Swift; xc is 1.28× slower than C++ (clang); xc is 1.28× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Swift; xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Swift; xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Objective-Cbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than C++ (clang)arc_allocarc_alloc: the four programsarc_alloc: xc is 5.6× faster than Objective-Carc_alloc: xc is 1.88× faster than Swiftarc_alloc: xc is 1.12× faster than C++ (GCC); xc is 1.11× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.02× faster than C++ (clang); xc is 1.02× faster than Objective-C; xc is 1.02× faster than Swiftstruct_copy: xc is 1.32× slower than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.78× faster than C++ (GCC)string_scan: xc is 1.16× faster than C++ (clang); xc is 1.15× faster than Swift; xc is 1.15× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.27× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 35× faster than C++ (clang); xc is 36× faster than Objective-C; xc is 34× faster than Swiftmatrix_mul_f32: xc is 3.6× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 1.44× faster than Objective-Cmethod_call: xc is 1.37× faster than Swiftmethod_call: xc is 1.20× faster than C++ (GCC); xc is 1.20× faster than C++ (clang)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.89)
x86-64: xc against each language, per benchmark (0.9)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 4.5× faster than Objective-Carc_array: xc is 1.07× slower than C++ (clang)arc_array: xc is 1.31× slower than C++ (GCC)arc_array: xc is 1.47× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.20× faster than Swiftsort_small: xc is 1.12× slower than C++ (GCC)sort_small: xc is 1.28× slower than C++ (clang); xc is 1.29× slower than Objective-Csievesieve: the four programssieve: xc is 1.19× faster than Swiftsieve: xc is 1.18× slower than C++ (GCC)sieve: xc is 1.30× slower than Objective-C; xc is 1.30× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.5× faster than C++ (GCC)array_sum: xc is 1.11× faster than Objective-C; xc is 1.10× faster than C++ (clang); xc is 1.09× faster than Swiftarray_maparray_map: the four programsarray_map: xc is 6.1× faster than C++ (GCC)array_map: xc is 1.59× faster than Objective-C; xc is 1.56× faster than Swiftarray_map: xc is 1.24× slower than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is the same than Objective-C; xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Swiftfloat_math: xc is 1.10× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 21× faster than Swiftmatrix_mul: xc is 1.47× faster than Objective-Cmatrix_mul: xc is 1.13× slower than C++ (GCC); xc is 1.17× slower than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.50× slower than Objective-C; xc is 1.50× slower than Swift; xc is 1.50× slower than C++ (clang)int_muldiv: xc is 2.9× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.57× faster than Swiftmem_copy: xc is 1.10× faster than C++ (GCC)mem_copy: xc is 1.01× slower than Objective-C; xc is 1.01× slower than C++ (clang)call_depthcall_depth: the four programscall_depth: xc is 1.02× faster than C++ (GCC)call_depth: xc is 1.24× slower than Swift; xc is 1.25× slower than C++ (clang); xc is 1.25× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Swift; xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Swift; xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Objective-Cbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than C++ (clang)arc_allocarc_alloc: the four programsarc_alloc: xc is 5.4× faster than Objective-Carc_alloc: xc is 1.83× faster than Swiftarc_alloc: xc is 1.09× faster than C++ (GCC); xc is 1.09× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.52× faster than C++ (clang); xc is 1.52× faster than Objective-C; xc is 1.52× faster than Swiftstruct_copy: xc is 1.13× faster than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.78× faster than C++ (GCC)string_scan: xc is 1.16× faster than C++ (clang); xc is 1.15× faster than Swift; xc is 1.15× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.28× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 36× faster than C++ (clang); xc is 36× faster than Objective-C; xc is 35× faster than Swiftmatrix_mul_f32: xc is 3.6× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 1.43× faster than Objective-Cmethod_call: xc is 1.36× faster than Swiftmethod_call: xc is 1.19× faster than C++ (GCC); xc is 1.19× faster than C++ (clang)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.9)
x86-64: xc against each language, per benchmark (0.9.1)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 4.3× faster than Objective-Carc_array: xc is 1.14× slower than C++ (clang)arc_array: xc is 1.39× slower than C++ (GCC)arc_array: xc is 1.56× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.15× faster than Swiftsort_small: xc is 1.18× slower than C++ (GCC)sort_small: xc is 1.34× slower than C++ (clang); xc is 1.35× slower than Objective-Csievesieve: the four programssieve: xc is 1.28× faster than Swiftsieve: xc is 1.11× slower than C++ (GCC)sieve: xc is 1.21× slower than Objective-C; xc is 1.22× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.5× faster than C++ (GCC)array_sum: xc is 1.10× faster than Objective-C; xc is 1.09× faster than C++ (clang); xc is 1.09× faster than Swiftarray_maparray_map: the four programsarray_map: xc is 6.6× faster than C++ (GCC)array_map: xc is 1.70× faster than Objective-C; xc is 1.67× faster than Swiftarray_map: xc is 1.15× slower than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.01× faster than Objective-C; xc is the same than C++ (clang); xc is the same than Swiftfloat_math: xc is 1.10× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 22× faster than Swiftmatrix_mul: xc is 1.50× faster than Objective-Cmatrix_mul: xc is 1.10× slower than C++ (GCC); xc is 1.14× slower than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.13× slower than Objective-C; xc is 1.13× slower than Swift; xc is 1.13× slower than C++ (clang)int_muldiv: xc is 2.2× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.56× faster than Swiftmem_copy: xc is 1.09× faster than C++ (GCC)mem_copy: xc is 1.02× slower than Objective-C; xc is 1.02× slower than C++ (clang)call_depthcall_depth: the four programscall_depth: xc is 1.26× faster than C++ (GCC)call_depth: xc is 1.01× slower than Swift; xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Swift; xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Swift; xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Objective-Cbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than C++ (clang)arc_allocarc_alloc: the four programsarc_alloc: xc is 5.5× faster than Objective-Carc_alloc: xc is 1.86× faster than Swiftarc_alloc: xc is 1.11× faster than C++ (GCC); xc is 1.10× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.53× faster than C++ (clang); xc is 1.53× faster than Objective-C; xc is 1.52× faster than Swiftstruct_copy: xc is 1.14× faster than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.78× faster than C++ (GCC)string_scan: xc is 1.16× faster than C++ (clang); xc is 1.15× faster than Swift; xc is 1.15× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.28× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 35× faster than C++ (clang); xc is 36× faster than Objective-C; xc is 34× faster than Swiftmatrix_mul_f32: xc is 3.6× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 1.42× faster than Objective-Cmethod_call: xc is 1.35× faster than Swiftmethod_call: xc is 1.18× faster than C++ (GCC); xc is 1.18× faster than C++ (clang)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.9.1)
x86-64: xc against each language, per benchmark (0.9.2)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 4.8× faster than Objective-Carc_array: xc is 1.01× slower than C++ (clang)arc_array: xc is 1.14× slower than C++ (GCC)arc_array: xc is 1.33× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.14× faster than Swiftsort_small: xc is 1.19× slower than C++ (GCC)sort_small: xc is 1.35× slower than C++ (clang); xc is 1.36× slower than Objective-Csievesieve: the four programssieve: xc is 1.27× faster than Swiftsieve: xc is 1.11× slower than C++ (GCC)sieve: xc is 1.22× slower than Objective-C; xc is 1.22× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.5× faster than C++ (GCC)array_sum: xc is 1.10× faster than Objective-C; xc is 1.09× faster than C++ (clang); xc is 1.09× faster than Swiftarray_maparray_map: the four programsarray_map: xc is 6.6× faster than C++ (GCC)array_map: xc is 1.71× faster than Objective-C; xc is 1.67× faster than Swiftarray_map: xc is 1.15× slower than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.01× faster than Objective-C; xc is the same than C++ (clang); xc is the same than Swiftfloat_math: xc is 1.09× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 22× faster than Swiftmatrix_mul: xc is 1.50× faster than Objective-Cmatrix_mul: xc is 1.11× slower than C++ (GCC); xc is 1.14× slower than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.13× slower than Objective-C; xc is 1.13× slower than Swift; xc is 1.13× slower than C++ (clang)int_muldiv: xc is 2.2× slower than C++ (GCC)mem_copymem_copy: the four programsmem_copy: xc is 1.54× faster than Swiftmem_copy: xc is 1.08× faster than C++ (GCC)mem_copy: xc is 1.03× slower than Objective-C; xc is 1.03× slower than C++ (clang)call_depthcall_depth: the four programscall_depth: xc is 1.26× faster than C++ (GCC)call_depth: xc is the same than Swift; xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Swift; xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Swift; xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Objective-Cbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than Objective-C; xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than C++ (clang)arc_allocarc_alloc: the four programsarc_alloc: xc is 5.4× faster than Objective-Carc_alloc: xc is 1.82× faster than Swiftarc_alloc: xc is 1.09× faster than C++ (GCC); xc is 1.08× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.53× faster than C++ (clang); xc is 1.52× faster than Objective-C; xc is 1.52× faster than Swiftstruct_copy: xc is 1.14× faster than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.79× faster than C++ (GCC)string_scan: xc is 1.16× faster than C++ (clang); xc is 1.16× faster than Swift; xc is 1.15× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.28× faster than Objective-Cpoly_dispatch: xc is 1.04× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 36× faster than C++ (clang); xc is 37× faster than Objective-C; xc is 35× faster than Swiftmatrix_mul_f32: xc is 3.7× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 1.34× faster than Objective-Cmethod_call: xc is 1.27× faster than Swiftmethod_call: xc is 1.11× faster than C++ (GCC); xc is 1.11× faster than C++ (clang)array_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.9.2)
x86-64: xc against each language, per benchmark (0.9.3)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 4.7× faster than Objective-Carc_array: xc is 1.03× slower than C++ (clang)arc_array: xc is 1.14× slower than C++ (GCC)arc_array: xc is 1.35× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.14× faster than Swiftsort_small: xc is 1.19× slower than C++ (GCC)sort_small: xc is 1.36× slower than C++ (clang); xc is 1.36× slower than Objective-Csievesieve: the four programssieve: xc is 1.29× faster than Swiftsieve: xc is 1.08× slower than C++ (GCC)sieve: xc is 1.20× slower than C++ (clang); xc is 1.20× slower than Objective-Carray_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.65× faster than C++ (clang)array_sum: xc is 1.13× slower than Objective-C; xc is 1.16× slower than Swiftarray_maparray_map: the four programsarray_map: xc is 6.7× faster than C++ (GCC)array_map: xc is 1.73× faster than C++ (clang); xc is 1.71× faster than Swiftarray_map: xc is 1.13× slower than Objective-Cfloat_mathfloat_math: the four programsfloat_math: xc is 1.01× faster than C++ (clang); xc is 1.01× faster than Objective-C; xc is the same than Swiftfloat_math: xc is 1.09× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 22× faster than Swiftmatrix_mul: xc is 1.02× slower than Objective-C; xc is 1.03× slower than C++ (clang)matrix_mul: xc is 1.08× slower than C++ (GCC)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.12× faster than C++ (GCC)int_muldiv: xc is 1.02× slower than C++ (clang); xc is 1.03× slower than Objective-C; xc is 1.03× slower than Swiftmem_copymem_copy: the four programsmem_copy: xc is 1.54× faster than Swiftmem_copy: xc is 1.47× faster than Objective-Cmem_copy: xc is 1.08× faster than C++ (GCC)mem_copy: xc is 1.03× slower than C++ (clang)call_depthcall_depth: the four programscall_depth: xc is 1.26× faster than C++ (GCC)call_depth: xc is 1.01× slower than Swift; xc is 1.01× slower than Objective-C; xc is 1.01× slower than C++ (clang)bit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Swiftbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (GCC); xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than Swifthash_mixhash_mix: the four programshash_mix: xc is 1.03× faster than Objective-C; xc is 1.03× faster than C++ (clang); xc is 1.01× faster than C++ (GCC); xc is the same than Swiftarc_allocarc_alloc: the four programsarc_alloc: xc is 5.3× faster than Objective-Carc_alloc: xc is 1.82× faster than Swiftarc_alloc: xc is 1.09× faster than C++ (GCC); xc is 1.08× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.52× faster than Objective-C; xc is 1.52× faster than C++ (clang); xc is 1.52× faster than Swiftstruct_copy: xc is 1.14× faster than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.78× faster than C++ (GCC)string_scan: xc is 1.16× faster than C++ (clang); xc is 1.16× faster than Objective-C; xc is 1.15× faster than Swiftpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 6.9× faster than Swiftpoly_dispatch: xc is 1.28× faster than Objective-Cpoly_dispatch: xc is 1.03× slower than C++ (GCC); xc is 1.04× slower than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 36× faster than C++ (clang); xc is 36× faster than Objective-C; xc is 35× faster than Swiftmatrix_mul_f32: xc is 3.6× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 1.33× faster than Objective-Cmethod_call: xc is 1.11× faster than C++ (clang); xc is 1.11× faster than C++ (GCC)method_call: xc is 1.03× faster than Swiftarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.9.3)
x86-64: xc against each language, per benchmark (0.9.4)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 4.6× faster than Objective-Carc_array: xc is 1.05× slower than C++ (clang)arc_array: xc is 1.16× slower than C++ (GCC)arc_array: xc is 1.38× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.14× faster than Swiftsort_small: xc is 1.18× slower than C++ (GCC)sort_small: xc is 1.36× slower than C++ (clang); xc is 1.36× slower than Objective-Csievesieve: the four programssieve: xc is 1.28× faster than Swiftsieve: xc is 1.08× slower than C++ (GCC)sieve: xc is 1.19× slower than Objective-C; xc is 1.22× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.08× slower than C++ (clang); xc is 1.12× slower than Objective-C; xc is 1.14× slower than Swiftarray_maparray_map: the four programsarray_map: xc is 6.7× faster than C++ (GCC)array_map: xc is 1.71× faster than Swiftarray_map: xc is 1.12× slower than Objective-C; xc is 1.13× slower than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.01× faster than Objective-C; xc is 1.01× faster than Swift; xc is 1.01× faster than C++ (clang)float_math: xc is 1.09× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 22× faster than Swiftmatrix_mul: xc is 1.05× slower than Objective-C; xc is 1.08× slower than C++ (GCC); xc is 1.10× slower than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.12× faster than C++ (GCC)int_muldiv: xc is 1.02× slower than C++ (clang); xc is 1.03× slower than Objective-C; xc is 1.03× slower than Swiftmem_copymem_copy: the four programsmem_copy: xc is 1.50× faster than Swiftmem_copy: xc is 1.44× faster than Objective-Cmem_copy: xc is 1.05× faster than C++ (GCC)mem_copy: xc is 1.05× slower than C++ (clang)call_depthcall_depth: the four programscall_depth: xc is 1.25× faster than C++ (GCC)call_depth: xc is 1.01× slower than Swift; xc is 1.01× slower than C++ (clang); xc is 1.01× slower than Objective-Cbit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Swift; xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Swiftbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Swifthash_mixhash_mix: the four programshash_mix: xc is 1.11× faster than C++ (clang)hash_mix: xc is 1.04× faster than Objective-Chash_mix: xc is the same than Swift; xc is the same than C++ (GCC)arc_allocarc_alloc: the four programsarc_alloc: xc is 5.3× faster than Objective-Carc_alloc: xc is 1.81× faster than Swiftarc_alloc: xc is 1.08× faster than C++ (GCC); xc is 1.07× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.53× faster than Objective-C; xc is 1.53× faster than C++ (clang); xc is 1.52× faster than Swiftstruct_copy: xc is 1.14× faster than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.80× faster than C++ (GCC)string_scan: xc is 1.16× faster than C++ (clang); xc is 1.15× faster than Swift; xc is 1.15× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 16.2× faster than Swiftpoly_dispatch: xc is 3.0× faster than Objective-Cpoly_dispatch: xc is 2.3× faster than C++ (GCC); xc is 2.3× faster than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 35× faster than C++ (clang); xc is 36× faster than Objective-C; xc is 34× faster than Swiftmatrix_mul_f32: xc is 3.5× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 66× faster than C++ (clang); xc is 55× faster than C++ (GCC); xc is 66× faster than Objective-C; xc is 44× faster than Swiftarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.9.4)
x86-64: xc against each language, per benchmark (0.9.5)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 4.6× faster than Objective-Carc_array: xc is 1.04× slower than C++ (clang)arc_array: xc is 1.15× slower than C++ (GCC)arc_array: xc is 1.37× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.14× faster than Swiftsort_small: xc is 1.18× slower than C++ (GCC)sort_small: xc is 1.36× slower than C++ (clang); xc is 1.36× slower than Objective-Csievesieve: the four programssieve: xc is 1.28× faster than Swiftsieve: xc is 1.09× slower than C++ (GCC)sieve: xc is 1.19× slower than C++ (clang); xc is 1.22× slower than Objective-Carray_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.65× faster than C++ (clang)array_sum: xc is 1.15× slower than Objective-C; xc is 1.16× slower than Swiftarray_maparray_map: the four programsarray_map: xc is 6.7× faster than C++ (GCC)array_map: xc is 1.72× faster than Objective-C; xc is 1.69× faster than Swiftarray_map: xc is 1.14× slower than C++ (clang)float_mathfloat_math: the four programsfloat_math: xc is 1.01× faster than Objective-C; xc is 1.01× faster than C++ (clang); xc is the same than Swiftfloat_math: xc is 1.09× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 22× faster than Swiftmatrix_mul: xc is 1.21× faster than C++ (GCC)matrix_mul: xc is 1.07× slower than Objective-C; xc is 1.11× slower than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.12× faster than C++ (GCC)int_muldiv: xc is 1.02× slower than C++ (clang); xc is 1.03× slower than Objective-C; xc is 1.03× slower than Swiftmem_copymem_copy: the four programsmem_copy: xc is 1.54× faster than Swiftmem_copy: xc is 1.46× faster than C++ (clang)mem_copy: xc is 1.08× faster than C++ (GCC)mem_copy: xc is 1.03× slower than Objective-Ccall_depthcall_depth: the four programscall_depth: xc is 1.25× faster than C++ (GCC)call_depth: xc is 1.01× slower than Objective-C; xc is 1.01× slower than Swift; xc is 1.01× slower than C++ (clang)bit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (GCC); xc is the same than Objective-C; xc is the same than Swift; xc is the same than C++ (clang)int_accumint_accum: the four programsint_accum: xc is the same than C++ (GCC); xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than Swiftbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (GCC); xc is the same than Objective-C; xc is the same than Swift; xc is the same than C++ (clang)hash_mixhash_mix: the four programshash_mix: xc is 1.01× faster than Objective-C; xc is the same than Swift; xc is the same than C++ (GCC); xc is the same than C++ (clang)arc_allocarc_alloc: the four programsarc_alloc: xc is 4.0× faster than Objective-Carc_alloc: xc is 1.38× faster than Swiftarc_alloc: xc is 1.21× slower than C++ (GCC); xc is 1.23× slower than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.53× faster than Objective-C; xc is 1.52× faster than C++ (clang); xc is 1.52× faster than Swiftstruct_copy: xc is 1.14× faster than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.79× faster than C++ (GCC)string_scan: xc is 1.16× faster than C++ (clang); xc is 1.16× faster than Swift; xc is 1.15× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 16.2× faster than Swiftpoly_dispatch: xc is 3.0× faster than Objective-Cpoly_dispatch: xc is 2.3× faster than C++ (GCC); xc is 2.3× faster than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 36× faster than C++ (clang); xc is 36× faster than Objective-C; xc is 35× faster than Swiftmatrix_mul_f32: xc is 3.6× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 56× faster than C++ (clang); xc is 56× faster than C++ (GCC); xc is 67× faster than Objective-C; xc is 51× faster than Swiftarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.9.5)
x86-64: xc against each language, per benchmark (0.9.6)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 4.5× faster than Objective-Carc_array: xc is 1.07× slower than C++ (clang)arc_array: xc is 1.19× slower than C++ (GCC)arc_array: xc is 1.41× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.14× faster than Swiftsort_small: xc is 1.18× slower than C++ (GCC)sort_small: xc is 1.35× slower than C++ (clang); xc is 1.35× slower than Objective-Csievesieve: the four programssieve: xc is 1.29× faster than Swiftsieve: xc is 1.13× slower than C++ (GCC)sieve: xc is 1.19× slower than Objective-C; xc is 1.23× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.10× slower than C++ (clang)array_sum: xc is 1.14× slower than Objective-C; xc is 1.14× slower than Swiftarray_maparray_map: the four programsarray_map: xc is 6.7× faster than C++ (GCC)array_map: xc is 1.72× faster than C++ (clang); xc is 1.69× faster than Swiftarray_map: xc is 1.13× slower than Objective-Cfloat_mathfloat_math: the four programsfloat_math: xc is 1.01× faster than Objective-C; xc is the same than Swift; xc is the same than C++ (clang)float_math: xc is 1.10× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 22× faster than Swiftmatrix_mul: xc is 1.06× slower than C++ (GCC); xc is 1.07× slower than Objective-C; xc is 1.11× slower than C++ (clang)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.12× faster than C++ (GCC)int_muldiv: xc is 1.02× slower than C++ (clang); xc is 1.03× slower than Objective-C; xc is 1.03× slower than Swiftmem_copymem_copy: the four programsmem_copy: xc is 1.54× faster than Swiftmem_copy: xc is 1.46× faster than C++ (clang)mem_copy: xc is 1.08× faster than C++ (GCC)mem_copy: xc is 1.02× slower than Objective-Ccall_depthcall_depth: the four programscall_depth: xc is 1.25× faster than C++ (GCC)call_depth: xc is 1.01× slower than Swift; xc is 1.01× slower than Objective-C; xc is 1.01× slower than C++ (clang)bit_opsbit_ops: the four programsbit_ops: xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is the same than Swift; xc is the same than C++ (clang); xc is the same than Objective-C; xc is the same than C++ (GCC)branch_mixbranch_mix: the four programsbranch_mix: xc is the same than Objective-C; xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Swifthash_mixhash_mix: the four programshash_mix: xc is 1.01× faster than Objective-C; xc is the same than C++ (clang); xc is the same than Swift; xc is the same than C++ (GCC)arc_allocarc_alloc: the four programsarc_alloc: xc is 5.3× faster than Objective-Carc_alloc: xc is 1.81× faster than Swiftarc_alloc: xc is 1.09× faster than C++ (GCC); xc is 1.08× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.52× faster than C++ (clang); xc is 1.52× faster than Objective-C; xc is 1.52× faster than Swiftstruct_copy: xc is 1.14× faster than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.78× faster than C++ (GCC)string_scan: xc is 1.17× faster than C++ (clang); xc is 1.16× faster than Objective-C; xc is 1.15× faster than Swiftpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 16.0× faster than Swiftpoly_dispatch: xc is 3.0× faster than Objective-Cpoly_dispatch: xc is 2.2× faster than C++ (GCC); xc is 2.2× faster than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 35× faster than C++ (clang); xc is 35× faster than Objective-C; xc is 34× faster than Swiftmatrix_mul_f32: xc is 3.5× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 57× faster than C++ (clang); xc is 57× faster than C++ (GCC); xc is 68× faster than Objective-C; xc is 48× faster than Swiftarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.9.6)
x86-64: xc against each language, per benchmark (0.9.7)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 4.6× faster than Objective-Carc_array: xc is 1.05× slower than C++ (clang)arc_array: xc is 1.16× slower than C++ (GCC)arc_array: xc is 1.38× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.21× faster than Swiftsort_small: xc is 1.12× slower than C++ (GCC)sort_small: xc is 1.28× slower than C++ (clang); xc is 1.29× slower than Objective-Csievesieve: the four programssieve: xc is 1.28× faster than Swiftsieve: xc is 1.11× slower than C++ (GCC)sieve: xc is 1.19× slower than Objective-C; xc is 1.21× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.10× slower than C++ (clang)array_sum: xc is 1.14× slower than Swift; xc is 1.14× slower than Objective-Carray_maparray_map: the four programsarray_map: xc is 6.7× faster than C++ (GCC)array_map: xc is 1.72× faster than C++ (clang); xc is 1.69× faster than Swiftarray_map: xc is 1.10× slower than Objective-Cfloat_mathfloat_math: the four programsfloat_math: xc is 1.01× faster than Objective-C; xc is the same than Swift; xc is the same than C++ (clang)float_math: xc is 1.09× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 22× faster than Swiftmatrix_mul: xc is the same than C++ (GCC)matrix_mul: xc is 1.11× slower than C++ (clang); xc is 1.11× slower than Objective-Cint_muldivint_muldiv: the four programsint_muldiv: xc is 1.12× faster than C++ (GCC)int_muldiv: xc is 1.02× slower than C++ (clang); xc is 1.03× slower than Objective-C; xc is 1.03× slower than Swiftmem_copymem_copy: the four programsmem_copy: xc is 1.54× faster than Swiftmem_copy: xc is 1.47× faster than C++ (clang)mem_copy: xc is 1.08× faster than C++ (GCC)mem_copy: xc is 1.02× slower than Objective-Ccall_depthcall_depth: the four programscall_depth: xc is 1.25× faster than C++ (GCC)call_depth: xc is 1.01× slower than Swift; xc is 1.01× slower than Objective-C; xc is 1.01× slower than C++ (clang)bit_opsbit_ops: the four programsbit_ops: xc is the same than Swift; xc is the same than C++ (GCC); xc is the same than C++ (clang); xc is the same than Objective-Cint_accumint_accum: the four programsint_accum: xc is the same than C++ (GCC); xc is the same than Objective-C; xc is the same than Swift; xc is the same than C++ (clang)branch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (GCC); xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than Swifthash_mixhash_mix: the four programshash_mix: xc is 1.01× faster than Objective-C; xc is 1.01× faster than C++ (clang); xc is the same than Swift; xc is the same than C++ (GCC)arc_allocarc_alloc: the four programsarc_alloc: xc is 5.2× faster than Objective-Carc_alloc: xc is 1.78× faster than Swiftarc_alloc: xc is 1.06× faster than C++ (GCC); xc is 1.05× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.52× faster than Swift; xc is 1.52× faster than Objective-C; xc is 1.52× faster than C++ (clang)struct_copy: xc is 1.13× faster than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.78× faster than C++ (GCC)string_scan: xc is 1.16× faster than C++ (clang); xc is 1.16× faster than Objective-C; xc is 1.15× faster than Swiftpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 16.0× faster than Swiftpoly_dispatch: xc is 3.0× faster than Objective-Cpoly_dispatch: xc is 2.2× faster than C++ (GCC); xc is 2.2× faster than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 35× faster than C++ (clang); xc is 36× faster than Objective-C; xc is 34× faster than Swiftmatrix_mul_f32: xc is 3.6× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 55× faster than C++ (clang); xc is 55× faster than C++ (GCC); xc is 66× faster than Objective-C; xc is 55× faster than Swiftarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (0.9.7)
x86-64: xc against each language, per benchmark (1.0)xc vs Objective-Cxc vs C++ (clang)xc vs C++ (GCC)xc vs Swift8× faster4× faster2× fastersame2× slower4× slower8× slower← xc fasterxc slower →arc_arrayarc_array: the four programsarc_array: xc is 4.7× faster than Objective-Carc_array: xc is 1.03× slower than C++ (clang)arc_array: xc is 1.14× slower than C++ (GCC)arc_array: xc is 1.36× slower than Swiftsort_smallsort_small: the four programssort_small: xc is 1.17× faster than Swiftsort_small: xc is 1.15× slower than C++ (GCC)sort_small: xc is 1.31× slower than Objective-C; xc is 1.32× slower than C++ (clang)sievesieve: the four programssieve: xc is 1.31× faster than Swiftsieve: xc is 1.07× slower than C++ (GCC)sieve: xc is 1.17× slower than Objective-C; xc is 1.19× slower than C++ (clang)array_sumarray_sum: the four programsarray_sum: xc is 3.6× faster than C++ (GCC)array_sum: xc is 1.66× faster than Objective-Carray_sum: xc is 1.11× slower than C++ (clang)array_sum: xc is 1.16× slower than Swiftarray_maparray_map: the four programsarray_map: xc is 6.7× faster than C++ (GCC)array_map: xc is 1.69× faster than Swiftarray_map: xc is 1.14× slower than C++ (clang); xc is 1.14× slower than Objective-Cfloat_mathfloat_math: the four programsfloat_math: xc is 1.01× faster than Objective-C; xc is the same than Swift; xc is the same than C++ (clang)float_math: xc is 1.09× slower than C++ (GCC)matrix_mulmatrix_mul: the four programsmatrix_mul: xc is 22× faster than Swiftmatrix_mul: xc is 1.55× faster than Objective-C; xc is 1.55× faster than C++ (clang)matrix_mul: xc is 1.08× slower than C++ (GCC)int_muldivint_muldiv: the four programsint_muldiv: xc is 1.12× faster than C++ (GCC)int_muldiv: xc is 1.02× slower than C++ (clang); xc is 1.03× slower than Objective-C; xc is 1.03× slower than Swiftmem_copymem_copy: the four programsmem_copy: xc is 1.54× faster than Swiftmem_copy: xc is 1.47× faster than C++ (clang)mem_copy: xc is 1.08× faster than C++ (GCC)mem_copy: xc is 1.02× slower than Objective-Ccall_depthcall_depth: the four programscall_depth: xc is 1.25× faster than C++ (GCC)call_depth: xc is 1.01× slower than Swift; xc is 1.01× slower than Objective-C; xc is 1.01× slower than C++ (clang)bit_opsbit_ops: the four programsbit_ops: xc is the same than C++ (GCC); xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than Swiftint_accumint_accum: the four programsint_accum: xc is the same than Objective-C; xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swiftbranch_mixbranch_mix: the four programsbranch_mix: xc is the same than C++ (clang); xc is the same than C++ (GCC); xc is the same than Swift; xc is the same than Objective-Chash_mixhash_mix: the four programshash_mix: xc is 1.13× faster than C++ (clang)hash_mix: xc is 1.08× faster than Objective-Chash_mix: xc is the same than Swift; xc is the same than C++ (GCC)arc_allocarc_alloc: the four programsarc_alloc: xc is 5.3× faster than Objective-Carc_alloc: xc is 1.80× faster than Swiftarc_alloc: xc is 1.08× faster than C++ (GCC); xc is 1.07× faster than C++ (clang)struct_copystruct_copy: the four programsstruct_copy: xc is 1.53× faster than Objective-C; xc is 1.52× faster than C++ (clang); xc is 1.52× faster than Swiftstruct_copy: xc is 1.13× faster than C++ (GCC)string_scanstring_scan: the four programsstring_scan: xc is 1.78× faster than C++ (GCC)string_scan: xc is 1.16× faster than C++ (clang); xc is 1.16× faster than Swift; xc is 1.16× faster than Objective-Cpoly_dispatchpoly_dispatch: the four programspoly_dispatch: xc is 16.3× faster than Swiftpoly_dispatch: xc is 3.0× faster than Objective-Cpoly_dispatch: xc is 2.3× faster than C++ (GCC); xc is 2.3× faster than C++ (clang)matrix_mul_f32matrix_mul_f32: the four programsmatrix_mul_f32: xc is 35× faster than C++ (clang); xc is 36× faster than Objective-C; xc is 34× faster than Swiftmatrix_mul_f32: xc is 3.3× faster than C++ (GCC)method_callmethod_call: the four programsmethod_call: xc is 57× faster than C++ (clang); xc is 57× faster than C++ (GCC); xc is 68× faster than Objective-C; xc is 51× faster than Swiftarray_sum_hoistarray_sum_hoist: the four programsint_muldiv_hoistint_muldiv_hoist: the four programs
x86-64: xc against each language, per benchmark (1.0)
benchmarkxcObjective-CC++ (clang)C++ (GCC)Swiftxc vs the fastest of the others
poly_dispatch0.982.381.520.563.191.76× slower
array_map1.261.801.215.071.181.06× slower
sort_small1.151.081.131.131.921.06× slower
int_muldiv1.221.161.161.591.161.05× slower
arc_alloc1.191.781.151.152.471.04× slower
struct_copy0.731.091.090.711.091.03× slower
mem_copy1.252.251.261.901.211.03× slower
float_math1.121.121.121.101.121.02× slower
branch_mix1.071.091.071.091.10the same
hash_mix1.271.271.271.271.27the same
int_accum1.221.221.221.271.24the same
array_sum0.980.990.993.550.991.01× faster
arc_array0.615.720.630.861.211.02× faster
matrix_mul0.250.260.260.461.601.03× faster
bit_ops1.271.341.351.351.351.06× faster
sieve1.241.661.671.422.211.15× faster
call_depth0.881.071.061.131.061.20× faster
string_scan1.062.542.541.542.541.45× faster
method_call0.112.551.250.211.192.0× faster
matrix_mul_f322.0010.9710.9710.9512.375.5× faster
array_sum_hoist< 0.0010.990.993.550.99repetition removed
int_muldiv_hoist< 0.0011.061.040.861.04repetition removed
benchmarkxcObjective-CC++ (clang)C++ (GCC)Swiftxc vs the fastest of the others
arc_array0.803.730.770.700.591.36× slower
sort_small0.950.720.720.821.111.32× slower
sieve0.890.760.750.831.161.19× slower
array_sum0.210.350.190.760.181.16× slower
array_map0.300.270.272.020.511.14× slower
float_math0.740.740.740.670.741.09× slower
matrix_mul0.080.130.130.081.881.08× slower
int_muldiv0.380.370.370.420.371.03× slower
mem_copy0.350.350.520.380.551.02× slower
call_depth0.190.190.190.240.191.01× slower
bit_ops0.970.970.970.970.97the same
int_accum0.970.970.970.970.97the same
branch_mix0.810.810.810.810.81the same
hash_mix1.011.091.141.011.02the same
arc_alloc0.412.180.440.440.741.07× faster
struct_copy0.570.870.870.650.871.13× faster
string_scan0.470.550.550.840.551.16× faster
poly_dispatch0.411.240.930.936.672.3× faster
matrix_mul_f320.238.368.290.767.993.3× faster
method_call0.031.901.581.581.4251× faster
array_sum_hoist< 0.0010.350.220.830.35repetition removed
int_muldiv_hoist< 0.0010.340.340.200.34repetition removed

The same programs on a Raspberry Pi 5 Model B Rev 1.0 (Cortex-A76) under Raspberry Pi OS, from 0.89: xc cross-built with -A arm64-linux, the C++ built on the Pi by clang++ 19.1 and g++ 14.2, all at -O3. Seconds; the best of five runs.

benchmarkxcC++ (clang)C++ (GCC)xc vs the faster of the two
struct_copy2.581.832.451.40× slower
sieve4.224.573.061.38× slower
array_map4.984.3510.241.15× slower
arc_alloc2.151.981.971.09× slower
sort_small3.053.252.971.03× slower
arc_array1.801.762.611.03× slower
float_math1.401.391.711.01× slower
hash_mix1.351.341.35the same
poly_dispatch1.942.391.94the same
int_accum2.052.052.05the same
int_muldiv5.465.466.63the same
call_depth3.193.214.161.01× faster
matrix_mul1.231.321.351.07× faster
matrix_mul_f323.7817.844.231.12× faster
mem_copy3.283.684.411.12× faster
branch_mix1.802.152.141.19× faster
array_sum3.023.798.381.26× faster
bit_ops2.182.952.881.32× faster
string_scan3.429.557.992.3× faster
method_call0.362.672.677.3× faster
int_muldiv_hoist< 0.0014.821.45repetition removed
array_sum_hoist< 0.0013.055.98repetition removed

Geometric mean of xc’s times against each: 1.10× faster than clang++, 1.25× faster than g++.

The fastest results are where the runtime does the work: string_scan, method_call and struct_copy are byte scanning, dynamic dispatch and aggregate copies. The slowest show where xcc’s code generation has most to gain:

  • Vectorisation. On arm64, int_muldiv and float_math are vectorised by both compilers, and clang’s loops are tighter; matrix_mul has matched clang there since 0.73. On x86-64 matrix_mul is still behind, because clang keeps the second matrix’s rows in registers across the outer loop.
  • Reference counting on x86-64. arc_array, where C++ reads elements without retaining them.
  • x86-64 loops and calls. sieve and sort_small, where clang’s loops are still tighter (in 0.74 sort_small was 2.6× behind; 0.75 rotates its inner loop), and call_depth, where clang’s call sequence is shorter.

A dense matrix multiply written as three plain loops, C[i][j] the sum over k of A[i][k] · B[k][j] in float or double, runs as a kernel the compiler writes itself (from 0.71). The results are the loops’, to the last bit, and -fno-matmul turns it off. The kernel depends on the machine:

  • Apple M4 and later (SME): the multiply runs on the matrix unit. From 0.72 it works on a 2×2 block of the unit’s tiles at once, and under :goal(speed), which matrix_mul_f32 uses, it leaves out a NaN check that only affects the bits of a NaN (the inputs have none).
  • Apple M1 to M3 (no SME): the program finds no matrix unit when it starts and runs the loops, vectorised. The arm64 figures on this page, for every release, come from an M3 Max, so there matrix_mul_f32 is the loop; the table below adds an M4 Max, where it is the matrix unit.
  • x86-64: the widest vector unit the processor has (SSE2, AVX2 or AVX-512), chosen when the program starts; the Ryzen 9 9955HX picks AVX-512.

matrix_mul_f32 measures it: a 128×128 float multiply, 10,000 times. (matrix_mul multiplies u32 values, which the matrix unit does not take, so it stays a vectorised loop.)

matrix_mul_f32xcObjective-CC++ (clang)C++ (GCC)Swift
arm64, Apple M4 Max (SME)27 ms9.7 s9.6 s9.6 s9.6 s
xc is351× faster351× faster351× faster349× faster
arm64, Apple M3 Max2.0 s11.0 s11.0 s10.9 s12.4 s
xc is5.5× faster5.5× faster5.5× faster6.2× faster
x86-64, AMD Ryzen 9 9955HX234 ms8.4 s8.3 s764 ms8.0 s
xc is36× faster35× faster3.3× faster34× faster

par blocks, which run on every CPU thread, on GPUs and across machines, have pages of their own: Performance: GPU (including plain loops made parallel by --par-style=auto) and Performance: networked. Plain C built by xcc, against GCC and clang on one thread and with OpenMP on every thread, is on Performance: C.

How fast xc’s code is in each release, relative to 0.62: above 1× is faster. The thin lines are single benchmarks (labelled where they moved by more than twelve percent), the thick line the geometric mean (over the benchmarks the means cover, as in the summary). Releases shown: 0.62, 0.63, 0.64, 0.65, 0.66, 0.7, 0.71, 0.72, 0.73, 0.74, 0.75, 0.8, 0.85, 0.86, 0.87, 0.87.3, 0.88, 0.89, 0.9, 0.9.1, 0.9.2, 0.9.3, 0.9.4, 0.9.5, 0.9.6, 0.9.7, 1.0. arc_alloc, method_call changed in 0.64’s benchmark set and are left out of this history.

arm64: xc's speed relative to 0.620.80×0.90×1.00×1.10×1.25×1.50×2.00×3.00×0.620.630.640.650.660.70.710.720.730.740.750.80.850.860.870.87.30.880.890.90.9.10.9.20.9.30.9.40.9.50.9.60.9.71.0arc_array: 1.00, 1.00, 1.00, 1.72, 1.72, 1.72, 1.72, 1.72, 1.72, 1.72, 1.73, 1.72, 1.73, 1.73, 1.72, 1.72, 1.73, 1.73, 1.92, 1.92, 1.67, 1.67, 1.67, 1.67, 1.67, 1.68, 1.66array_map: 1.00, 0.98, 0.99, 1.53, 1.53, 1.49, 1.57, 1.55, 1.55, 1.50, 1.55, 1.52, 1.48, 1.48, 1.63, 1.48, 1.48, 1.53, 1.52, 1.57, 1.56, 1.47, 1.47, 1.59, 1.49, 1.51, 1.47array_sum: 1.00, 1.00, 1.00, 0.99, 0.99, 0.99, 0.99, 0.99, 1.11, 1.11, 1.11, 1.11, 1.11, 1.11, 1.11, 1.11, 1.11, 1.11, 1.19, 1.17, 1.19, 1.01, 1.01, 1.02, 1.01, 1.06, 1.01bit_ops: 1.00, 0.99, 0.99, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.17, 1.14branch_mix: 1.00, 1.00, 1.00, 1.15, 1.17, 1.15, 1.16, 1.15, 1.15, 1.16, 1.18, 1.18, 1.18, 1.18, 1.20, 1.20, 1.20, 1.20, 1.20, 1.20, 1.20, 1.20, 1.20, 1.20, 1.20, 1.20, 1.16call_depth: 1.00, 1.00, 1.01, 1.03, 1.03, 1.03, 1.03, 1.02, 1.03, 1.03, 1.02, 1.01, 1.02, 1.02, 1.05, 1.05, 1.04, 1.05, 1.06, 1.06, 1.19, 1.19, 1.19, 1.19, 1.19, 1.19, 1.17float_math: 1.00, 1.00, 1.00, 1.19, 1.19, 1.20, 1.19, 1.20, 1.19, 1.19, 1.19, 1.19, 1.19, 1.19, 1.19, 1.19, 1.19, 1.19, 1.20, 1.20, 1.19, 1.19, 1.19, 1.19, 1.19, 1.19, 1.19hash_mix: 1.00, 1.00, 1.00, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.03int_accum: 1.00, 1.00, 1.00, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13, 1.13int_muldiv: 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.01, 1.01, 1.01, 1.00, 1.07, 1.07, 1.05, 0.93, 1.04, 1.05, 1.04, 1.10, 1.04matrix_mul: 1.00, 1.00, 1.00, 4.62, 4.62, 4.63, 4.62, 4.62, 8.25, 8.26, 8.24, 8.21, 8.26, 8.26, 8.26, 8.36, 8.29, 8.27, 8.80, 8.71, 8.77, 8.25, 8.29, 8.31, 8.25, 8.63, 8.26mem_copy: 1.00, 0.99, 1.00, 1.85, 1.85, 1.85, 1.85, 1.85, 1.85, 1.85, 1.85, 1.85, 1.85, 1.85, 1.86, 1.85, 1.85, 1.86, 1.91, 1.88, 1.88, 1.85, 1.85, 1.86, 1.85, 1.86, 1.85poly_dispatch: 1.00, 1.02, 1.01, 1.08, 1.08, 1.08, 1.08, 1.08, 1.08, 1.08, 1.08, 1.08, 1.08, 1.08, 1.08, 1.08, 1.08, 1.08, 1.08, 1.07, 1.08, 1.08, 1.77, 1.77, 1.74, 1.76, 1.51sieve: 1.00, 0.98, 0.98, 1.00, 1.00, 0.99, 1.00, 0.95, 0.99, 0.99, 1.00, 1.00, 1.01, 1.01, 0.97, 0.96, 0.99, 0.98, 0.91, 0.91, 0.96, 0.96, 0.95, 0.96, 0.96, 0.96, 0.96sort_small: 1.00, 1.00, 0.97, 1.06, 1.06, 1.05, 1.05, 1.03, 1.21, 1.22, 1.28, 1.30, 1.27, 1.27, 1.07, 1.07, 1.07, 1.07, 1.07, 1.07, 1.25, 1.24, 1.24, 1.25, 1.25, 1.14, 1.25string_scan: 1.00, 1.00, 1.00, 1.00, 1.02, 1.00, 1.01, 1.01, 1.00, 1.01, 1.01, 1.00, 1.00, 1.00, 1.01, 1.04, 1.02, 1.00, 1.07, 1.04, 1.06, 1.00, 1.01, 1.02, 1.01, 1.06, 1.00struct_copy: 1.00, 1.00, 1.00, 1.83, 1.83, 1.83, 1.83, 1.83, 1.83, 1.83, 1.83, 1.83, 1.83, 1.83, 1.83, 1.83, 1.83, 1.83, 1.98, 1.98, 1.98, 1.92, 1.90, 1.96, 1.93, 1.98, 1.891.001.001.001.301.301.301.311.301.371.371.381.371.371.371.371.361.361.361.401.391.411.371.421.431.421.431.40matrix_mul 8.26×struct_copy 1.89×mem_copy 1.85×arc_array 1.66×poly_dispatch 1.51×array_map 1.47×sort_small 1.25×float_math 1.19×call_depth 1.17×branch_mix 1.16×bit_ops 1.14×int_accum 1.13×geometric mean
arm64: xc's speed relative to 0.62
x86-64: xc's speed relative to 0.620.80×0.90×1.00×1.10×1.25×1.50×2.00×3.00×0.620.630.640.650.660.70.710.720.730.740.750.80.850.860.870.87.30.880.890.90.9.10.9.20.9.30.9.40.9.50.9.60.9.71.0arc_array: 1.00, 0.98, 1.01, 0.99, 0.93, 0.94, 0.94, 1.00, 1.01, 1.05, 1.00, 1.00, 1.02, 1.03, 1.02, 0.98, 0.96, 1.01, 1.41, 1.32, 1.49, 1.46, 1.43, 1.44, 1.40, 1.43, 1.45array_map: 1.00, 0.99, 1.36, 1.37, 2.76, 2.76, 4.98, 4.93, 5.01, 4.98, 6.53, 6.53, 6.53, 6.55, 6.51, 6.52, 6.44, 6.44, 6.45, 6.91, 6.92, 7.06, 7.07, 7.01, 7.01, 7.01, 7.01array_sum: 1.00, 1.00, 1.29, 1.32, 2.41, 2.56, 3.60, 3.21, 5.01, 5.06, 3.32, 3.32, 5.97, 6.08, 6.09, 6.07, 6.09, 6.08, 6.03, 5.98, 6.00, 5.61, 5.70, 5.61, 5.70, 5.70, 5.64bit_ops: 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00branch_mix: 1.00, 0.89, 1.01, 1.01, 1.01, 1.01, 1.00, 1.00, 1.00, 1.00, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01call_depth: 1.00, 1.00, 1.00, 1.00, 0.71, 2.03, 4.05, 4.03, 4.03, 4.07, 4.08, 4.08, 4.45, 4.44, 4.45, 4.45, 4.45, 4.45, 4.56, 5.62, 5.65, 5.63, 5.62, 5.62, 5.61, 5.62, 5.62float_math: 1.00, 1.00, 2.03, 1.94, 2.00, 2.00, 1.93, 1.93, 2.00, 2.00, 1.98, 1.98, 2.05, 2.05, 2.05, 2.05, 2.05, 2.05, 2.04, 2.05, 2.05, 2.05, 2.05, 2.05, 2.05, 2.05, 2.05hash_mix: 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00int_accum: 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00int_muldiv: 1.00, 1.00, 1.01, 1.00, 1.98, 2.02, 3.98, 3.98, 3.96, 3.97, 3.99, 3.99, 4.00, 4.02, 4.02, 4.02, 4.02, 4.02, 4.02, 5.34, 5.34, 5.38, 5.38, 5.39, 5.38, 5.38, 5.38matrix_mul: 1.00, 1.00, 1.87, 4.31, 4.30, 4.29, 4.28, 4.28, 3.83, 3.82, 19.94, 27.66, 27.06, 26.94, 26.42, 26.54, 27.65, 27.72, 27.49, 28.18, 28.10, 28.73, 28.67, 28.99, 29.02, 28.96, 28.89matrix_mul_f32: 1.00, 1.05, 1.28, 1.44, 1.66, 1.63, 55.40, 70.09, 69.85, 70.36, 68.64, 71.03, 68.64, 69.54, 69.11, 70.72, 69.89, 68.25, 69.05, 68.07, 69.94, 69.13, 68.13, 69.34, 67.28, 68.06, 67.93mem_copy: 1.00, 1.00, 1.43, 1.43, 2.21, 2.73, 4.12, 4.33, 4.32, 4.35, 4.45, 4.45, 4.47, 4.45, 4.45, 4.46, 4.43, 4.42, 4.43, 4.40, 4.35, 4.35, 4.25, 4.35, 4.35, 4.35, 4.35poly_dispatch: 1.00, 1.00, 1.00, 1.01, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.01, 1.01, 1.00, 1.00, 1.00, 1.00, 1.00, 1.01, 1.01, 1.01, 1.01, 2.36, 2.36, 2.33, 2.33, 2.37sieve: 1.00, 1.00, 1.24, 1.50, 1.34, 1.36, 1.50, 1.33, 1.66, 1.67, 1.88, 1.89, 1.82, 1.82, 1.92, 1.91, 1.91, 1.91, 1.91, 2.05, 2.04, 2.07, 2.05, 2.05, 2.06, 2.05, 2.09sort_small: 1.00, 1.21, 1.25, 1.25, 1.31, 1.27, 1.21, 1.22, 1.18, 1.21, 2.41, 2.47, 2.45, 2.43, 2.39, 2.43, 2.44, 2.43, 2.43, 2.32, 2.31, 2.31, 2.31, 2.31, 2.32, 2.44, 2.37string_scan: 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 3.43, 3.43, 3.44, 3.45, 3.44, 3.44, 3.44, 3.44, 3.44, 3.44, 3.44, 3.44, 3.44, 3.44, 3.44, 3.44, 3.44struct_copy: 1.00, 1.00, 1.32, 1.30, 1.32, 1.31, 1.29, 1.29, 1.29, 1.29, 1.32, 1.32, 1.32, 1.32, 1.32, 1.32, 1.32, 1.32, 1.97, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.97, 1.971.001.001.191.261.421.531.801.791.851.862.292.342.432.432.432.432.432.442.552.632.652.642.772.772.772.782.78matrix_mul_f32 67.93×matrix_mul 28.89×array_map 7.01×array_sum 5.64×call_depth 5.62×int_muldiv 5.38×mem_copy 4.35×string_scan 3.44×sort_small 2.37×poly_dispatch 2.37×sieve 2.09×float_math 2.05×struct_copy 1.97×arc_array 1.45×geometric mean
x86-64: xc's speed relative to 0.62

The compiler that ships. The xc numbers come from the xcc in the download.

The same work in every language. Every version keeps its data where the xc version keeps it (local arrays, not static ones, which clang optimises differently) and leaves nothing a compiler can remove: an object that could be put on the stack outlives its iteration, a call whose target could be resolved at compile time takes its class at run time, and results are folded in so no loop has a closed form. Where the original’s point is reference-counted objects, the C++ version uses std::shared_ptr and the Swift version a class, so they pay for reference counting too.

Different runtimes on the two targets. The Objective-C column is Apple’s Foundation on arm64 and GNUstep with libobjc2 on x86-64, and Swift is 6.2 on the Mac and 6.1 on Linux. These are different implementations, so a language’s times compare within a target and not across one. Swift on Linux is markedly slower on poly_dispatch and array_map than on the Mac; the runs were repeated on an idle machine and reproduce.

Timed regions of about one second. Each benchmark times its own inner loop rather than the process, so start-up and data set-up are excluded.

Alignment noise on x86-64. xcc aligns every loop head on x86-64 to a 32-byte boundary and the start of .text to 64 bytes, so an unrelated change elsewhere cannot move a loop across a fetch boundary; see Optimisation.

The sources are in benchmark/src, one .xc, .m, .cpp and .swift per program, and the runner builds and times them all:

python3 benchmark/run.py --opt O3 --repeats 5
python3 benchmark/page.py

The x86-64 legs cross-build xc here and build the other languages on the configured Linux host; without one the runner measures this machine only. --langs measures some of the languages and adds them to the results already there. Results land in benchmark/<version>/results.json, and page.py turns them into this page.