hitimes 1.1.1-x86-mingw32 → 1.2.2-x86-mingw32

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.
Files changed (53) hide show
  1. data/.travis.yml +10 -0
  2. data/CONTRIBUTING.md +45 -0
  3. data/{HISTORY → HISTORY.md} +42 -18
  4. data/LICENSE +11 -8
  5. data/Manifest.txt +45 -0
  6. data/README.md +163 -0
  7. data/Rakefile +23 -62
  8. data/ext/hitimes/c/extconf.rb +24 -0
  9. data/ext/hitimes/{hitimes_ext.c → c/hitimes.c} +1 -1
  10. data/ext/hitimes/{hitimes_instant_clock_gettime.c → c/hitimes_instant_clock_gettime.c} +0 -0
  11. data/ext/hitimes/c/hitimes_instant_osx.c +45 -0
  12. data/ext/hitimes/{hitimes_instant_windows.c → c/hitimes_instant_windows.c} +0 -0
  13. data/ext/hitimes/{hitimes_interval.c → c/hitimes_interval.c} +15 -7
  14. data/ext/hitimes/{hitimes_interval.h → c/hitimes_interval.h} +5 -5
  15. data/ext/hitimes/{hitimes_stats.c → c/hitimes_stats.c} +0 -0
  16. data/ext/hitimes/{hitimes_stats.h → c/hitimes_stats.h} +0 -0
  17. data/ext/hitimes/java/src/hitimes/Hitimes.java +54 -0
  18. data/ext/hitimes/java/src/hitimes/HitimesInterval.java +181 -0
  19. data/ext/hitimes/java/src/hitimes/HitimesService.java +16 -0
  20. data/ext/hitimes/java/src/hitimes/HitimesStats.java +112 -0
  21. data/lib/hitimes.rb +15 -5
  22. data/lib/hitimes/1.9/hitimes.so +0 -0
  23. data/lib/hitimes/2.0/hitimes.so +0 -0
  24. data/lib/hitimes/2.1/hitimes.so +0 -0
  25. data/lib/hitimes/version.rb +1 -50
  26. data/spec/hitimes_spec.rb +14 -0
  27. data/spec/interval_spec.rb +40 -37
  28. data/spec/metric_spec.rb +8 -10
  29. data/spec/mutex_stats_spec.rb +10 -8
  30. data/spec/paths_spec.rb +3 -5
  31. data/spec/spec_helper.rb +9 -3
  32. data/spec/stats_spec.rb +28 -30
  33. data/spec/timed_metric_spec.rb +42 -42
  34. data/spec/timed_value_metric_spec.rb +54 -55
  35. data/spec/value_metric_spec.rb +26 -28
  36. data/spec/version_spec.rb +4 -30
  37. data/tasks/default.rake +242 -0
  38. data/tasks/extension.rake +31 -101
  39. data/tasks/this.rb +206 -0
  40. metadata +158 -145
  41. data/README +0 -135
  42. data/ext/hitimes/extconf.rb +0 -17
  43. data/ext/hitimes/hitimes_instant_osx.c +0 -16
  44. data/gemspec.rb +0 -64
  45. data/lib/hitimes/1.8/hitimes_ext.so +0 -0
  46. data/lib/hitimes/1.9/hitimes_ext.so +0 -0
  47. data/tasks/announce.rake +0 -42
  48. data/tasks/config.rb +0 -109
  49. data/tasks/distribution.rake +0 -93
  50. data/tasks/documentation.rake +0 -32
  51. data/tasks/rspec.rake +0 -33
  52. data/tasks/rubyforge.rake +0 -55
  53. data/tasks/utils.rb +0 -80
data/README DELETED
@@ -1,135 +0,0 @@
1
- == hitimes
2
-
3
- * Homepage[http://copiousfreetime.rubyforge.org/hitimes]
4
- * {Rubyforge project}[http://rubyforge.org/projects/copiousfreetime/]
5
- * email jeremy at copiousfreetime dot org
6
- * git clone url git://github.com/copiousfreetime/hitimes.git
7
-
8
- == INSTALL
9
-
10
- * gem install hitimes
11
-
12
- == DESCRIPTION
13
-
14
- Hitimes is a fast, high resolution timer library for recording
15
- performance metrics. It uses the appropriate low method calls for each
16
- system to get the highest granularity time increments possible.
17
-
18
- It currently supports any of the following systems:
19
-
20
- * any system with the POSIX call <tt>clock_gettime()</tt>,
21
- * Mac OS X
22
- * Windows
23
- * JRuby
24
-
25
- Using Hitimes can be faster than using a series of +Time.new+ calls, and
26
- it will have a much higher granularity. It is definitely faster than
27
- using +Process.times+.
28
-
29
- == SYNOPSIS
30
-
31
- === Interval
32
-
33
- Use Hitimes::Interval to calculate only the duration of a block of code
34
-
35
- duration = Hitimes::Interval.measure do
36
- # some operation ...
37
- end
38
-
39
- puts duration
40
-
41
- === TimedMetric
42
-
43
- Use a Hitimes::TimedMetric to calculate statistics about an iterative operation
44
-
45
- timed_metric = Hitimes::TimedMetric.new('operation on items')
46
-
47
- Explicitly use +start+ and +stop+:
48
-
49
- collection.each do |item|
50
- timed_metric.start
51
- # .. do something with item
52
- timed_metric.stop
53
- end
54
-
55
- Or use the block. In TimedMetric the return value of +measure+ is the return
56
- value of the block
57
-
58
- collection.each do |item|
59
- result_of_do_something = timed_metric.measure { do_something( item ) }
60
- end
61
-
62
- And then look at the stats
63
-
64
- puts timed_metric.mean
65
- puts timed_metric.max
66
- puts timed_metric.min
67
- puts timed_metric.stddev
68
- puts timed_metric.rate
69
-
70
- === ValueMetric
71
-
72
- Use a Hitimes::ValueMetric to calculate statistics about measured samples
73
-
74
- value_metric = Hitimes::ValueMetric.new( 'size of thing' )
75
- loop do
76
- # ... do stuff changing sizes of 'thing'
77
- value_metric.measure( thing.size )
78
- # ... do other stuff that may change size of thing
79
- end
80
-
81
- puts value_metric.mean
82
- puts value_metric.max
83
- puts value_metric.min
84
- puts value_metric.stddev
85
- puts value_metric.rate
86
-
87
-
88
- === TimedValueMetric
89
-
90
- Use a Hitimes::TimedValueMetric to calculate statistics about batches of samples
91
-
92
- timed_value_metric = Hitimes::TimedValueMetric.new( 'batch times' )
93
- loop do
94
- batch = ... # get a batch of things
95
- timed_value_metric.start
96
- # .. do something with batch
97
- timed_value_metric.stop( batch.size )
98
- end
99
-
100
- puts timed_value_metric.rate
101
-
102
- puts timed_value_metric.timed_stats.mean
103
- puts timed_value_metric.timed_stats.max
104
- puts timed_value_metric.timed_stats.min
105
- puts timed_value_metric.timed_stats.stddev
106
-
107
- puts timed_value_metric.value_stats.mean
108
- puts timed_value_metric.value_stats.max
109
- puts timed_value_metric.value_stats.min
110
- puts timed_value_metric.value_stats.stddev
111
-
112
-
113
- == CHANGES
114
-
115
- Read the HISTORY file.
116
-
117
- == CREDITS
118
-
119
- * Bruce Williams for suggesting the idea
120
-
121
- == ISC License
122
-
123
- Copyright (c) 2008 Jeremy Hinegardner
124
-
125
- Permission to use, copy, modify, and/or distribute this software for any
126
- purpose with or without fee is hereby granted, provided that the above
127
- copyright notice and this permission notice appear in all copies.
128
-
129
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
130
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
131
- FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
132
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
133
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
134
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
135
- PERFORMANCE OF THIS SOFTWARE.
@@ -1,17 +0,0 @@
1
- require 'rbconfig'
2
- require 'mkmf'
3
-
4
- if Config::CONFIG['host_os'] =~ /darwin/ then
5
- $CFLAGS += " -DUSE_INSTANT_OSX=1 -Wall"
6
- $LDFLAGS += " -framework CoreServices"
7
- elsif Config::CONFIG['host_os'] =~ /win32/ or Config::CONFIG['host_os'] =~ /mingw/ then
8
- $CFLAGS += " -DUSE_INSTANT_WINDOWS=1"
9
- else
10
- if have_library("rt", "clock_gettime") then
11
- $CFLAGS += " -DUSE_INSTANT_CLOCK_GETTIME=1"
12
- end
13
- end
14
-
15
- # put in a different location if on windows so we can have fat binaries
16
- subdir = RUBY_VERSION.gsub(/\.\d$/,'')
17
- create_makefile("hitimes/#{subdir}/hitimes_ext")
@@ -1,16 +0,0 @@
1
- #ifdef USE_INSTANT_OSX
2
-
3
- #include "hitimes_interval.h"
4
- #include <CoreServices/CoreServices.h>
5
-
6
- /*
7
- * returns the number of nanoseconds since the machine was booted
8
- */
9
- hitimes_instant_t hitimes_get_current_instant( )
10
- {
11
- Nanoseconds nano = AbsoluteToNanoseconds( UpTime() );
12
-
13
- return *( hitimes_instant_t *)&nano;
14
- }
15
-
16
- #endif
data/gemspec.rb DELETED
@@ -1,64 +0,0 @@
1
- require 'rubygems'
2
- require 'hitimes/version'
3
- require 'tasks/config'
4
-
5
- Hitimes::GEM_SPEC = Gem::Specification.new do |spec|
6
- proj = Configuration.for('project')
7
- spec.name = proj.name
8
- spec.version = Hitimes::VERSION
9
-
10
- spec.author = proj.author
11
- spec.email = proj.email
12
- spec.homepage = proj.homepage
13
- spec.summary = proj.summary
14
- spec.description = proj.description
15
- spec.platform = Gem::Platform::RUBY
16
-
17
-
18
- pkg = Configuration.for('packaging')
19
- spec.files = pkg.files.all
20
- spec.executables = pkg.files.bin.collect { |b| File.basename(b) }
21
-
22
- # add dependencies here
23
- spec.add_development_dependency("rake", "~> 0.8.1")
24
- spec.add_development_dependency("configuration", " ~> 0.0.5")
25
- spec.add_development_dependency( "json", "~> 1.1.3")
26
- spec.add_development_dependency( "rake-compiler", "~> 0.5.0")
27
-
28
- if ext_conf = Configuration.for_if_exist?("extension") then
29
- spec.extensions << ext_conf.configs
30
- spec.require_paths << 'ext'
31
- spec.extensions.flatten!
32
- end
33
-
34
- if rdoc = Configuration.for_if_exist?('rdoc') then
35
- spec.has_rdoc = true
36
- spec.extra_rdoc_files = pkg.files.rdoc
37
- spec.rdoc_options = rdoc.options + [ "--main" , rdoc.main_page ]
38
- else
39
- spec.has_rdoc = false
40
- end
41
-
42
- if test = Configuration.for_if_exist?('testing') then
43
- spec.test_files = test.files
44
- end
45
-
46
- if rf = Configuration.for_if_exist?('rubyforge') then
47
- spec.rubyforge_project = rf.project
48
- end
49
- end
50
-
51
- Hitimes::GEM_SPEC_MSWIN32 = Hitimes::GEM_SPEC.clone
52
- Hitimes::GEM_SPEC_MSWIN32.platform = ::Gem::Platform.new( "i386-mswin32" )
53
- Hitimes::GEM_SPEC_MSWIN32.extensions = []
54
-
55
- Hitimes::GEM_SPEC_MINGW32= Hitimes::GEM_SPEC.clone
56
- Hitimes::GEM_SPEC_MINGW32.platform = ::Gem::Platform.new( "i386-mingw32" )
57
- Hitimes::GEM_SPEC_MINGW32.extensions = []
58
-
59
- Hitimes::GEM_SPEC_JAVA = Hitimes::GEM_SPEC.clone
60
- Hitimes::GEM_SPEC_JAVA.platform = ::Gem::Platform.new( 'java' )
61
- Hitimes::GEM_SPEC_JAVA.extensions = []
62
-
63
- Hitimes::SPECS = [ Hitimes::GEM_SPEC, Hitimes::GEM_SPEC_MSWIN32, Hitimes::GEM_SPEC_MINGW32, Hitimes::GEM_SPEC_JAVA ]
64
-
@@ -1,42 +0,0 @@
1
- require 'tasks/config'
2
- #-------------------------------------------------------------------------------
3
- # announcement methods
4
- #-------------------------------------------------------------------------------
5
-
6
- proj_config = Configuration.for('project')
7
- namespace :announce do
8
- desc "create email for ruby-talk"
9
- task :email do
10
- info = Utils.announcement
11
-
12
- File.open("email.txt", "w") do |mail|
13
- mail.puts "From: #{proj_config.author} <#{proj_config.email}>"
14
- mail.puts "To: ruby-talk@ruby-lang.org"
15
- mail.puts "Date: #{Time.now.rfc2822}"
16
- mail.puts "Subject: [ANN] #{info[:subject]}"
17
- mail.puts
18
- mail.puts info[:title]
19
- mail.puts
20
- mail.puts "{{ Release notes for Version #{Hitimes::VERSION} }}"
21
- mail.puts
22
- mail.puts info[:release_notes]
23
- mail.puts
24
- mail.puts " #{info[:urls]}"
25
- mail.puts
26
- mail.puts "=== Installation"
27
- mail.puts
28
- mail.puts " gem install #{Hitimes::GEM_SPEC.name}"
29
- mail.puts
30
- mail.puts "=== Description"
31
- mail.puts
32
- mail.puts info[:description]
33
- end
34
- puts "Created the following as email.txt:"
35
- puts "-" * 72
36
- puts File.read("email.txt")
37
- puts "-" * 72
38
- end
39
-
40
- CLOBBER << "email.txt"
41
- end
42
-
@@ -1,109 +0,0 @@
1
- require 'configuration'
2
-
3
- require 'rake'
4
- require 'tasks/utils'
5
- require 'yaml'
6
-
7
- #-----------------------------------------------------------------------
8
- # General project configuration
9
- #-----------------------------------------------------------------------
10
- Configuration.for('project') {
11
- name "hitimes"
12
- version Hitimes::Version.to_s
13
- author "Jeremy Hinegardner"
14
- email "jeremy at copiousfreetime dot org"
15
- homepage "http://copiousfreetime.rubyforge.org/hitimes/"
16
- description Utils.section_of("README", "description")
17
- summary description.split(".").first
18
- history "HISTORY"
19
- license FileList["LICENSE"]
20
- readme "README"
21
- }
22
-
23
- #-----------------------------------------------------------------------
24
- # Packaging
25
- #-----------------------------------------------------------------------
26
- Configuration.for('packaging') {
27
- # files in the project
28
- proj_conf = Configuration.for('project')
29
- files {
30
- bin FileList["bin/*"]
31
- ext FileList["ext/hitimes/*.{c,h,rb}"]
32
- examples FileList["examples/*.rb"]
33
- lib FileList["lib/**/*.rb"]
34
- test FileList["spec/**/*.rb", "test/**/*.rb"]
35
- data FileList["data/**/*"]
36
- tasks FileList["tasks/**/*.r{ake,b}"]
37
- rdoc FileList[proj_conf.readme, proj_conf.history,
38
- proj_conf.license] + lib + FileList["ext/*.c"]
39
- all bin + examples + ext + lib + test + data + rdoc + tasks + FileList["Rakefile"]
40
- }
41
-
42
- # ways to package the results
43
- formats {
44
- tgz true
45
- zip true
46
- rubygem Configuration::Table.has_key?('gem')
47
- }
48
- }
49
-
50
- #-----------------------------------------------------------------------
51
- # Gem packaging
52
- #-----------------------------------------------------------------------
53
- Configuration.for("gem") {
54
- spec "gemspec.rb"
55
- Configuration.for('packaging').files.all << spec
56
- }
57
-
58
- #-----------------------------------------------------------------------
59
- # Testing
60
- # - change mode to 'testunit' to use unit testing
61
- #-----------------------------------------------------------------------
62
- Configuration.for('test') {
63
- mode "spec"
64
- files Configuration.for("packaging").files.test
65
- options %w[ --format specdoc --color ]
66
- ruby_opts %w[ ]
67
- }
68
-
69
- #-----------------------------------------------------------------------
70
- # Rcov
71
- #-----------------------------------------------------------------------
72
- Configuration.for('rcov') {
73
- output_dir "coverage"
74
- libs %w[ lib ]
75
- rcov_opts %w[ --html ]
76
- ruby_opts %w[ ]
77
- test_files Configuration.for('packaging').files.test
78
- }
79
-
80
- #-----------------------------------------------------------------------
81
- # Rdoc
82
- #-----------------------------------------------------------------------
83
- Configuration.for('rdoc') {
84
- files Configuration.for('packaging').files.rdoc
85
- main_page files.first
86
- title Configuration.for('project').name
87
- options %w[ --line-numbers ]
88
- output_dir "doc"
89
- }
90
-
91
- #-----------------------------------------------------------------------
92
- # Extension
93
- #-----------------------------------------------------------------------
94
- Configuration.for('extension') {
95
- configs Configuration.for('packaging').files.ext.find_all { |x| %w[ mkrf_conf.rb extconf.rb ].include?(File.basename(x)) }
96
- cross_rbconfig ::YAML::load_file( File.expand_path("~/.rake-compiler/config.yml"))
97
- }
98
-
99
- #-----------------------------------------------------------------------
100
- # Rubyforge
101
- #-----------------------------------------------------------------------
102
- Configuration.for('rubyforge') {
103
- project "copiousfreetime"
104
- user "jjh"
105
- host "rubyforge.org"
106
- rdoc_location "#{user}@#{host}:/var/www/gforge-projects/#{project}/hitimes"
107
- }
108
-
109
-
@@ -1,93 +0,0 @@
1
- require 'tasks/config'
2
-
3
- #-------------------------------------------------------------------------------
4
- # Distribution and Packaging
5
- #-------------------------------------------------------------------------------
6
- if pkg_config = Configuration.for_if_exist?("packaging") then
7
-
8
- require 'gemspec'
9
- require 'rake/gempackagetask'
10
- require 'rake/contrib/sshpublisher'
11
-
12
- namespace :dist do
13
-
14
- Rake::GemPackageTask.new(Hitimes::GEM_SPEC) do |pkg|
15
- pkg.need_tar = pkg_config.formats.tgz
16
- pkg.need_zip = pkg_config.formats.zip
17
- end
18
-
19
- desc "Install as a gem"
20
- task :install => [:clobber, :package] do
21
- sh "sudo gem install pkg/#{Hitimes::GEM_SPEC.full_name}.gem"
22
- end
23
-
24
- desc "Uninstall gem"
25
- task :uninstall do
26
- sh "sudo gem uninstall -x #{Hitimes::GEM_SPEC.name}"
27
- end
28
-
29
- desc "dump gemspec"
30
- task :gemspec do
31
- puts Hitimes::GEM_SPEC.to_ruby
32
- end
33
-
34
- desc "dump gemspec for win"
35
- task :gemspec_win do
36
- puts Hitimes::GEM_SPEC_WIN.to_ruby
37
- end
38
-
39
- desc "dump gemspec for java"
40
- task :gemspec_java do
41
- puts Hitimes::GEM_SPEC_JAVA.to_ruby
42
- end
43
-
44
- desc "reinstall gem"
45
- task :reinstall => [:uninstall, :repackage, :install]
46
-
47
- desc "package up a windows gem"
48
- task :package_win => :clean do
49
- Configuration.for("extension").cross_rbconfig.keys.each do |rbconfig|
50
- v = rbconfig.split("-").last
51
- s = v.sub(/\.\d$/,'')
52
- sh "rake ext:build_win-#{v}"
53
- mkdir_p "lib/hitimes/#{s}", :verbose => true
54
- cp "ext/hitimes/hitimes_ext.so", "lib/hitimes/#{s}/", :verbose => true
55
- end
56
-
57
- Hitimes::SPECS.each do |spec|
58
- next if spec.platform == "ruby"
59
- spec.files += FileList["lib/hitimes/{1.8,1.9}/**.{dll,so}"]
60
- Gem::Builder.new( spec ).build
61
- mkdir "pkg" unless File.directory?( 'pkg' )
62
- mv Dir["*.gem"].first, "pkg"
63
- end
64
- end
65
-
66
- if RUBY_PLATFORM == "java" then
67
- desc "package up a jruby gem"
68
- task :package_java => "ext:build_java" do
69
- Hitimes::GEM_SPEC_JAVA.files += FileList["lib/hitimes/*.jar"]
70
- Hitimes::GEM_SPEC_JAVA.files += FileList["ext/java/src/hitimes/*.java"]
71
- Gem::Builder.new( Hitimes::GEM_SPEC_JAVA ).build
72
- mv Dir["*.gem"].first, "pkg"
73
- end
74
- end
75
-
76
- task :clobber do
77
- rm_rf "lib/hitimes/1.8"
78
- rm_rf "lib/hitimes/1.9"
79
- rm_rf "lib/hitimes/*.jar"
80
- end
81
-
82
- task :prep => [:clean, :package, :package_win, :package_java ]
83
-
84
- desc "distribute copiously"
85
- task :copious => [:clean, :package, :package_win, :package_java ] do
86
- gems = Hitimes::SPECS.collect { |s| "#{s.full_name}.gem" }
87
- Rake::SshFilePublisher.new('jeremy@copiousfreetime.org',
88
- '/var/www/vhosts/www.copiousfreetime.org/htdocs/gems/gems',
89
- 'pkg', *gems).upload
90
- sh "ssh jeremy@copiousfreetime.org rake -f /var/www/vhosts/www.copiousfreetime.org/htdocs/gems/Rakefile"
91
- end
92
- end
93
- end