mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
	
		
			708 B
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			708 B
		
	
	
	
		
			YAML
		
	
	
	
	
	
prelude: |
 | 
						|
  require "fileutils"
 | 
						|
 | 
						|
  def prepare
 | 
						|
    num_files = 10000
 | 
						|
 | 
						|
    basename = File.dirname($0)
 | 
						|
    data_dir = File.join(basename, "bm_require.data")
 | 
						|
 | 
						|
    # skip if all of files exists
 | 
						|
    if File.exist?(File.join(data_dir, "c#{num_files}.rb"))
 | 
						|
      return
 | 
						|
    end
 | 
						|
 | 
						|
    FileUtils.mkdir_p(data_dir)
 | 
						|
 | 
						|
    1.upto(num_files) do |i|
 | 
						|
      File.write("#{data_dir}/c#{i}.rb", "class C#{i}\n""end\n")
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  prepare
 | 
						|
benchmark:
 | 
						|
  require_thread: |
 | 
						|
    $:.push File.join(File.dirname(__FILE__), "bm_require.data")
 | 
						|
 | 
						|
    i=0
 | 
						|
    t = Thread.new do
 | 
						|
      while true
 | 
						|
        i = i+1 # dummy loop
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    1.upto(100) do |i|
 | 
						|
      require "c#{i}"
 | 
						|
    end
 | 
						|
 | 
						|
    $:.pop
 | 
						|
    t.kill
 | 
						|
loop_count: 1
 |