hitimes 1.2.6 → 1.3.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.
- checksums.yaml +4 -4
- data/HISTORY.md +6 -0
- data/README.md +3 -0
- data/ext/hitimes/c/hitimes.c +17 -1
- data/ext/hitimes/java/src/hitimes/Hitimes.java +16 -4
- data/ext/hitimes/java/src/hitimes/HitimesInterval.java +4 -9
- data/ext/hitimes/java/src/hitimes/HitimesService.java +1 -1
- data/lib/hitimes/version.rb +1 -1
- data/spec/hitimes_spec.rb +10 -0
- data/tasks/default.rake +3 -3
- data/tasks/extension.rake +3 -3
- data/tasks/this.rb +3 -1
- metadata +8 -7
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 7f524a821dc9c99b61be2c3af977e825f9ca7ed2
         | 
| 4 | 
            +
              data.tar.gz: ff3e5a216ba2b504f49dd13d612b843c48855bd3
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: bcf7ba65f863b4ed3376a42ab9adac359ccd751a8b9f97ac3c606792cef80ece1325590e5eda9580da15f84e7817af4c4a8b80e444f7a8e85725e2e93a77f67f
         | 
| 7 | 
            +
              data.tar.gz: 1d25a2c4afedaaa53aed97ad47197121227aab88dbba57faa6ffc32566454617b2821f42289ca63c3dda0dc6c131c81e400aa1e6746f01dfc7b2fef75567b8ce
         | 
    
        data/HISTORY.md
    CHANGED
    
    | @@ -1,4 +1,10 @@ | |
| 1 1 | 
             
            # Hitimes Changelog
         | 
| 2 | 
            +
            ## Version 1.3.0 2018-06-15
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            * Add api method `Hitimes.raw_instant` to expose raw OS instant value
         | 
| 5 | 
            +
            * Add api constant `Hitimes::INSTANT_CONVERSION_FACTOR` to expose raw OS instant conversion factor
         | 
| 6 | 
            +
            * other development cleanup tasks
         | 
| 7 | 
            +
             | 
| 2 8 | 
             
            ## Version 1.2.6 2017-08-04
         | 
| 3 9 |  | 
| 4 10 | 
             
            * Resolve version number issue (#61) (thanks @anthraxx)
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,5 +1,7 @@ | |
| 1 1 | 
             
            # Hitimes
         | 
| 2 2 |  | 
| 3 | 
            +
            [](https://travis-ci.org/copiousfreetime/hitimes)
         | 
| 4 | 
            +
             | 
| 3 5 | 
             
            A fast, high resolution timer library for recording peformance metrics.
         | 
| 4 6 |  | 
| 5 7 | 
             
            * [Homepage](http://github.com/copiousfreetime/hitimes)
         | 
| @@ -15,6 +17,7 @@ A fast, high resolution timer library for recording peformance metrics. | |
| 15 17 | 
             
            * [Support](#support)
         | 
| 16 18 | 
             
            * [License](#license)
         | 
| 17 19 |  | 
| 20 | 
            +
             | 
| 18 21 | 
             
            ## Requirements
         | 
| 19 22 |  | 
| 20 23 | 
             
            Hitimes requires the following to run:
         | 
    
        data/ext/hitimes/c/hitimes.c
    CHANGED
    
    | @@ -5,6 +5,20 @@ | |
| 5 5 | 
             
            VALUE mH;           /* module Hitimes            */
         | 
| 6 6 | 
             
            VALUE eH_Error;     /* class  Hitimes::Error     */
         | 
| 7 7 |  | 
| 8 | 
            +
             | 
| 9 | 
            +
            /**
         | 
| 10 | 
            +
             * call-seq:
         | 
| 11 | 
            +
             *    Hitimes.raw_instant -> Integer
         | 
| 12 | 
            +
             *
         | 
| 13 | 
            +
             * Return the raw instant value from the operating system
         | 
| 14 | 
            +
             */
         | 
| 15 | 
            +
            VALUE hitimes_instant_raw( )
         | 
| 16 | 
            +
            {
         | 
| 17 | 
            +
                unsigned long long i = (unsigned long long)hitimes_get_current_instant( );
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                return ULL2NUM(i);
         | 
| 20 | 
            +
            }
         | 
| 21 | 
            +
             | 
| 8 22 | 
             
            /*
         | 
| 9 23 | 
             
             * Document-class: Hitimes::Error
         | 
| 10 24 | 
             
             *
         | 
| @@ -13,8 +27,10 @@ VALUE eH_Error;     /* class  Hitimes::Error     */ | |
| 13 27 | 
             
            void Init_hitimes( )
         | 
| 14 28 | 
             
            {
         | 
| 15 29 | 
             
                mH = rb_define_module("Hitimes");
         | 
| 16 | 
            -
             | 
| 30 | 
            +
             | 
| 17 31 | 
             
                eH_Error = rb_define_class_under(mH, "Error", rb_eStandardError);
         | 
| 32 | 
            +
                rb_define_const( mH, "INSTANT_CONVERSION_FACTOR", DBL2NUM( HITIMES_INSTANT_CONVERSION_FACTOR ));
         | 
| 33 | 
            +
                rb_define_module_function( mH, "raw_instant", hitimes_instant_raw, 0 );
         | 
| 18 34 |  | 
| 19 35 | 
             
                Init_hitimes_interval();
         | 
| 20 36 | 
             
                Init_hitimes_stats( );
         | 
| @@ -4,7 +4,10 @@ import java.lang.Math; | |
| 4 4 | 
             
            import java.lang.System;
         | 
| 5 5 |  | 
| 6 6 | 
             
            import org.jruby.anno.JRubyClass;
         | 
| 7 | 
            +
            import org.jruby.anno.JRubyMethod;
         | 
| 7 8 | 
             
            import org.jruby.anno.JRubyModule;
         | 
| 9 | 
            +
            import org.jruby.anno.JRubyConstant;
         | 
| 10 | 
            +
            import org.jruby.runtime.Visibility;
         | 
| 8 11 |  | 
| 9 12 | 
             
            import org.jruby.Ruby;
         | 
| 10 13 | 
             
            import org.jruby.RubyClass;
         | 
| @@ -14,6 +17,8 @@ import org.jruby.RubyObject; | |
| 14 17 |  | 
| 15 18 | 
             
            import org.jruby.exceptions.RaiseException;
         | 
| 16 19 |  | 
| 20 | 
            +
            import org.jruby.runtime.builtin.IRubyObject;
         | 
| 21 | 
            +
             | 
| 17 22 |  | 
| 18 23 | 
             
            /**
         | 
| 19 24 | 
             
             * @author <a href="mailto:jeremy@hinegardner.org">Jeremy Hinegardner</a>
         | 
| @@ -21,12 +26,18 @@ import org.jruby.exceptions.RaiseException; | |
| 21 26 | 
             
            @JRubyModule( name = "Hitimes" )
         | 
| 22 27 | 
             
            public class Hitimes {
         | 
| 23 28 |  | 
| 29 | 
            +
                public static final double INSTANT_CONVERSION_FACTOR = 1000000000d;
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                private static final Ruby __ruby__ = Ruby.getGlobalRuntime();
         | 
| 32 | 
            +
             | 
| 24 33 | 
             
                public static RubyClass hitimesIntervalClass;
         | 
| 25 34 | 
             
                /**
         | 
| 26 35 | 
             
                 * Create the Hitimes module and add it to the Ruby runtime.
         | 
| 27 36 | 
             
                 */
         | 
| 28 | 
            -
                public static RubyModule  | 
| 37 | 
            +
                public static RubyModule createHitimesModule( Ruby runtime ) {
         | 
| 29 38 | 
             
                    RubyModule mHitimes = runtime.defineModule("Hitimes");
         | 
| 39 | 
            +
                    mHitimes.defineConstant("INSTANT_CONVERSION_FACTOR", __ruby__.newFloat(INSTANT_CONVERSION_FACTOR));
         | 
| 40 | 
            +
                    mHitimes.defineAnnotatedMethods( Hitimes.class );
         | 
| 30 41 |  | 
| 31 42 | 
             
                    RubyClass  cStandardError = runtime.getStandardError();
         | 
| 32 43 | 
             
                    RubyClass  cHitimesError  = mHitimes.defineClassUnder("Error", cStandardError, cStandardError.getAllocator());
         | 
| @@ -47,8 +58,9 @@ public class Hitimes { | |
| 47 58 | 
             
                }
         | 
| 48 59 |  | 
| 49 60 |  | 
| 50 | 
            -
             | 
| 51 | 
            -
                 | 
| 52 | 
            -
             | 
| 61 | 
            +
                @JRubyMethod( name = "raw_instant", module = true )
         | 
| 62 | 
            +
                public static IRubyObject rawInstant(IRubyObject self) {
         | 
| 63 | 
            +
                  return __ruby__.newFixnum( System.nanoTime() );
         | 
| 64 | 
            +
                }
         | 
| 53 65 |  | 
| 54 66 | 
             
            }
         | 
| @@ -16,11 +16,6 @@ import org.jruby.anno.JRubyMethod; | |
| 16 16 | 
             
            @JRubyClass( name = "Hitimes::Interval" )
         | 
| 17 17 | 
             
            public class HitimesInterval extends RubyObject {
         | 
| 18 18 |  | 
| 19 | 
            -
                /* this is a double to force all division by the conversion factor
         | 
| 20 | 
            -
                 * to cast to doubles
         | 
| 21 | 
            -
                 */
         | 
| 22 | 
            -
                private static final double INSTANT_CONVERSION_FACTOR = 1000000000d;
         | 
| 23 | 
            -
             | 
| 24 19 | 
             
                private static final long   INSTANT_NOT_SET  = Long.MIN_VALUE;
         | 
| 25 20 | 
             
                private static final double DURATION_NOT_SET = Double.NaN;
         | 
| 26 21 |  | 
| @@ -58,7 +53,7 @@ public class HitimesInterval extends RubyObject { | |
| 58 53 | 
             
                     * if stop has not yet been called, then return the amount of time so far
         | 
| 59 54 | 
             
                     */
         | 
| 60 55 | 
             
                    if ( INSTANT_NOT_SET == this.stop_instant ) {
         | 
| 61 | 
            -
                        double d = ( System.nanoTime() - this.start_instant ) / INSTANT_CONVERSION_FACTOR;
         | 
| 56 | 
            +
                        double d = ( System.nanoTime() - this.start_instant ) / Hitimes.INSTANT_CONVERSION_FACTOR;
         | 
| 62 57 | 
             
                        return getRuntime().newFloat( d );
         | 
| 63 58 | 
             
                    }
         | 
| 64 59 |  | 
| @@ -66,7 +61,7 @@ public class HitimesInterval extends RubyObject { | |
| 66 61 | 
             
                     * if stop has been called, then calculate the duration and return
         | 
| 67 62 | 
             
                     */
         | 
| 68 63 | 
             
                    if ( DURATION_NOT_SET == this.duration ) {
         | 
| 69 | 
            -
                        this.duration = (this.stop_instant - this.start_instant) / INSTANT_CONVERSION_FACTOR;
         | 
| 64 | 
            +
                        this.duration = (this.stop_instant - this.start_instant) / Hitimes.INSTANT_CONVERSION_FACTOR;
         | 
| 70 65 | 
             
                    }
         | 
| 71 66 |  | 
| 72 67 | 
             
                    return getRuntime().newFloat( this.duration );
         | 
| @@ -82,7 +77,7 @@ public class HitimesInterval extends RubyObject { | |
| 82 77 | 
             
                    }
         | 
| 83 78 |  | 
| 84 79 | 
             
                    if ( INSTANT_NOT_SET == this.stop_instant ) {
         | 
| 85 | 
            -
                        double d = ( System.nanoTime() - this.start_instant ) / INSTANT_CONVERSION_FACTOR;
         | 
| 80 | 
            +
                        double d = ( System.nanoTime() - this.start_instant ) / Hitimes.INSTANT_CONVERSION_FACTOR;
         | 
| 86 81 | 
             
                        return getRuntime().newFloat( d );
         | 
| 87 82 | 
             
                    }
         | 
| 88 83 |  | 
| @@ -140,7 +135,7 @@ public class HitimesInterval extends RubyObject { | |
| 140 135 |  | 
| 141 136 | 
             
                    if ( INSTANT_NOT_SET == this.stop_instant ) {
         | 
| 142 137 | 
             
                        this.stop_instant = System.nanoTime();
         | 
| 143 | 
            -
                        this.duration = (this.stop_instant - this.start_instant) / INSTANT_CONVERSION_FACTOR;
         | 
| 138 | 
            +
                        this.duration = (this.stop_instant - this.start_instant) / Hitimes.INSTANT_CONVERSION_FACTOR;
         | 
| 144 139 | 
             
                        return getRuntime().newFloat( this.duration );
         | 
| 145 140 | 
             
                    }
         | 
| 146 141 |  | 
| @@ -8,7 +8,7 @@ import org.jruby.runtime.load.BasicLibraryService; | |
| 8 8 |  | 
| 9 9 | 
             
            public class HitimesService implements BasicLibraryService {
         | 
| 10 10 | 
             
                public boolean basicLoad( final Ruby runtime ) throws IOException {
         | 
| 11 | 
            -
                    Hitimes. | 
| 11 | 
            +
                    Hitimes.createHitimesModule( runtime );
         | 
| 12 12 | 
             
                    return true;
         | 
| 13 13 | 
             
                }
         | 
| 14 14 | 
             
            }
         | 
    
        data/lib/hitimes/version.rb
    CHANGED
    
    
    
        data/spec/hitimes_spec.rb
    CHANGED
    
    | @@ -11,4 +11,14 @@ describe Hitimes do | |
| 11 11 | 
             
              it "raises an error if measure is called with no block" do
         | 
| 12 12 | 
             
                lambda{ Hitimes.measure }.must_raise( Hitimes::Error )
         | 
| 13 13 | 
             
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              it "has the raw instant value" do
         | 
| 16 | 
            +
                v = Hitimes.raw_instant
         | 
| 17 | 
            +
                v.must_be :>, 0
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              it "has access to the instant conversion factor" do
         | 
| 21 | 
            +
                f = Hitimes::INSTANT_CONVERSION_FACTOR
         | 
| 22 | 
            +
                f.must_be :>, 0
         | 
| 23 | 
            +
              end
         | 
| 14 24 | 
             
            end
         | 
    
        data/tasks/default.rake
    CHANGED
    
    | @@ -24,7 +24,7 @@ namespace :develop do | |
| 24 24 | 
             
                File.open( "Gemfile", "w+" ) do |f|
         | 
| 25 25 | 
             
                  f.puts "# DO NOT EDIT - This file is automatically generated"
         | 
| 26 26 | 
             
                  f.puts "# Make changes to Manifest.txt and/or Rakefile and regenerate"
         | 
| 27 | 
            -
                  f.puts 'source "https://rubygems.org | 
| 27 | 
            +
                  f.puts 'source "https://rubygems.org"'
         | 
| 28 28 | 
             
                  f.puts 'gemspec'
         | 
| 29 29 | 
             
                end
         | 
| 30 30 | 
             
              end
         | 
| @@ -38,7 +38,7 @@ task :develop => "develop:default" | |
| 38 38 | 
             
            begin
         | 
| 39 39 | 
             
              require 'rake/testtask'
         | 
| 40 40 | 
             
              Rake::TestTask.new( :test ) do |t|
         | 
| 41 | 
            -
                t.ruby_opts    = %w[ -w  | 
| 41 | 
            +
                t.ruby_opts    = %w[ -w ]
         | 
| 42 42 | 
             
                t.libs         = %w[ lib spec test ]
         | 
| 43 43 | 
             
                t.pattern      = "{test,spec}/**/{test_*,*_spec}.rb"
         | 
| 44 44 | 
             
              end
         | 
| @@ -80,7 +80,7 @@ begin | |
| 80 80 | 
             
                ENV['COVERAGE'] = 'true'
         | 
| 81 81 | 
             
                Rake::Task[:test].execute
         | 
| 82 82 | 
             
              end
         | 
| 83 | 
            -
              CLOBBER << 'coverage' if File.directory?('coverage')
         | 
| 83 | 
            +
              CLOBBER << 'coverage' if File.directory?( 'coverage' )
         | 
| 84 84 | 
             
            rescue LoadError
         | 
| 85 85 | 
             
              This.task_warning( 'simplecov' )
         | 
| 86 86 | 
             
            end
         | 
    
        data/tasks/extension.rake
    CHANGED
    
    | @@ -23,9 +23,9 @@ begin | |
| 23 23 | 
             
                  ext.lib_dir   = File.join( 'lib', This.name )
         | 
| 24 24 | 
             
                  ext.gem_spec  = This.ruby_gemspec
         | 
| 25 25 |  | 
| 26 | 
            -
                  ext.cross_compile  = true | 
| 27 | 
            -
                  ext.cross_platform =  | 
| 28 | 
            -
             | 
| 26 | 
            +
                  ext.cross_compile  = true                         # enable cross compilation (requires cross compile toolchain)
         | 
| 27 | 
            +
                  ext.cross_platform = %w[x86-mingw32 x64-mingw32]  # forces the Windows platform instead of the default one
         | 
| 28 | 
            +
                                                                    # configure options only for cross compile
         | 
| 29 29 | 
             
                end
         | 
| 30 30 | 
             
              end
         | 
| 31 31 |  | 
    
        data/tasks/this.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: hitimes
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.3.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jeremy Hinegardner
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2018-06-15 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rake
         | 
| @@ -108,9 +108,10 @@ dependencies: | |
| 108 108 | 
             
                - - "~>"
         | 
| 109 109 | 
             
                  - !ruby/object:Gem::Version
         | 
| 110 110 | 
             
                    version: '0.14'
         | 
| 111 | 
            -
            description:  | 
| 112 | 
            -
               | 
| 113 | 
            -
              *  | 
| 111 | 
            +
            description: "(https://travis-ci.org/copiousfreetime/hitimes.svg?branch=master)](https://travis-ci.org/copiousfreetime/hitimes)
         | 
| 112 | 
            +
              A fast, high resolution timer library for recording peformance metrics. * (http://github.com/copiousfreetime/hitimes)
         | 
| 113 | 
            +
              * (http://github.com.org/copiousfreetime/hitimes) * email jeremy at copiousfreetime
         | 
| 114 | 
            +
              dot org * `git clone url git://github.com/copiousfreetime/hitimes.git`"
         | 
| 114 115 | 
             
            email: jeremy@copiousfreetime.org
         | 
| 115 116 | 
             
            executables: []
         | 
| 116 117 | 
             
            extensions:
         | 
| @@ -189,10 +190,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 189 190 | 
             
                  version: '0'
         | 
| 190 191 | 
             
            requirements: []
         | 
| 191 192 | 
             
            rubyforge_project: 
         | 
| 192 | 
            -
            rubygems_version: 2.6. | 
| 193 | 
            +
            rubygems_version: 2.6.12
         | 
| 193 194 | 
             
            signing_key: 
         | 
| 194 195 | 
             
            specification_version: 4
         | 
| 195 | 
            -
            summary:  | 
| 196 | 
            +
            summary: "[](https://travis-ci.org/copiousfreetime/hitimes)"
         | 
| 196 197 | 
             
            test_files:
         | 
| 197 198 | 
             
            - spec/hitimes_spec.rb
         | 
| 198 199 | 
             
            - spec/interval_spec.rb
         |