Skip to content

Commit 5e7e314

Browse files
Profile and benchmark with autoload
Co-Authored-By: Thiago Araujo <thd.araujo@gmail.com>
1 parent 9cadf41 commit 5e7e314

8 files changed

Lines changed: 42 additions & 3 deletions

File tree

Gemfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ gem 'test-unit', '3.7.7'
1818
gem 'timecop', '0.9.10'
1919
gem 'yard', '0.9.38'
2020

21+
gem 'vernier'
22+
gem 'profile-viewer'
23+
2124
group :benchmark do
2225
gem 'benchmark'
2326
gem 'benchmark-ips'

Gemfile.lock

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ GEM
2727
lint_roller (1.1.0)
2828
method_source (1.1.0)
2929
minitest (5.27.0)
30+
optparse (0.8.1)
3031
parallel (1.27.0)
3132
parser (3.3.10.0)
3233
ast (~> 2.4.1)
@@ -36,6 +37,9 @@ GEM
3637
prettyprint
3738
prettyprint (0.2.0)
3839
prism (1.7.0)
40+
profile-viewer (0.0.5)
41+
optparse
42+
webrick
3943
pry (0.16.0)
4044
coderay (~> 1.1)
4145
method_source (~> 1.0)
@@ -89,10 +93,13 @@ GEM
8993
unicode-display_width (3.2.0)
9094
unicode-emoji (~> 4.1)
9195
unicode-emoji (4.2.0)
96+
vernier (1.9.0)
97+
webrick (1.9.2)
9298
yard (0.9.38)
9399

94100
PLATFORMS
95101
arm64-darwin-22
102+
arm64-darwin-24
96103
x86_64-linux
97104

98105
DEPENDENCIES
@@ -101,6 +108,7 @@ DEPENDENCIES
101108
faker!
102109
irb
103110
minitest (= 5.27.0)
111+
profile-viewer
104112
pry (= 0.16.0)
105113
rake (= 13.3.1)
106114
rdoc
@@ -110,6 +118,7 @@ DEPENDENCIES
110118
simplecov (= 0.22.0)
111119
test-unit (= 3.7.7)
112120
timecop (= 0.9.10)
121+
vernier
113122
yard (= 0.9.38)
114123

115124
BUNDLED WITH

benchmark/load.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# frozen_string_literal: true
2+
3+
require 'benchmark/ips'
4+
5+
Benchmark.ips do |x|
6+
x.report('require openssl') { system('ruby load_faker.rb') }
7+
x.report('autoload openssl') { system('AUTOLOAD=1 ruby load_faker.rb') }
8+
9+
x.compare!(order: :baseline)
10+
end

benchmark/load_faker.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/usr/bin/env ruby
2+
3+
if defined?(Faker)
4+
raise "fake is already defined..."
5+
end
6+
7+
load("/Users/stefannibrasil/projects/faker/lib/faker.rb")

lib/faker.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
require 'psych'
66
require 'i18n'
77

8+
if ENV['AUTOLOAD'] == '1'
9+
autoload(:OpenSSL, 'openssl')
10+
end
11+
812
Dir.glob(File.join(mydir, 'helpers', '*.rb')).each { |file| require file }
913

1014
I18n.load_path += Dir[File.join(mydir, 'locales', '**/*.yml')]

lib/faker/blockchain/bitcoin.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# frozen_string_literal: true
22

3-
require 'openssl'
3+
if ENV['AUTOLOAD'] != '1'
4+
require 'openssl'
5+
end
46
require 'securerandom'
57

68
module Faker

lib/faker/blockchain/tezos.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# frozen_string_literal: true
22

3-
require 'openssl'
3+
if ENV['AUTOLOAD'] != '1'
4+
require 'openssl'
5+
end
46
require 'securerandom'
57

68
module Faker

lib/faker/default/crypto.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# frozen_string_literal: true
22

3-
require 'openssl'
3+
if ENV['AUTOLOAD'] != '1'
4+
require 'openssl'
5+
end
46

57
module Faker
68
class Crypto < Base

0 commit comments

Comments
 (0)