win32-nio 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGES +27 -21
- data/MANIFEST +13 -13
- data/README +72 -72
- data/Rakefile +51 -46
- data/benchmarks/win32_nio_benchmarks.rb +113 -113
- data/lib/win32/nio.rb +200 -200
- data/lib/win32/windows/constants.rb +72 -72
- data/lib/win32/windows/functions.rb +27 -27
- data/lib/win32/windows/macros.rb +7 -7
- data/lib/win32/windows/structs.rb +39 -39
- data/test/test_win32_nio_read.rb +81 -82
- data/test/test_win32_nio_readlines.rb +66 -66
- data/win32-nio.gemspec +28 -28
- metadata +18 -25
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0e0c6f82dd50fb6d6c72e8debf48914350850adb
|
4
|
+
data.tar.gz: 375cf9ae2ca2a33313714c3b29180bfb2b391134
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ce3a15a046baebf4051e44a62d40f5bd8d13afa7cf2c425ddd9f076a8a92467fc1a77d92a9376f74b59bebff6514e6dc73562ec98a28cab823c0d82ca160566f
|
7
|
+
data.tar.gz: 467026cf075920fc853ccdbe6a4eea13418b5b33ab1851e05523dd5010e0b316ab90c24baaafa70323acbd20354cf51074a4564fe155feccc069b64dea78a9c0
|
data/CHANGES
CHANGED
@@ -1,21 +1,27 @@
|
|
1
|
-
== 0.1.
|
2
|
-
*
|
3
|
-
64
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
*
|
13
|
-
|
14
|
-
|
15
|
-
== 0.0.
|
16
|
-
*
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
1
|
+
== 0.1.2 - 20-Oct-2013
|
2
|
+
* Fixed the underlying data types for the OVERLAPPED FFI struct. This
|
3
|
+
affected 64-bit versions of Ruby.
|
4
|
+
* Updated gem:create task for Rubygems 2.x.
|
5
|
+
* Removed unnecessary require in test suite.
|
6
|
+
|
7
|
+
== 0.1.1 - 10-Apr-2013
|
8
|
+
* Updated the HANDLE type in the underlying FFI code. This affects
|
9
|
+
64 bit versions of Ruby.
|
10
|
+
|
11
|
+
== 0.1.0 - 12-Jul-2012
|
12
|
+
* Changed from win32-api to FFI.
|
13
|
+
* Now requires Ruby 1.9 or later.
|
14
|
+
|
15
|
+
== 0.0.3 - 24-Apr-2010
|
16
|
+
* Removed inline gem building from the gemspec. That's now handled by a
|
17
|
+
Rakefile task.
|
18
|
+
* Rafactored the Rakefile, removed an old install task and added new
|
19
|
+
gem tasks.
|
20
|
+
|
21
|
+
== 0.0.2 - 6-Aug-2009
|
22
|
+
* License changed to Artistic 2.0.
|
23
|
+
* Some gemspec updates, including adding win32-event as a dependency and
|
24
|
+
test-unit as a development dependency.
|
25
|
+
|
26
|
+
== 0.0.1 - 28-Nov-2008
|
27
|
+
* Initial release
|
data/MANIFEST
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
* CHANGES
|
2
|
-
* MANIFEST
|
3
|
-
* Rakefile
|
4
|
-
* README
|
5
|
-
* win32-nio.gemspec
|
6
|
-
* benchmarks/win32_nio_benchmarks.rb
|
7
|
-
* lib/win32/nio.rb
|
8
|
-
* lib/windows/constants.rb
|
9
|
-
* lib/windows/functions.rb
|
10
|
-
* lib/windows/macros.rb
|
11
|
-
* lib/windows/structs.rb
|
12
|
-
* test/test_win32_nio_read.rb
|
13
|
-
* test/test_win32_nio_readlines.rb
|
1
|
+
* CHANGES
|
2
|
+
* MANIFEST
|
3
|
+
* Rakefile
|
4
|
+
* README
|
5
|
+
* win32-nio.gemspec
|
6
|
+
* benchmarks/win32_nio_benchmarks.rb
|
7
|
+
* lib/win32/nio.rb
|
8
|
+
* lib/windows/constants.rb
|
9
|
+
* lib/windows/functions.rb
|
10
|
+
* lib/windows/macros.rb
|
11
|
+
* lib/windows/structs.rb
|
12
|
+
* test/test_win32_nio_read.rb
|
13
|
+
* test/test_win32_nio_readlines.rb
|
data/README
CHANGED
@@ -1,72 +1,72 @@
|
|
1
|
-
= Description
|
2
|
-
Native IO for Windows. This class matches and extends the current Ruby
|
3
|
-
IO class API, using native Windows functions underneath the hood.
|
4
|
-
|
5
|
-
= Installation
|
6
|
-
gem install win32-nio
|
7
|
-
|
8
|
-
= Synopsis
|
9
|
-
require 'win32/nio'
|
10
|
-
include Win32
|
11
|
-
|
12
|
-
p NIO.read('some_file.text')
|
13
|
-
|
14
|
-
p NIO.readlines('some_file.txt')
|
15
|
-
|
16
|
-
= Proof of Concept
|
17
|
-
This code is ALPHA!
|
18
|
-
|
19
|
-
This code is mostly a proof of concept to see how to implement Ruby's
|
20
|
-
IO functions in pure Windows functions. While it does offer a couple of
|
21
|
-
features over and above Ruby's IO interface, such as the ability to supply
|
22
|
-
an event or a block to the NIO.read method, it offers little practical
|
23
|
-
advantage at the moment.
|
24
|
-
|
25
|
-
In addition, it is currently using pure Ruby (via FFI), which means
|
26
|
-
it isn't optimized for speed.
|
27
|
-
|
28
|
-
= Benchmarks
|
29
|
-
|
30
|
-
Using my HP Windows XP Pro laptop, with a 1.66 core duo Pentium T5500 and
|
31
|
-
2gb of RAM, I saw these results, which were typical in repeated runs:
|
32
|
-
|
33
|
-
user system total real
|
34
|
-
IO.read(small) 0.016000 0.047000 0.063000 ( 0.063000)
|
35
|
-
NIO.read(small) 0.109000 0.000000 0.109000 ( 0.109000)
|
36
|
-
IO.read(medium) 0.422000 0.094000 0.516000 ( 0.532000)
|
37
|
-
NIO.read(medium) 0.937000 0.062000 0.999000 ( 1.047000)
|
38
|
-
IO.read(large) 3.282000 1.063000 4.345000 ( 4.468000)
|
39
|
-
NIO.read(large) 8.187000 1.062000 9.249000 ( 9.454000)
|
40
|
-
IO.readlines(small) 0.156000 0.063000 0.219000 ( 0.234000)
|
41
|
-
NIO.readlines(small) 0.141000 0.000000 0.141000 ( 0.797000)
|
42
|
-
IO.readlines(medium) 2.984000 0.250000 3.234000 ( 3.625000)
|
43
|
-
NIO.readlines(medium) 1.172000 0.062000 1.234000 ( 3.406000)
|
44
|
-
IO.readlines(large) 18.625000 2.281000 20.906000 ( 21.532000)
|
45
|
-
NIO.readlines(large) 12.406000 0.563000 12.969000 (122.643000)
|
46
|
-
|
47
|
-
Note that, in most cases, the user and system time has decreased, but
|
48
|
-
the real time has increased.
|
49
|
-
|
50
|
-
= Known Bugs
|
51
|
-
None that I know of. Please log any other bug reports on the RubyForge
|
52
|
-
project page at https://github.com/djberg96/win32-nio.
|
53
|
-
|
54
|
-
= Future Plans
|
55
|
-
The pure Ruby code is really only meant for prototyping. The eventual
|
56
|
-
plan is to convert the Ruby code to equivalent C code in order to improve
|
57
|
-
performance.
|
58
|
-
|
59
|
-
= License
|
60
|
-
Artistic 2.0
|
61
|
-
|
62
|
-
= Copyright
|
63
|
-
(C) 2008-2013 Daniel J. Berger, All Rights Reserved
|
64
|
-
|
65
|
-
= Warranty
|
66
|
-
This package is provided "as is" and without any express or
|
67
|
-
implied warranties, including, without limitation, the implied
|
68
|
-
warranties of merchantability and fitness for a particular purpose.
|
69
|
-
|
70
|
-
= Author(s)
|
71
|
-
Daniel Berger
|
72
|
-
Park Heesob
|
1
|
+
= Description
|
2
|
+
Native IO for Windows. This class matches and extends the current Ruby
|
3
|
+
IO class API, using native Windows functions underneath the hood.
|
4
|
+
|
5
|
+
= Installation
|
6
|
+
gem install win32-nio
|
7
|
+
|
8
|
+
= Synopsis
|
9
|
+
require 'win32/nio'
|
10
|
+
include Win32
|
11
|
+
|
12
|
+
p NIO.read('some_file.text')
|
13
|
+
|
14
|
+
p NIO.readlines('some_file.txt')
|
15
|
+
|
16
|
+
= Proof of Concept
|
17
|
+
This code is ALPHA!
|
18
|
+
|
19
|
+
This code is mostly a proof of concept to see how to implement Ruby's
|
20
|
+
IO functions in pure Windows functions. While it does offer a couple of
|
21
|
+
features over and above Ruby's IO interface, such as the ability to supply
|
22
|
+
an event or a block to the NIO.read method, it offers little practical
|
23
|
+
advantage at the moment.
|
24
|
+
|
25
|
+
In addition, it is currently using pure Ruby (via FFI), which means
|
26
|
+
it isn't optimized for speed.
|
27
|
+
|
28
|
+
= Benchmarks
|
29
|
+
|
30
|
+
Using my HP Windows XP Pro laptop, with a 1.66 core duo Pentium T5500 and
|
31
|
+
2gb of RAM, I saw these results, which were typical in repeated runs:
|
32
|
+
|
33
|
+
user system total real
|
34
|
+
IO.read(small) 0.016000 0.047000 0.063000 ( 0.063000)
|
35
|
+
NIO.read(small) 0.109000 0.000000 0.109000 ( 0.109000)
|
36
|
+
IO.read(medium) 0.422000 0.094000 0.516000 ( 0.532000)
|
37
|
+
NIO.read(medium) 0.937000 0.062000 0.999000 ( 1.047000)
|
38
|
+
IO.read(large) 3.282000 1.063000 4.345000 ( 4.468000)
|
39
|
+
NIO.read(large) 8.187000 1.062000 9.249000 ( 9.454000)
|
40
|
+
IO.readlines(small) 0.156000 0.063000 0.219000 ( 0.234000)
|
41
|
+
NIO.readlines(small) 0.141000 0.000000 0.141000 ( 0.797000)
|
42
|
+
IO.readlines(medium) 2.984000 0.250000 3.234000 ( 3.625000)
|
43
|
+
NIO.readlines(medium) 1.172000 0.062000 1.234000 ( 3.406000)
|
44
|
+
IO.readlines(large) 18.625000 2.281000 20.906000 ( 21.532000)
|
45
|
+
NIO.readlines(large) 12.406000 0.563000 12.969000 (122.643000)
|
46
|
+
|
47
|
+
Note that, in most cases, the user and system time has decreased, but
|
48
|
+
the real time has increased.
|
49
|
+
|
50
|
+
= Known Bugs
|
51
|
+
None that I know of. Please log any other bug reports on the RubyForge
|
52
|
+
project page at https://github.com/djberg96/win32-nio.
|
53
|
+
|
54
|
+
= Future Plans
|
55
|
+
The pure Ruby code is really only meant for prototyping. The eventual
|
56
|
+
plan is to convert the Ruby code to equivalent C code in order to improve
|
57
|
+
performance.
|
58
|
+
|
59
|
+
= License
|
60
|
+
Artistic 2.0
|
61
|
+
|
62
|
+
= Copyright
|
63
|
+
(C) 2008-2013 Daniel J. Berger, All Rights Reserved
|
64
|
+
|
65
|
+
= Warranty
|
66
|
+
This package is provided "as is" and without any express or
|
67
|
+
implied warranties, including, without limitation, the implied
|
68
|
+
warranties of merchantability and fitness for a particular purpose.
|
69
|
+
|
70
|
+
= Author(s)
|
71
|
+
Daniel Berger
|
72
|
+
Park Heesob
|
data/Rakefile
CHANGED
@@ -1,46 +1,51 @@
|
|
1
|
-
require 'rake'
|
2
|
-
require 'rake/clean'
|
3
|
-
require 'rake/testtask'
|
4
|
-
|
5
|
-
CLEAN.include("**/*.gem", "**/*.txt")
|
6
|
-
|
7
|
-
namespace 'gem' do
|
8
|
-
desc 'Create the win32-nio gem'
|
9
|
-
task :create => [:clean] do
|
10
|
-
spec = eval(IO.read('win32-nio.gemspec'))
|
11
|
-
Gem::
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
t.
|
35
|
-
t.
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
t.
|
41
|
-
t.
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/clean'
|
3
|
+
require 'rake/testtask'
|
4
|
+
|
5
|
+
CLEAN.include("**/*.gem", "**/*.txt")
|
6
|
+
|
7
|
+
namespace 'gem' do
|
8
|
+
desc 'Create the win32-nio gem'
|
9
|
+
task :create => [:clean] do
|
10
|
+
spec = eval(IO.read('win32-nio.gemspec'))
|
11
|
+
if Gem::VERSION < "2.0.0"
|
12
|
+
Gem::Builder.new(spec).build
|
13
|
+
else
|
14
|
+
require 'rubygems/package'
|
15
|
+
Gem::Package.build(spec)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
desc 'Install the win32-nio gem'
|
20
|
+
task :install => [:create] do
|
21
|
+
file = Dir['*.gem'].first
|
22
|
+
sh "gem install #{file}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
desc 'Run the benchmark suite'
|
27
|
+
task :bench do
|
28
|
+
sh "ruby -Ilib benchmarks/win32_nio_benchmarks.rb"
|
29
|
+
end
|
30
|
+
|
31
|
+
namespace :test do
|
32
|
+
Rake::TestTask.new(:read) do |t|
|
33
|
+
t.verbose = true
|
34
|
+
t.warning = true
|
35
|
+
t.test_files = FileList['test/test_win32_nio_read.rb']
|
36
|
+
end
|
37
|
+
|
38
|
+
Rake::TestTask.new(:readlines) do |t|
|
39
|
+
t.verbose = true
|
40
|
+
t.warning = true
|
41
|
+
t.test_files = FileList['test/test_win32_nio_readlines.rb']
|
42
|
+
end
|
43
|
+
|
44
|
+
Rake::TestTask.new(:all) do |t|
|
45
|
+
t.verbose = true
|
46
|
+
t.warning = true
|
47
|
+
t.test_files = FileList['test/test*.rb']
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
task :default => 'test:all'
|
@@ -1,113 +1,113 @@
|
|
1
|
-
########################################################################
|
2
|
-
# win32_nio_benchmarks.rb
|
3
|
-
#
|
4
|
-
# Run this via the 'rake bench' task to compare win32-nio with Ruby's
|
5
|
-
# own IO methods. This benchmark will take a bit of time, since it
|
6
|
-
# generates some test files on the fly.
|
7
|
-
########################################################################
|
8
|
-
require 'benchmark'
|
9
|
-
require 'win32/nio'
|
10
|
-
include Win32
|
11
|
-
|
12
|
-
MAX = (ARGV[0] || '10').chomp.to_i # Default to 10 iterations
|
13
|
-
PHRASE = "The quick brown fox jumped over the lazy dog's back"
|
14
|
-
|
15
|
-
SMALL_FILE = "small_nio_test.txt" # 588k
|
16
|
-
MEDIUM_FILE = "medium_nio_test.txt" # 6mb
|
17
|
-
LARGE_FILE = "large_nio_test.txt" # 60mb
|
18
|
-
HUGE_FILE = "huge_nio_test.txt" # 618mb
|
19
|
-
|
20
|
-
unless File.exists?(SMALL_FILE)
|
21
|
-
File.open(SMALL_FILE, 'w'){ |fh|
|
22
|
-
10000.times{ |n| fh.puts PHRASE + ": #{n}" }
|
23
|
-
}
|
24
|
-
|
25
|
-
puts "Small file created"
|
26
|
-
end
|
27
|
-
|
28
|
-
unless File.exists?(MEDIUM_FILE)
|
29
|
-
File.open(MEDIUM_FILE, 'w'){ |fh|
|
30
|
-
110000.times{ |n| fh.puts PHRASE + ": #{n}" }
|
31
|
-
}
|
32
|
-
|
33
|
-
puts "Medium file created"
|
34
|
-
end
|
35
|
-
|
36
|
-
unless File.exists?(LARGE_FILE)
|
37
|
-
File.open(LARGE_FILE, 'w'){ |fh|
|
38
|
-
1000000.times{ |n| fh.puts PHRASE + ": #{n}" }
|
39
|
-
}
|
40
|
-
|
41
|
-
puts "Large file created"
|
42
|
-
end
|
43
|
-
|
44
|
-
unless File.exists?(HUGE_FILE)
|
45
|
-
#File.open(HUGE_FILE, 'w'){ |fh|
|
46
|
-
# 10000000.times{ |n| fh.puts PHRASE + ": #{n}" }
|
47
|
-
#}
|
48
|
-
|
49
|
-
#puts "Huge file created"
|
50
|
-
end
|
51
|
-
|
52
|
-
Benchmark.bm(20) do |x|
|
53
|
-
x.report('IO.read(small)'){
|
54
|
-
MAX.times{ IO.read(SMALL_FILE) }
|
55
|
-
}
|
56
|
-
|
57
|
-
x.report('NIO.read(small)'){
|
58
|
-
MAX.times{ NIO.read(SMALL_FILE) }
|
59
|
-
}
|
60
|
-
|
61
|
-
x.report('IO.read(medium)'){
|
62
|
-
MAX.times{ IO.read(MEDIUM_FILE) }
|
63
|
-
}
|
64
|
-
|
65
|
-
x.report('NIO.read(medium)'){
|
66
|
-
MAX.times{ NIO.read(MEDIUM_FILE) }
|
67
|
-
}
|
68
|
-
|
69
|
-
x.report('IO.read(large)'){
|
70
|
-
MAX.times{ IO.read(LARGE_FILE) }
|
71
|
-
}
|
72
|
-
|
73
|
-
x.report('NIO.read(large)'){
|
74
|
-
MAX.times{ NIO.read(LARGE_FILE) }
|
75
|
-
}
|
76
|
-
|
77
|
-
#x.report('IO.read(huge)'){
|
78
|
-
# MAX.times{ IO.read(HUGE_FILE) }
|
79
|
-
#}
|
80
|
-
|
81
|
-
#x.report('NIO.read(huge)'){
|
82
|
-
# MAX.times{ NIO.read(HUGE_FILE) }
|
83
|
-
#}
|
84
|
-
|
85
|
-
x.report('IO.readlines(small)'){
|
86
|
-
MAX.times{ IO.readlines(SMALL_FILE) }
|
87
|
-
}
|
88
|
-
|
89
|
-
x.report('NIO.readlines(small)'){
|
90
|
-
MAX.times{ NIO.readlines(SMALL_FILE) }
|
91
|
-
}
|
92
|
-
|
93
|
-
x.report('IO.readlines(medium)'){
|
94
|
-
MAX.times{ IO.readlines(MEDIUM_FILE) }
|
95
|
-
}
|
96
|
-
|
97
|
-
x.report('NIO.readlines(medium)'){
|
98
|
-
MAX.times{ NIO.readlines(MEDIUM_FILE) }
|
99
|
-
}
|
100
|
-
|
101
|
-
x.report('IO.readlines(large)'){
|
102
|
-
MAX.times{ IO.readlines(LARGE_FILE) }
|
103
|
-
}
|
104
|
-
|
105
|
-
x.report('NIO.readlines(large)'){
|
106
|
-
MAX.times{ NIO.readlines(LARGE_FILE) }
|
107
|
-
}
|
108
|
-
end
|
109
|
-
|
110
|
-
File.delete(SMALL_FILE) if File.exists?(SMALL_FILE)
|
111
|
-
File.delete(MEDIUM_FILE) if File.exists?(MEDIUM_FILE)
|
112
|
-
File.delete(LARGE_FILE) if File.exists?(LARGE_FILE)
|
113
|
-
File.delete(HUGE_FILE) if File.exists?(HUGE_FILE)
|
1
|
+
########################################################################
|
2
|
+
# win32_nio_benchmarks.rb
|
3
|
+
#
|
4
|
+
# Run this via the 'rake bench' task to compare win32-nio with Ruby's
|
5
|
+
# own IO methods. This benchmark will take a bit of time, since it
|
6
|
+
# generates some test files on the fly.
|
7
|
+
########################################################################
|
8
|
+
require 'benchmark'
|
9
|
+
require 'win32/nio'
|
10
|
+
include Win32
|
11
|
+
|
12
|
+
MAX = (ARGV[0] || '10').chomp.to_i # Default to 10 iterations
|
13
|
+
PHRASE = "The quick brown fox jumped over the lazy dog's back"
|
14
|
+
|
15
|
+
SMALL_FILE = "small_nio_test.txt" # 588k
|
16
|
+
MEDIUM_FILE = "medium_nio_test.txt" # 6mb
|
17
|
+
LARGE_FILE = "large_nio_test.txt" # 60mb
|
18
|
+
HUGE_FILE = "huge_nio_test.txt" # 618mb
|
19
|
+
|
20
|
+
unless File.exists?(SMALL_FILE)
|
21
|
+
File.open(SMALL_FILE, 'w'){ |fh|
|
22
|
+
10000.times{ |n| fh.puts PHRASE + ": #{n}" }
|
23
|
+
}
|
24
|
+
|
25
|
+
puts "Small file created"
|
26
|
+
end
|
27
|
+
|
28
|
+
unless File.exists?(MEDIUM_FILE)
|
29
|
+
File.open(MEDIUM_FILE, 'w'){ |fh|
|
30
|
+
110000.times{ |n| fh.puts PHRASE + ": #{n}" }
|
31
|
+
}
|
32
|
+
|
33
|
+
puts "Medium file created"
|
34
|
+
end
|
35
|
+
|
36
|
+
unless File.exists?(LARGE_FILE)
|
37
|
+
File.open(LARGE_FILE, 'w'){ |fh|
|
38
|
+
1000000.times{ |n| fh.puts PHRASE + ": #{n}" }
|
39
|
+
}
|
40
|
+
|
41
|
+
puts "Large file created"
|
42
|
+
end
|
43
|
+
|
44
|
+
unless File.exists?(HUGE_FILE)
|
45
|
+
#File.open(HUGE_FILE, 'w'){ |fh|
|
46
|
+
# 10000000.times{ |n| fh.puts PHRASE + ": #{n}" }
|
47
|
+
#}
|
48
|
+
|
49
|
+
#puts "Huge file created"
|
50
|
+
end
|
51
|
+
|
52
|
+
Benchmark.bm(20) do |x|
|
53
|
+
x.report('IO.read(small)'){
|
54
|
+
MAX.times{ IO.read(SMALL_FILE) }
|
55
|
+
}
|
56
|
+
|
57
|
+
x.report('NIO.read(small)'){
|
58
|
+
MAX.times{ NIO.read(SMALL_FILE) }
|
59
|
+
}
|
60
|
+
|
61
|
+
x.report('IO.read(medium)'){
|
62
|
+
MAX.times{ IO.read(MEDIUM_FILE) }
|
63
|
+
}
|
64
|
+
|
65
|
+
x.report('NIO.read(medium)'){
|
66
|
+
MAX.times{ NIO.read(MEDIUM_FILE) }
|
67
|
+
}
|
68
|
+
|
69
|
+
x.report('IO.read(large)'){
|
70
|
+
MAX.times{ IO.read(LARGE_FILE) }
|
71
|
+
}
|
72
|
+
|
73
|
+
x.report('NIO.read(large)'){
|
74
|
+
MAX.times{ NIO.read(LARGE_FILE) }
|
75
|
+
}
|
76
|
+
|
77
|
+
#x.report('IO.read(huge)'){
|
78
|
+
# MAX.times{ IO.read(HUGE_FILE) }
|
79
|
+
#}
|
80
|
+
|
81
|
+
#x.report('NIO.read(huge)'){
|
82
|
+
# MAX.times{ NIO.read(HUGE_FILE) }
|
83
|
+
#}
|
84
|
+
|
85
|
+
x.report('IO.readlines(small)'){
|
86
|
+
MAX.times{ IO.readlines(SMALL_FILE) }
|
87
|
+
}
|
88
|
+
|
89
|
+
x.report('NIO.readlines(small)'){
|
90
|
+
MAX.times{ NIO.readlines(SMALL_FILE) }
|
91
|
+
}
|
92
|
+
|
93
|
+
x.report('IO.readlines(medium)'){
|
94
|
+
MAX.times{ IO.readlines(MEDIUM_FILE) }
|
95
|
+
}
|
96
|
+
|
97
|
+
x.report('NIO.readlines(medium)'){
|
98
|
+
MAX.times{ NIO.readlines(MEDIUM_FILE) }
|
99
|
+
}
|
100
|
+
|
101
|
+
x.report('IO.readlines(large)'){
|
102
|
+
MAX.times{ IO.readlines(LARGE_FILE) }
|
103
|
+
}
|
104
|
+
|
105
|
+
x.report('NIO.readlines(large)'){
|
106
|
+
MAX.times{ NIO.readlines(LARGE_FILE) }
|
107
|
+
}
|
108
|
+
end
|
109
|
+
|
110
|
+
File.delete(SMALL_FILE) if File.exists?(SMALL_FILE)
|
111
|
+
File.delete(MEDIUM_FILE) if File.exists?(MEDIUM_FILE)
|
112
|
+
File.delete(LARGE_FILE) if File.exists?(LARGE_FILE)
|
113
|
+
File.delete(HUGE_FILE) if File.exists?(HUGE_FILE)
|