Skip to content

Instantly share code, notes, and snippets.

@hartator
Last active December 22, 2018 03:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hartator/777c02ff71dcaf38494774f107332b63 to your computer and use it in GitHub Desktop.
Save hartator/777c02ff71dcaf38494774f107332b63 to your computer and use it in GitHub Desktop.
Raw results for Benchmark: Deep directory structure vs. flat directory structure to store millions of files on ext4 article (https://medium.com/@hartator/benchmark-deep-directory-structure-vs-flat-directory-structure-to-store-millions-of-files-on-ext4-cac1000ca28)
➜ files pry
[1] pry(main)>
[2] pry(main)>
[3] pry(main)>
[4] pry(main)> require 'digest'
=> true
[5] pry(main)> require 'benchmark'
=> true
[6] pry(main)>
[7] pry(main)> hash = {}
=> {}
[8] pry(main)>
[9] pry(main)> 10_000_000.times do
[9] pry(main)* key = Digest::MD5.hexdigest(rand.to_s)
[9] pry(main)* value = Digest::MD5.hexdigest(rand.to_s)
[9] pry(main)* hash[key] = value
[9] pry(main)* end
=> 10000000
[10] pry(main)>
[11] pry(main)> FileUtils.mkdir_p "dir_flat"
=> ["dir_flat"]
[12] pry(main)> FileUtils.mkdir_p "dir_deep"
=> ["dir_deep"]
[13] pry(main)>
[14] pry(main)> puts Benchmark.measure {
[14] pry(main)* hash.each do |key,value|
[14] pry(main)* File.write "./dir_flat/#{key}", value
[14] pry(main)* end
[14] pry(main)* }
101.741710 235.182697 336.924407 (563.571509)
=> nil
[15] pry(main)>
[16] pry(main)> puts Benchmark.measure {
[16] pry(main)* hash.each do |key,value|
[16] pry(main)* File.read "./dir_flat/#{key}"
[16] pry(main)* end
[16] pry(main)* }
67.303303 66.831921 134.135224 (144.236235)
=> nil
[17] pry(main)>
[18] pry(main)> puts Benchmark.measure {
[18] pry(main)* hash.keys.each do |key|
[18] pry(main)* dir_path = "./dir_deep/#{key[0..1]}/#{key[2..3]}/"
[18] pry(main)* FileUtils.mkdir_p dir_path
[18] pry(main)* end
[18] pry(main)* }
159.113524 23.786297 182.899821 (184.098348)
=> nil
[19] pry(main)>
[20] pry(main)> puts Benchmark.measure {
[20] pry(main)* hash.each do |key,value|
[20] pry(main)* dir_path = "./dir_deep/#{key[0..1]}/#{key[2..3]}/"
[20] pry(main)* File.write dir_path + key, value
[20] pry(main)* end
[20] pry(main)* }
126.305435 301.732794 428.038229 (813.518161)
=> nil
[21] pry(main)>
[22] pry(main)> puts Benchmark.measure {
[22] pry(main)* hash.each do |key,value|
[22] pry(main)* dir_path = "./dir_deep/#{key[0..1]}/#{key[2..3]}/"
[22] pry(main)* File.read dir_path + key
[22] pry(main)* end
[22] pry(main)* }
93.860948 253.143623 347.004571 (1272.890921)
=> nil
[23] pry(main)>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment