-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
baseline performance tests for basic functions
- Loading branch information
Showing
4 changed files
with
250 additions
and
0 deletions.
There are no files selected for viewing
50 changes: 50 additions & 0 deletions
50
spec/performance_tests/add_collection_to_collection_spec.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
require 'spec_helper' | ||
|
||
describe 'add collection to collection' do | ||
|
||
describe 'time for each approach' do | ||
it 'should perform consistently across each approach' do | ||
repetitions = 10 | ||
results = [0,0,0] | ||
|
||
1.upto(repetitions) do |i| | ||
parent_collection1 = Hydra::PCDM::Collection.create | ||
parent_collection2 = Hydra::PCDM::Collection.create | ||
parent_collection3 = Hydra::PCDM::Collection.create | ||
child_collection1 = Hydra::PCDM::Collection.create | ||
child_collection2 = Hydra::PCDM::Collection.create | ||
child_collection3 = Hydra::PCDM::Collection.create | ||
|
||
st = Time.now.to_f | ||
parent_collection1.members << child_collection1 | ||
t = Time.now.to_f - st | ||
results[0] += t | ||
|
||
st = Time.now.to_f | ||
parent_collection2.child_collections = [child_collection2] | ||
t = Time.now.to_f - st | ||
results[1] += t | ||
|
||
st = Time.now.to_f | ||
Hydra::PCDM::AddCollectionToCollection.call( parent_collection3, child_collection3 ) | ||
t = Time.now.to_f - st | ||
results[2] += t | ||
end | ||
|
||
format = "%-20s %11.8f %14.8f\n" | ||
printf("\n\n") | ||
|
||
puts | ||
puts( "============================================" ) | ||
puts( " Adding one collection to a collection (#{repetitions} repetitions)" ) | ||
puts( "============================================" ) | ||
puts( " add approach total time (s) per object time (s)") | ||
puts( "-------------------- -------------- -------------------") | ||
|
||
printf( format,"members <<", results[0], results[0]/repetitions ) | ||
printf( format,"collections=",results[1], results[1]/repetitions ) | ||
printf( format,"service call",results[2], results[2]/repetitions ) | ||
|
||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
require 'spec_helper' | ||
|
||
describe 'add object to collection' do | ||
|
||
describe 'time for each approach' do | ||
it 'should perform consistently across each approach' do | ||
repetitions = 10 | ||
results = [0,0,0] | ||
|
||
1.upto(repetitions) do |i| | ||
parent_collection1 = Hydra::PCDM::Collection.create | ||
parent_collection2 = Hydra::PCDM::Collection.create | ||
parent_collection3 = Hydra::PCDM::Collection.create | ||
child_object1 = Hydra::PCDM::Object.create | ||
child_object2 = Hydra::PCDM::Object.create | ||
child_object3 = Hydra::PCDM::Object.create | ||
|
||
st = Time.now.to_f | ||
parent_collection1.members << child_object1 | ||
t = Time.now.to_f - st | ||
results[0] += t | ||
|
||
st = Time.now.to_f | ||
parent_collection2.objects = [child_object2] | ||
t = Time.now.to_f - st | ||
results[1] += t | ||
|
||
st = Time.now.to_f | ||
Hydra::PCDM::AddObjectToCollection.call( parent_collection3, child_object3 ) | ||
t = Time.now.to_f - st | ||
results[2] += t | ||
end | ||
|
||
format = "%-20s %11.8f %14.8f\n" | ||
printf("\n\n") | ||
|
||
puts | ||
puts( "============================================" ) | ||
puts( " Adding one object to a collection (#{repetitions} repetitions)" ) | ||
puts( "============================================" ) | ||
puts( " add approach total time (s) per object time (s)") | ||
puts( "-------------------- -------------- -------------------") | ||
|
||
printf( format,"members <<", results[0], results[0]/repetitions ) | ||
printf( format,"objects=", results[1], results[1]/repetitions ) | ||
printf( format,"service call",results[2], results[2]/repetitions ) | ||
|
||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
require 'spec_helper' | ||
|
||
describe 'create a collection' do | ||
|
||
describe 'time for each approach' do | ||
it 'should perform consistently across each approach' do | ||
repetitions = 10 | ||
results = [0,0] | ||
|
||
1.upto(repetitions) do |i| | ||
|
||
st = Time.now.to_f | ||
collection1 = Hydra::PCDM::Collection.new | ||
t = Time.now.to_f - st | ||
results[0] += t | ||
|
||
st = Time.now.to_f | ||
collection2 = Hydra::PCDM::Collection.create | ||
t = Time.now.to_f - st | ||
results[1] += t | ||
end | ||
|
||
format = "%-20s %11.8f %14.8f\n" | ||
printf("\n\n") | ||
|
||
puts | ||
puts( "============================================" ) | ||
puts( " Create 1 collection (#{repetitions} repetitions)" ) | ||
puts( "============================================" ) | ||
puts( " create approach total time (s) per object time (s)") | ||
puts( "-------------------- -------------- -------------------") | ||
|
||
printf( format,"new", results[0], results[0]/repetitions ) | ||
printf( format,"create",results[1], results[1]/repetitions ) | ||
|
||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
require 'spec_helper' | ||
|
||
describe 'repeat_get_related_objects' do | ||
|
||
context 'with large number of related objects files' do | ||
# let(:test_counts) { { 10 => Hydra::PCDM::Collection.create } } | ||
let(:test_counts) { { 10 => Hydra::PCDM::Collection.create, | ||
50 => Hydra::PCDM::Collection.create, | ||
100 => Hydra::PCDM::Collection.create | ||
# 1000 => Hydra::PCDM::GenericWork.create | ||
} } | ||
before do | ||
puts( "============================================" ) | ||
puts( " Creating and appending related objects" ) | ||
puts( "============================================" ) | ||
puts( "r_obj count time (s) time/r_obj") | ||
puts( "----------- -------- ----------") | ||
format = "%8d %8.3f %7.3f\n" | ||
|
||
test_counts.each_pair do |related_object_count,collection| | ||
st = Time.now.to_f | ||
related_object_count.times do | ||
Hydra::PCDM::AddRelatedObjectToCollection.call( collection, Hydra::PCDM::Object.create ) | ||
end | ||
t = Time.now.to_f - st | ||
printf( format,10,t,t/related_object_count ) | ||
end | ||
end | ||
|
||
describe 'time for each get approach for various counts of related objects in a collection' do | ||
xit 'should perform consistently across each approach' do | ||
format = "%-20s %11.8f %14.12f\n" | ||
printf("\n\n") | ||
|
||
test_counts.each_pair do |related_object_count,collection| | ||
puts | ||
puts( "============================================" ) | ||
puts( " Getting #{related_object_count} related objects 1 time" ) | ||
puts( "============================================" ) | ||
puts( " get approach time (s) time/r_obj (s)") | ||
puts( "-------------------- ----------- --------------") | ||
|
||
st = Time.now.to_f | ||
collection.related_objects | ||
t = Time.now.to_f - st | ||
printf( format,".related_objects",t,t/related_object_count ) | ||
|
||
st = Time.now.to_f | ||
collection.related_objects.to_a | ||
t = Time.now.to_f - st | ||
printf( format,".related_object.to_a",t,t/related_object_count ) | ||
|
||
st = Time.now.to_f | ||
Hydra::PCDM::GetRelatedObjectsFromCollection.call( collection ) | ||
t = Time.now.to_f - st | ||
printf( format,"service call",t,t/related_object_count ) | ||
end | ||
end | ||
end | ||
end | ||
|
||
context 'with large number of gets' do | ||
describe 'time for repeatedly getting related objects from the same collection' do | ||
let(:related_object_count) { 10 } | ||
let(:collection) { Hydra::PCDM::Collection.create } | ||
# let(:repeat_counts) { [10,50,100,1000] } | ||
let(:repeat_counts) { [10,50,100] } | ||
# let(:repeat_counts) { [10] } | ||
|
||
before do | ||
related_object_count.times do | ||
Hydra::PCDM::AddRelatedObjectToCollection.call( collection, Hydra::PCDM::Object.create ) | ||
end | ||
end | ||
|
||
xit 'should perform consistently across each get approach' do | ||
format = "%-20s %11.8f %14.12f\n" | ||
printf("\n\n") | ||
|
||
repeat_counts.each do |repeat_count| | ||
puts | ||
puts( "============================================" ) | ||
puts( " Getting #{related_object_count} related_objects #{repeat_count} times" ) | ||
puts( "============================================" ) | ||
puts( " get approach time (s) time/get (s)") | ||
puts( "-------------------- ----------- ------------") | ||
|
||
st = Time.now.to_f | ||
repeat_count.times do | ||
collection.related_objects | ||
end | ||
t = Time.now.to_f - st | ||
printf( format,".related_objects",t,t/repeat_count ) | ||
|
||
st = Time.now.to_f | ||
repeat_count.times do | ||
collection.related_objects.to_a | ||
end | ||
t = Time.now.to_f - st | ||
printf( format,".related_object.to_a",t,t/repeat_count ) | ||
|
||
st = Time.now.to_f | ||
repeat_count.times do | ||
Hydra::PCDM::GetRelatedObjectsFromCollection.call( collection ) | ||
end | ||
t = Time.now.to_f - st | ||
printf( format,"service call",t,t/repeat_count ) | ||
end | ||
end | ||
end | ||
end | ||
end |