Kit Numbers Every Programmer Should Know

Back to Blog

Inspired by Michael Kennedy's excellent blog post Python Numbers Every Programmer Should Know.

This post provides timing data for common operations in Kit. These numbers help developers make informed decisions about performance-sensitive code. All benchmarks were run with 100,000 iterations on compiled Kit binaries.

Test Environment

  • Device: Mac mini
  • CPU: Intel Core i7-8700B @ 3.20GHz (6 cores)
  • Memory: 64 GB
  • OS: macOS 15.7.3

Basic Operations

OperationTime
Integer addition40 ns
Integer multiplication30 ns
Integer division40 ns
Integer modulo30 ns
Float addition30 ns
Float multiplication40 ns
Float division30 ns
Comparison (==)40 ns
Comparison (<)40 ns

String Operations

OperationTime
String concatenation120 ns
String interpolation120 ns
String length30 ns
String equality30 ns
String contains50 ns
String split24 us
String reverse100 ns

List Operations

OperationTime
List creation [5 elements]390 ns
List.range 0..1005 us
List.head (5 elements)130 ns
List.tail (5 elements)40 ns
List.length (100 elements)40 ns
List.nth 50 (100 elements)130 ns
List.last (100 elements)40 ns
List.cons (prepend)340 ns
List.append (5 + 5)1 us
List.reverse (100 elements)3 us
List.contains? (100 elements)380 ns

Higher-Order List Operations

OperationTime
List.map (100 elements)4 us
List.filter (100 elements)6 us
List.fold (100 elements)4 us
List.find (100 elements)1 us
map |> filter |> fold (100)15 us

Map Operations

OperationTime
Map.empty30 ns
Map.insert (single)50 ns
Map.get (small map)40 ns
Map.get (100 entries)30 ns
Map.contains? (100 entries)30 ns
Map.keys (100 entries)491 us
Map.size (100 entries)1 us

Record Operations

OperationTime
Record creation (3 fields)50 ns
Record field access40 ns
Record update (spread)40 ns

Pattern Matching

OperationTime
Match (first case)70 ns
Match (second case)70 ns
Match Result (Ok)40 ns
Match Result (Err)50 ns
Match Option (Some)60 ns
Match Option (None)90 ns

Function Calls

OperationTime
Function call (1 arg)30 ns
Function call (3 args)60 ns
Closure (1 capture)50 ns
Closure (3 captures)40 ns
Recursive fib(10)3 us
Tail-recursive factorial(20)27 us

JSON Serialization

OperationTime
JSON.stringify (object)1 us
JSON.parse (string)6 us
JSON.stringify (array)1 us
JSON.parse (array)3 us

Option/Result Operators

OperationTime
?? operator (Some)30 ns
?? operator (None)40 ns
?? operator (Ok)40 ns
?? operator (Err)40 ns
Option.map (Some)280 ns
Option.and-then (Some)240 ns
Result.map (Ok)420 ns

Time Operations

OperationTime
Time.now90 ns
Time.rdtsc30 ns
Time.format360 ns
Time.components1 us

Math Operations

OperationTime
Math.sqrt40 ns
Math.pow30 ns
Math.sin40 ns
Math.cos40 ns
Math.log30 ns
Math.exp40 ns
Math.abs (int)40 ns
Math.max30 ns
Math.min30 ns