RbYAML 0.0.2 → 0.1.0
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.
- data/README +1 -1
- data/lib/rbyaml/composer.rb +28 -25
- data/lib/rbyaml/composer.rb.~1.2.~ +109 -0
- data/lib/rbyaml/constructor.rb +94 -84
- data/lib/rbyaml/constructor.rb.~1.2.~ +381 -0
- data/lib/rbyaml/dumper.rb +10 -17
- data/lib/rbyaml/dumper.rb.~1.2.~ +43 -0
- data/lib/rbyaml/emitter.rb +13 -26
- data/lib/rbyaml/emitter.rb.~1.2.~ +1116 -0
- data/lib/rbyaml/error.rb +15 -21
- data/lib/rbyaml/events.rb +29 -5
- data/lib/rbyaml/events.rb.~1.2.~ +93 -0
- data/lib/rbyaml/loader.rb +11 -23
- data/lib/rbyaml/loader.rb.~1.2.~ +52 -0
- data/lib/rbyaml/nodes.rb +13 -9
- data/lib/rbyaml/nodes.rb.~1.2.~ +52 -0
- data/lib/rbyaml/parser.rb +481 -343
- data/lib/rbyaml/parser.rb.old +531 -0
- data/lib/rbyaml/parser.rb.~1.2.~ +494 -0
- data/lib/rbyaml/reader.rb.~1.1.1.1.~ +127 -0
- data/lib/rbyaml/representer.rb +26 -17
- data/lib/rbyaml/representer.rb.~1.2.~ +239 -0
- data/lib/rbyaml/resolver.rb +15 -15
- data/lib/rbyaml/resolver.rb.~1.1.~ +163 -0
- data/lib/rbyaml/scanner.rb +457 -366
- data/lib/rbyaml/scanner.rb.~1.2.~ +1259 -0
- data/lib/rbyaml/serializer.rb +19 -17
- data/lib/rbyaml/serializer.rb.~1.2.~ +115 -0
- data/lib/rbyaml/tokens.rb +44 -4
- data/lib/rbyaml/tokens.rb.~1.2.~ +164 -0
- data/lib/rbyaml/util.rb +28 -0
- data/lib/rbyaml/yaml.rb +12 -12
- data/lib/rbyaml/yaml.rb.~1.2.~ +136 -0
- data/test/test_bm.rb +28 -0
- data/test/test_bm_syck.rb +28 -0
- data/test/test_invoke.rb +31 -0
- data/test/test_one.rb +5 -0
- data/test/test_profile.rb +32 -0
- data/test/test_rbyaml.rb +2 -1
- data/test/test_rbyaml.rb.~1.2.~ +31 -0
- data/test/test_time.rb +13 -8
- data/test/test_time.rb.~1.1.~ +29 -0
- data/test/yamlx.rb +3563 -0
- metadata +27 -2
data/lib/rbyaml/util.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
class Object
|
2
|
+
def __is_str; false end
|
3
|
+
def __is_sym; false end
|
4
|
+
def __is_a; false end
|
5
|
+
def __is_int; false end
|
6
|
+
end
|
7
|
+
|
8
|
+
class String
|
9
|
+
def __is_str; true end
|
10
|
+
end
|
11
|
+
|
12
|
+
class Symbol
|
13
|
+
def __is_sym; true end
|
14
|
+
end
|
15
|
+
|
16
|
+
class Array
|
17
|
+
def __is_a; true end
|
18
|
+
end
|
19
|
+
|
20
|
+
class Integer
|
21
|
+
def __is_int; true end
|
22
|
+
end
|
23
|
+
|
24
|
+
class Fixnum
|
25
|
+
def __is_ascii_num
|
26
|
+
self <= ?9 && self >= ?0
|
27
|
+
end
|
28
|
+
end
|
data/lib/rbyaml/yaml.rb
CHANGED
@@ -12,32 +12,32 @@ require 'rbyaml/dumper'
|
|
12
12
|
module RbYAML
|
13
13
|
def self._scan(stream, loader=Loader)
|
14
14
|
l = loader.new(stream)
|
15
|
-
yield l.get_token while l.check_token
|
15
|
+
yield l.scanner.get_token while l.scanner.check_token
|
16
16
|
end
|
17
17
|
|
18
18
|
def self._parse(stream, loader=Loader)
|
19
19
|
l = loader.new(stream)
|
20
|
-
yield l.get_event while l.check_event
|
20
|
+
yield l.parser.get_event while l.parser.check_event
|
21
21
|
end
|
22
22
|
|
23
23
|
def self._compose(stream, loader=Loader)
|
24
24
|
l = loader.new(stream)
|
25
|
-
l.get_node if l.check_node
|
25
|
+
l.composer.get_node if l.composer.check_node
|
26
26
|
end
|
27
27
|
|
28
28
|
def self._compose_all(stream, loader=Loader)
|
29
29
|
l = loader.new(stream)
|
30
|
-
yield l.get_node while l.check_node
|
30
|
+
yield l.composer.get_node while l.composer.check_node
|
31
31
|
end
|
32
32
|
|
33
33
|
def self._load_all(stream, loader=Loader)
|
34
34
|
l = loader.new(stream)
|
35
|
-
yield l.get_data while l.check_data
|
35
|
+
yield l.constructor.get_data while l.constructor.check_data
|
36
36
|
end
|
37
37
|
|
38
38
|
def self._load(stream, loader=Loader)
|
39
39
|
l = loader.new(stream)
|
40
|
-
l.get_data if l.check_data
|
40
|
+
l.constructor.get_data if l.constructor.check_data
|
41
41
|
end
|
42
42
|
|
43
43
|
def self._safe_load_all(stream)
|
@@ -66,11 +66,11 @@ module RbYAML
|
|
66
66
|
stream = StringIO.new
|
67
67
|
end
|
68
68
|
dumper = dumper.new(stream,default_style,default_flow_style,canonical,indent,width,line_break,version,tags,explicit_start,explicit_end)
|
69
|
-
dumper.open
|
69
|
+
dumper.serializer.open
|
70
70
|
for node in nodes
|
71
|
-
dumper.serialize(node)
|
71
|
+
dumper.serializer.serialize(node)
|
72
72
|
end
|
73
|
-
dumper.close
|
73
|
+
dumper.serializer.close
|
74
74
|
stream.string if StringIO === stream
|
75
75
|
end
|
76
76
|
|
@@ -84,11 +84,11 @@ module RbYAML
|
|
84
84
|
stream = StringIO.new
|
85
85
|
end
|
86
86
|
dumper = dumper.new(stream,default_style,default_flow_style,canonical,indent,width,line_break,version,tags,explicit_start,explicit_end)
|
87
|
-
dumper.open
|
87
|
+
dumper.serializer.open
|
88
88
|
for data in documents
|
89
|
-
dumper.represent(data)
|
89
|
+
dumper.representer.represent(data)
|
90
90
|
end
|
91
|
-
dumper.close
|
91
|
+
dumper.serializer.close
|
92
92
|
stream.string if StringIO === stream
|
93
93
|
end
|
94
94
|
|
@@ -0,0 +1,136 @@
|
|
1
|
+
require 'stringio'
|
2
|
+
|
3
|
+
require 'rbyaml/error'
|
4
|
+
|
5
|
+
require 'rbyaml/tokens'
|
6
|
+
require 'rbyaml/events'
|
7
|
+
require 'rbyaml/nodes'
|
8
|
+
|
9
|
+
require 'rbyaml/loader'
|
10
|
+
require 'rbyaml/dumper'
|
11
|
+
|
12
|
+
module RbYAML
|
13
|
+
def self._scan(stream, loader=Loader)
|
14
|
+
l = loader.new(stream)
|
15
|
+
yield l.get_token while l.check_token
|
16
|
+
end
|
17
|
+
|
18
|
+
def self._parse(stream, loader=Loader)
|
19
|
+
l = loader.new(stream)
|
20
|
+
yield l.get_event while l.check_event
|
21
|
+
end
|
22
|
+
|
23
|
+
def self._compose(stream, loader=Loader)
|
24
|
+
l = loader.new(stream)
|
25
|
+
l.get_node if l.check_node
|
26
|
+
end
|
27
|
+
|
28
|
+
def self._compose_all(stream, loader=Loader)
|
29
|
+
l = loader.new(stream)
|
30
|
+
yield l.get_node while l.check_node
|
31
|
+
end
|
32
|
+
|
33
|
+
def self._load_all(stream, loader=Loader)
|
34
|
+
l = loader.new(stream)
|
35
|
+
yield l.get_data while l.check_data
|
36
|
+
end
|
37
|
+
|
38
|
+
def self._load(stream, loader=Loader)
|
39
|
+
l = loader.new(stream)
|
40
|
+
l.get_data if l.check_data
|
41
|
+
end
|
42
|
+
|
43
|
+
def self._safe_load_all(stream)
|
44
|
+
_load_all(stream, SafeLoader)
|
45
|
+
end
|
46
|
+
|
47
|
+
def self._safe_load(stream)
|
48
|
+
_load(stream, SafeLoader)
|
49
|
+
end
|
50
|
+
|
51
|
+
def self._emit(events, stream=nil, dumper=Dumper,default_style=nil,default_flow_style=nil,canonical=nil, indent=nil, width=nil,line_break=nil)
|
52
|
+
if stream.nil?
|
53
|
+
require 'stringio'
|
54
|
+
stream = StringIO.new
|
55
|
+
end
|
56
|
+
dumper = dumper.new(stream,default_style,default_flow_style,canonical,indent,width,line_break)
|
57
|
+
for event in events
|
58
|
+
dumper.emit(event)
|
59
|
+
end
|
60
|
+
stream.string if StringIO === stream
|
61
|
+
end
|
62
|
+
|
63
|
+
def self._serialize_all(nodes,stream=nil,dumper=Dumper,default_style=nil,default_flow_style=nil,canonical=nil,indent=nil,width=nil,line_break=nil,explicit_start=nil,explicit_end=nil,version=nil,tags=nil)
|
64
|
+
if stream.nil?
|
65
|
+
require 'stringio'
|
66
|
+
stream = StringIO.new
|
67
|
+
end
|
68
|
+
dumper = dumper.new(stream,default_style,default_flow_style,canonical,indent,width,line_break,version,tags,explicit_start,explicit_end)
|
69
|
+
dumper.open
|
70
|
+
for node in nodes
|
71
|
+
dumper.serialize(node)
|
72
|
+
end
|
73
|
+
dumper.close
|
74
|
+
stream.string if StringIO === stream
|
75
|
+
end
|
76
|
+
|
77
|
+
def self._serialize(node, stream=nil, dumper=Dumper, *kwds)
|
78
|
+
_serialize_all([node], stream, dumper, *kwds)
|
79
|
+
end
|
80
|
+
|
81
|
+
def self._dump_all(documents,stream=nil,dumper=Dumper,default_style=nil,default_flow_style=nil,canonical=nil,indent=nil,width=nil,line_break=nil,explicit_start=nil,explicit_end=nil,version=nil,tags=nil)
|
82
|
+
if stream.nil?
|
83
|
+
require 'stringio'
|
84
|
+
stream = StringIO.new
|
85
|
+
end
|
86
|
+
dumper = dumper.new(stream,default_style,default_flow_style,canonical,indent,width,line_break,version,tags,explicit_start,explicit_end)
|
87
|
+
dumper.open
|
88
|
+
for data in documents
|
89
|
+
dumper.represent(data)
|
90
|
+
end
|
91
|
+
dumper.close
|
92
|
+
stream.string if StringIO === stream
|
93
|
+
end
|
94
|
+
|
95
|
+
def self._dump(data, stream=nil, dumper=Dumper, *kwds)
|
96
|
+
_dump_all([data], stream, dumper, *kwds)
|
97
|
+
end
|
98
|
+
|
99
|
+
def self._safe_dump_all(documents, stream=nil, *kwds)
|
100
|
+
_dump_all(documents, stream, SafeDumper, *kwds)
|
101
|
+
end
|
102
|
+
|
103
|
+
def self._safe_dump(data, stream=nil, *kwds)
|
104
|
+
_dump_all([data], stream, SafeDumper, *kwds)
|
105
|
+
end
|
106
|
+
|
107
|
+
def self._add_implicit_resolver(tag, regexp, first=nil, loader=Loader, dumper=Dumper)
|
108
|
+
loader.add_implicit_resolver(tag, regexp, first)
|
109
|
+
dumper.add_implicit_resolver(tag, regexp, first)
|
110
|
+
end
|
111
|
+
|
112
|
+
def self._add_path_resolver(tag, path, kind=nil, loader=Loader, dumper=Dumper)
|
113
|
+
loader.add_path_resolver(tag, path, kind)
|
114
|
+
lumper.add_path_resolver(tag, path, kind)
|
115
|
+
end
|
116
|
+
|
117
|
+
def self._add_constructor(tag, constructor, loader=Loader)
|
118
|
+
loader.add_constructor(tag, constructor)
|
119
|
+
end
|
120
|
+
|
121
|
+
def self._add_multi_constructor(tag_prefix, multi_constructor, loader=Loader)
|
122
|
+
loader.add_multi_constructor(tag_prefix, multi_constructor)
|
123
|
+
end
|
124
|
+
|
125
|
+
def self._add_representer(data_type, representer, dumper=Dumper)
|
126
|
+
dumper.add_representer(data_type, representer)
|
127
|
+
end
|
128
|
+
|
129
|
+
def self._add_multi_representer(data_type, multi_representer, dumper=Dumper)
|
130
|
+
dumper.add_multi_representer(data_type, multi_representer)
|
131
|
+
end
|
132
|
+
|
133
|
+
def self._dump_ruby_object(data, dumper=Dumper)
|
134
|
+
_dump(data,nil,dumper)
|
135
|
+
end
|
136
|
+
end
|
data/test/test_bm.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
2
|
+
|
3
|
+
require 'benchmark'
|
4
|
+
require 'rbyaml'
|
5
|
+
require 'yamlx'
|
6
|
+
|
7
|
+
FILES = %w{test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 test12 test13 test14 test16 test18 test19 test20 gems2}
|
8
|
+
DO_TIMES = 100
|
9
|
+
|
10
|
+
Benchmark.bmbm do |bm|
|
11
|
+
bm.report("JRuby YAML") {
|
12
|
+
FILES.each {|fname|
|
13
|
+
x = File.read("yaml/#{fname}.yml")
|
14
|
+
for k in 1..DO_TIMES
|
15
|
+
YAML::load(x)
|
16
|
+
end
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
bm.report("RbYAML") {
|
21
|
+
FILES.each {|fname|
|
22
|
+
x = File.read("yaml/#{fname}.yml")
|
23
|
+
for k in 1..DO_TIMES
|
24
|
+
RbYAML::load(x)
|
25
|
+
end
|
26
|
+
}
|
27
|
+
}
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
2
|
+
|
3
|
+
require 'benchmark'
|
4
|
+
require 'rbyaml'
|
5
|
+
require 'yaml'
|
6
|
+
|
7
|
+
FILES = %w{test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 test12 test13 test14 test16 test18 test19 test20 gems2}
|
8
|
+
DO_TIMES = 100
|
9
|
+
|
10
|
+
Benchmark.bmbm do |bm|
|
11
|
+
bm.report("SYCK") {
|
12
|
+
FILES.each {|fname|
|
13
|
+
x = File.read("yaml/#{fname}.yml")
|
14
|
+
for k in 1..DO_TIMES
|
15
|
+
YAML::load(x)
|
16
|
+
end
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
bm.report("RbYAML") {
|
21
|
+
FILES.each {|fname|
|
22
|
+
x = File.read("yaml/#{fname}.yml")
|
23
|
+
for k in 1..DO_TIMES
|
24
|
+
RbYAML::load(x)
|
25
|
+
end
|
26
|
+
}
|
27
|
+
}
|
28
|
+
end
|
data/test/test_invoke.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
class Time
|
4
|
+
def self.time(times = 1)
|
5
|
+
if block_given?
|
6
|
+
before = Time.now
|
7
|
+
times.times {
|
8
|
+
yield
|
9
|
+
}
|
10
|
+
after = Time.now
|
11
|
+
return after-before
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
def methoda
|
18
|
+
10000+1
|
19
|
+
end
|
20
|
+
|
21
|
+
DO_TIMES = 1000000
|
22
|
+
ttimes = Time.time(DO_TIMES) {
|
23
|
+
methoda
|
24
|
+
}
|
25
|
+
|
26
|
+
ttimes2 = Time.time(DO_TIMES) {
|
27
|
+
send(:methoda)
|
28
|
+
}
|
29
|
+
|
30
|
+
puts "direct invoke: #{ttimes}"
|
31
|
+
puts "send invoke: #{ttimes2}"
|
data/test/test_one.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
2
|
+
|
3
|
+
class Module
|
4
|
+
def add_tracer(meth)
|
5
|
+
m_alias = case meth
|
6
|
+
when :+ : "old_plus"
|
7
|
+
when :=== : "old_triple"
|
8
|
+
when :== : "old_eq"
|
9
|
+
else ; "old_#{method}"
|
10
|
+
end
|
11
|
+
module_eval %Q{
|
12
|
+
alias :#{m_alias} :#{meth}
|
13
|
+
def #{meth}(*args,&block)
|
14
|
+
puts caller[0] + ": " + self.class.name + "##{meth} called"
|
15
|
+
#{m_alias}(*args,&block)
|
16
|
+
end
|
17
|
+
}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
#Kernel.add_tracer(:===)
|
22
|
+
#Kernel.add_tracer(:==)
|
23
|
+
#Fixnum.add_tracer(:+)
|
24
|
+
|
25
|
+
require 'profile'
|
26
|
+
require 'rbyaml'
|
27
|
+
|
28
|
+
FILES = %w{test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 test12 test13 test14 test16 test18 test19 test20 gems2}
|
29
|
+
FILES.each {|fname|
|
30
|
+
RbYAML::load(File.read("yaml/#{fname}.yml"))
|
31
|
+
}
|
32
|
+
|
data/test/test_rbyaml.rb
CHANGED
@@ -2,6 +2,7 @@ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
|
2
2
|
|
3
3
|
require 'rbyaml'
|
4
4
|
require 'test/unit'
|
5
|
+
require 'rubygems'
|
5
6
|
|
6
7
|
class TestRbYAML < Test::Unit::TestCase
|
7
8
|
def test_basic_load
|
@@ -19,7 +20,7 @@ class TestRbYAML < Test::Unit::TestCase
|
|
19
20
|
end
|
20
21
|
|
21
22
|
class TestRbYAMLFromFiles < Test::Unit::TestCase
|
22
|
-
FILES = %w{test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 test12 test13 test14 test15 test16 test18 test19 test20}
|
23
|
+
FILES = %w{test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 test12 test13 test14 test15 test16 test18 test19 test20 gems2}
|
23
24
|
|
24
25
|
FILES.each { |test|
|
25
26
|
self.class_eval <<-ENDCLS
|
@@ -0,0 +1,31 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
2
|
+
|
3
|
+
require 'rbyaml'
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
class TestRbYAML < Test::Unit::TestCase
|
7
|
+
def test_basic_load
|
8
|
+
assert_equal({"A"=>"b","c"=>3.14},RbYAML.load("--- \nA: b\nc: 3.14\n"))
|
9
|
+
assert_equal(["A","b","c"],RbYAML.load("--- \n- A\n- b\n- c\n"))
|
10
|
+
assert_equal("foo",RbYAML.load("foo\n"))
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_basic_dump
|
14
|
+
answ,ver1,ver2 = RbYAML.dump({"A"=>"b","c"=>3.14}),"A: b\nc: 3.14\n", "c: 3.14\nA: b\n"
|
15
|
+
assert_equal(true, ver1 == answ || ver2 == answ,"was #{answ.inspect} but should be #{ver1.inspect} or #{ver2.inspect}")
|
16
|
+
assert_equal("- A\n- b\n- c\n",RbYAML.dump(["A","b","c"]))
|
17
|
+
assert_equal("foo\n",RbYAML.dump("foo"))
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class TestRbYAMLFromFiles < Test::Unit::TestCase
|
22
|
+
FILES = %w{test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 test12 test13 test14 test15 test16 test18 test19 test20}
|
23
|
+
|
24
|
+
FILES.each { |test|
|
25
|
+
self.class_eval <<-ENDCLS
|
26
|
+
def test_#{test}
|
27
|
+
RbYAML.dump(open(File.expand_path(File.join(File.dirname(__FILE__),"yaml","#{test}.yml")),"r") {|f| RbYAML.load(f)})
|
28
|
+
end
|
29
|
+
ENDCLS
|
30
|
+
}
|
31
|
+
end
|
data/test/test_time.rb
CHANGED
@@ -15,15 +15,20 @@ class Time
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
|
-
ttimes =
|
20
|
-
|
18
|
+
FILES = %w{test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 test12 test13 test14 test16 test18 test19 test20 gems2}
|
19
|
+
ttimes = 0
|
20
|
+
DO_TIMES = 100
|
21
|
+
FILES.each {|fname|
|
22
|
+
x = File.read("yaml/#{fname}.yml")
|
23
|
+
ttimes += Time.time(DO_TIMES) {
|
24
|
+
RbYAML::load(x)
|
25
|
+
}
|
21
26
|
}
|
22
27
|
|
23
|
-
ttimes2 = Time.time(DO_TIMES) {
|
24
|
-
RbYAML::dump(open("yaml/test1.yml") { |f| RbYAML::load(f) })
|
25
|
-
} - ttimes
|
28
|
+
#ttimes2 = Time.time(DO_TIMES) {
|
29
|
+
# RbYAML::dump(open("yaml/test1.yml") { |f| RbYAML::load(f) })
|
30
|
+
#} - ttimes
|
26
31
|
|
27
|
-
puts "loading a file #{DO_TIMES} times took #{ttimes.to_f * 1000} milli seconds"
|
32
|
+
puts "loading a file #{DO_TIMES*FILES.length} times took #{ttimes.to_f * 1000} milli seconds"
|
28
33
|
|
29
|
-
puts "dumping a file #{DO_TIMES} times took #{ttimes2.to_f * 1000} milliseconds"
|
34
|
+
#puts "dumping a file #{DO_TIMES} times took #{ttimes2.to_f * 1000} milliseconds"
|
@@ -0,0 +1,29 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
2
|
+
|
3
|
+
require 'rbyaml'
|
4
|
+
|
5
|
+
class Time
|
6
|
+
def self.time(times = 1)
|
7
|
+
if block_given?
|
8
|
+
before = Time.now
|
9
|
+
times.times {
|
10
|
+
yield
|
11
|
+
}
|
12
|
+
after = Time.now
|
13
|
+
return after-before
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
DO_TIMES = 10000
|
19
|
+
ttimes = Time.time(DO_TIMES) {
|
20
|
+
open("yaml/test1.yml") { |f| RbYAML::load(f) }
|
21
|
+
}
|
22
|
+
|
23
|
+
ttimes2 = Time.time(DO_TIMES) {
|
24
|
+
RbYAML::dump(open("yaml/test1.yml") { |f| RbYAML::load(f) })
|
25
|
+
} - ttimes
|
26
|
+
|
27
|
+
puts "loading a file #{DO_TIMES} times took #{ttimes.to_f * 1000} milli seconds"
|
28
|
+
|
29
|
+
puts "dumping a file #{DO_TIMES} times took #{ttimes2.to_f * 1000} milliseconds"
|