Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add benchmark rake task for evaluating time execution. Fixes

Co-authored-by: Rubens Fernandes <rubens.fernandes97@gmail.com>
  • Loading branch information
salochara and okaydokay97 committed Nov 13, 2023
1 parent 0d26302 commit b72260f
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions tasks/benchmark.rake
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# frozen_string_literal: true

# rubocop:disable Security/Eval,Style/EvalWithLocation

require 'benchmark'
require 'faker'

desc 'Benchmarking every Faker generator'
task :benchmark do
count = BenchmarkHelper.all_methods.count
Benchmark.bmbm do |x|
x.report("Number of generators: #{count}") do
100.times do
BenchmarkHelper.all_methods.each { |method_name| eval(method_name) }
end
end
end
end

class BenchmarkHelper
class << self
def all_methods
subclasses.map do |subclass|
subclass_methods(subclass).flatten
end.flatten.sort
end

def subclasses
Faker.constants.delete_if do |subclass|
%i[Base Bank Books Cat Char Base58 ChileRut CLI Config Creature Date Dog DragonBall Dota ElderScrolls Fallout Games GamesHalfLife HeroesOfTheStorm Internet JapaneseMedia LeagueOfLegends Movies Myst Overwatch OnePiece Pokemon Religion Sports SwordArtOnline TvShows Time VERSION Witcher WorldOfWarcraft Zelda].include?(subclass)
end.sort
end

def subclass_methods(subclass)
eval("Faker::#{subclass}.public_methods(false) - Faker::Base.public_methods(false)").sort.map do |method|
"Faker::#{subclass}.#{method}"
end.sort
end
end
end
# rubocop:enable Security/Eval,Style/EvalWithLocation

0 comments on commit b72260f

Please sign in to comment.