Since in most cases where we have multiple directories to check (ala `rspec-rails`) most of the path will already exist. If we check for the directory existence first instead of letting the error bubble up, the perf improves ~5x:

```ruby
# Benchmarking code
require "benchmark"
require "benchmark/ips"
require "tmpdir"
require 'fileutils'

TMPDIR = 'tempdir'
TMPFILE = 'tempfile'

Dir.mktmpdir do |dir|
  FileUtils.chdir dir
  FileUtils.touch TMPFILE
  FileUtils.mkdir TMPDIR
  Benchmark.ips do |r|

    r.report("Dir: check first") do
      Dir.mkdir(TMPDIR) unless File.exist?(TMPDIR)
    end

    r.report("Dir: with rescue") do
      begin
        Dir.mkdir(TMPDIR)
      rescue
      end
    end

    r.report("File: check first") do
      Dir.mkdir(TMPFILE) unless File.exist?(TMPFILE)
    end

    r.report("File: with rescue") do
      begin
        Dir.mkdir(TMPFILE)
      rescue
      end
    end

  end
end
```

```
Calculating -------------------------------------
    Dir: check first     24961 i/100ms
    Dir: with rescue      9387 i/100ms
   File: check first     26349 i/100ms
   File: with rescue      9232 i/100ms
-------------------------------------------------
    Dir: check first   498909.9 (±14.2%) i/s -    2446178 in   5.031855s
    Dir: with rescue   110663.3 (±8.5%) i/s -     553833 in   5.045112s
   File: check first   483680.0 (±14.0%) i/s -    2371410 in   5.018733s
   File: with rescue   110862.5 (±10.1%) i/s -     553920 in   5.054816s
```

I ran this on my 2011 MacBook Air 1.8 GHz i5 with 8GB 1600MHz DDR3 using Ruby 2.1.1.