Skip to content

Instantly share code, notes, and snippets.

@Aschen
Created March 29, 2020 04:45
Show Gist options
  • Select an option

  • Save Aschen/acfa1216526a4f08d059a65fbc4d2b95 to your computer and use it in GitHub Desktop.

Select an option

Save Aschen/acfa1216526a4f08d059a65fbc4d2b95 to your computer and use it in GitHub Desktop.
Int32 vs Float64 performances in Crystal
# https://stackoverflow.com/questions/60910274/int32-vs-float64-performances-in-crystal
require "benchmark"
def percentage_diff(number_a, number_b)
small_number = (number_a > number_b) ? number_b : number_a
big_number = (number_a < number_b) ? number_b : number_a
(big_number - small_number) / small_number
end
def maximum_minimum(number_a, number_b)
small_number = (number_a > number_b) ? number_b : number_a
big_number = (number_a < number_b) ? number_b : number_a
{maximum: big_number, minimum: small_number}
end
percentage_diff(32, 31)
res = 0
res2 = 0.0
Benchmark.ips do |x|
x.report("int32") do
a = percentage_diff(128973, 119236)
b = percentage_diff(119236, 128973)
d = maximum_minimum(117232, 123462)
res = a + b + d[:maximum] - d[:minimum]
end
x.report("float64") do
a = percentage_diff(1.28973, 1.19236)
b = percentage_diff(1.19236, 1.28973)
d = maximum_minimum(1.17232, 1.23462)
res2 = a + b + d[:maximum] - d[:minimum]
end
end
puts res
puts res2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment