README.md in hexdump-0.3.0 vs README.md in hexdump-1.0.0

- old
+ new

@@ -3,163 +3,514 @@ [![CI](https://github.com/postmodern/hexdump.rb/actions/workflows/ruby.yml/badge.svg)](https://github.com/postmodern/hexdump.rb/actions/workflows/ruby.yml) * [Source](https://github.com/postmodern/hexdump.rb) * [Issues](https://github.com/postmodern/hexdump.rb/issues) * [Documentation](http://rubydoc.info/gems/hexdump/frames) -* [Email](mailto:postmodern.mod3 at gmail.com) ## Description Simple and Fast hexdumping for Ruby. ## Features +* Supports printing ASCII, hexadecimal, decimal, octal and binary bytes. +* Supports hexdumping bytes, characters, signed/unsigned integers, + floating-point numbers, and in little/big/network endian byte orders: + * `char` - signed 8bit ASCII character + * `uchar` - unsigned 8bit ASCII character + * `int8` - signed 8bit integer + * `uin8` / `byte` - unsigned 8bit integer (default) + * `int16` / `short` - signed 16bit integer + * `int16_le` / `short_le` - signed 16bit integer (little endian) + * `int16_be` / `short_be` - signed 16bit integer (big endian) + * `int16_ne` / `short_ne` - signed 16bit integer (network endian) + * `uint16` / `ushort` - unsigned 16bit integer + * `uint16_le` / `ushort_le` - unsigned 16bit integer (little endian) + * `uint16_be` / `ushort_be` - unsigned 16bit integer (big endian) + * `uint16_ne` / `ushort_ne` - unsigned 16bit integer (network endian) + * `int32` / `int` / `long` - signed 32bit integer + * `int32_le` / `int_le` / `long_le` - signed 32bit integer (little endian) + * `int32_be` / `int_be` / `long_be` - signed 32bit integer (big endian) + * `int32_ne` / `int_ne` / `long_ne` - signed 32bit integer (network endian) + * `uint32` / `uint` / `ulong` - unsigned 32bit integer + * `uint32_le` / `uint_le` / `ulong_le` - unsigned 32bit integer + (little endian) + * `uint32_be` / `uint_be` / `ulong_be` - unsigned 32bit integer (big endian) + * `uint32_ne` / `uint_ne` / `ulong_ne` - unsigned 32bit integer + (network endian) + * `int64` / `long_long` - signed 64bit integer + * `int64_le` / `long_long_le` - signed 64bit integer (little endian) + * `int64_be` / `long_long_be` - signed 64bit integer (big endian) + * `int64_ne` / `long_long_ne` - signed 64bit integer (network endian) + * `uint64` / `ulong_long` - unsigned 64bit integer + * `uint64_le` / `ulong_long_le` - unsigned 64bit integer (little endian) + * `uint64_be` / `ulong_long_be` - unsigned 64bit integer (big endian) + * `uint64_ne` / `ulong_long_ne` - unsigned 64bit integer (network endian) + * `float` - single precision 32bit floating-point number + * `float_le` - single precision 32bit floating-point number (little endian) + * `float_be` - single precision 32bit floating-point number (big endian) + * `float_ne` - single precision 32bit floating-point number (network endian) + * `double` - double precision 64bit floating-point number + * `double_le` - double precision 64bit floating-point number (little endian) + * `double_be` - double precision 64bit floating-point number (big endian) + * `double_ne` - double precision 64bit floating-point number (network endian) +* Supports optionally skipping N bytes or reading at most N bytes of data. +* Supports optional zero-padding of the data. +* Supports omitting repeating rows with a `*`. +* Supports grouping columns together like GNU `hexdump -C`. +* Supports grouping characters together to align with the type's size. +* Supports displaying characters inline like GNU `hexdump -c`. +* Supports displaying UTF-8 characters or other character encodings. +* Supports ANSI styling and highlighting. * Can hexdump any Object supporting the `each_byte` method. * Can send the hexdump output to any Object supporting the `<<` method. -* Can yield each line of hexdump, instead of printing the output. -* Supports printing ASCII, hexadecimal, decimal, octal and binary bytes. -* Supports hexdumping bytes (8bit), words (16bit), double-words (32bit), and - quad-words (64bit). -* Supports Little Endian and Big Endian modes. * Makes {String}, {StringIO}, {IO}, {File} objects hexdumpable. * Fast-ish. +## Install + +```shell +$ gem install hexdump +``` + +### gemspec + +```ruby +gem.add_dependency 'hexdump', '~> 1.0' +``` + +### Gemfile + +```ruby +gem 'hexdump', '~> 1.0' +``` + ## Examples - require 'hexdump' +```ruby +require 'hexdump' - data = "hello\x00" +Hexdump.hexdump("hello\0") +# 00000000 68 65 6c 6c 6f 00 |hello.| +# 00000006 +``` - Hexdump.dump(data) - # 00000000 68 65 6c 6c 6f 00 |hello.| - # 00000006 - - data.hexdump - # 00000000 68 65 6c 6c 6f 00 |hello.| - # 00000006 +### Core Extensions - File.open('dump.txt','w') do |file| - data.hexdump(:output => file) - end +```ruby +"hello\0".hexdump +# 00000000 68 65 6c 6c 6f 00 |hello.| +# 00000006 +``` - # iterate over the hexdump lines - data.hexdump do |index,hex,printable| - index # => 0 - hex # => ["68", "65", "6c", "6c", "6f", "00"] - printable # => ["h", "e", "l", "l", "o", "."] - end - # => 6 +```ruby +File.hexdump("/bin/ls") +# ... +``` - # configure the width of the hexdump - Hexdump.dump('A' * 30, width: 10) - # 00000000 41 41 41 41 41 41 41 41 41 41 |AAAAAAAAAA| - # 0000000a 41 41 41 41 41 41 41 41 41 41 |AAAAAAAAAA| - # 00000014 41 41 41 41 41 41 41 41 41 41 |AAAAAAAAAA| - # 0000001e +### Output (file) - Hexdump.dump(data, ascii: true) - # 00000000 h e l l o 00 |hello.| - # 00000006 +```ruby +File.open('dump.txt','w') do |file| + data.hexdump(output: file) +end +``` - Hexdump.dump(data, base: 16) - # 00000000 68 65 6c 6c 6f 00 |hello.| - # 00000006 +### UTF-8 - Hexdump.dump(data, base: :decimal) - # 00000000 104 101 108 108 111 0 |hello.| - # 00000006 +```ruby +Hexdump.hexdump("\u8000" * 8, encoding: :utf8) +# 00000000 e8 80 80 e8 80 80 e8 80 80 e8 80 80 e8 80 80 e8 |耀耀耀耀耀.| +# 00000010 80 80 e8 80 80 e8 80 80 |..耀耀| +# 00000018 +``` - Hexdump.dump(data, base: :octal) - # 00000000 0150 0145 0154 0154 0157 0000 |hello.| - # 00000006 +### Columns - Hexdump.dump(data, base: :binary) - # 00000000 01101000 01100101 01101100 01101100 01101111 00000000 |hello.| - # 00000006 +```ruby +Hexdump.hexdump('A' * 30, columns: 10) +# 00000000 41 41 41 41 41 41 41 41 41 41 |AAAAAAAAAA| +# * +# 0000001e +``` - ("ABC" * 10).hexdump(word_size: 2) - # 00000000 4241 4143 4342 4241 4143 4342 4241 4143 |䉁䅃䍂䉁䅃䍂䉁䅃| - # 00000010 4342 4241 4143 4342 4241 4143 4342 |䍂䉁䅃䍂䉁䅃䍂| - # 0000001e +### Repeating Columns -## Install +```ruby +Hexdump.hexdump('A' * 30, columns: 10, repeating: true) +# 00000000 41 41 41 41 41 41 41 41 41 41 |AAAAAAAAAA| +# 0000000a 41 41 41 41 41 41 41 41 41 41 |AAAAAAAAAA| +# 00000014 41 41 41 41 41 41 41 41 41 41 |AAAAAAAAAA| +# 0000001e +``` - $ gem install hexdump +### Grouping Columns +```ruby +Hexdump.hexdump("ABCD" * 8, columns: 16, group_columns: 4, repeating: true) +# 00000000 41 42 43 44 41 42 43 44 41 42 43 44 41 42 43 44 |ABCDABCDABCDABCD| +# 00000010 41 42 43 44 41 42 43 44 41 42 43 44 41 42 43 44 |ABCDABCDABCDABCD| +# 00000020 +``` + +### Grouping Chars + +```ruby +Hexdump.hexdump("ABCD" * 8, group_chars: 4) +# 00000000 41 42 43 44 41 42 43 44 41 42 43 44 41 42 43 44 |ABCD|ABCD|ABCD|ABCD| +# * +# 00000020 +``` + +### Grouping UTF-8 Chars + +```ruby +Hexdump.hexdump("\u8000" * 8, group_chars: 4, encoding: :utf8) +# 00000000 e8 80 80 e8 80 80 e8 80 80 e8 80 80 e8 80 80 e8 |耀.|...|.耀|耀.| +# 00000010 80 80 e8 80 80 e8 80 80 |...|.耀| +# 00000018 +``` + +### Disable Chars + +```ruby +Hexdump.hexdump('A' * 30, chars_column: false) +00000000 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 +00000010 41 41 41 41 41 41 41 41 41 41 41 41 41 41 +0000001e +``` + +### Hexadecimal + +```ruby +Hexdump.hexdump("hello\0", base: 16) +# 00000000 68 65 6c 6c 6f 00 |hello.| +# 00000006 +``` + +### Decimal + +```ruby +Hexdump.hexdump("hello\0", base: 10) +# 00000000 104 101 108 108 111 0 |hello.| +# 00000006 +``` + +### Octal + +```ruby +Hexdump.hexdump("hello\0", base: 8) +# 00000000 0150 0145 0154 0154 0157 0000 |hello.| +# 00000006 +``` + +### Binary + +```ruby +Hexdump.hexdump("hello\0", base: 2) +# 00000000 01101000 01100101 01101100 01101100 01101111 00000000 |hello.| +# 00000006 +``` + +### UInt Type + +```ruby +Hexdump.hexdump("ABCD" * 7, type: :uint32) +# 00000000 44434241 44434241 44434241 44434241 |ABCDABCDABCDABCD| +# 00000010 44434241 44434241 44434241 |ABCDABCDABCD| +# 0000001c +``` + +### Little-endian + +```ruby +Hexdump.hexdump("ABCD" * 7, type: :uint32_le) +# 00000000 44434241 44434241 44434241 44434241 |ABCDABCDABCDABCD| +# 00000010 44434241 44434241 44434241 |ABCDABCDABCD| +# 0000001c +``` + +### Big-endian + +```ruby +Hexdump.hexdump("ABCD" * 7, type: :uint32_be) +# 00000000 41424344 41424344 41424344 41424344 |ABCDABCDABCDABCD| +# 00000010 41424344 41424344 41424344 |ABCDABCDABCD| +# 0000001c +``` + +### Int Type + +```ruby +Hexdump.hexdump([65535, -1].pack("LL"), type: :int32_be, base: 10) +# 00000000 65535 -1 |........| +# 00000008 +``` + +### Char Type + +```ruby +Hexdump.hexdump("hello\0", type: :char) +# 00000000 h e l l o \0 |hello.| +# 00000006 +``` + +### Float Type + +```ruby +Hexdump.hexdump([0.0, 1.0, -1.0, Float::NAN].pack('EEEE'), type: :float64_le) +# 00000000 0.000000e+00 1.000000e+00 |...............?| +# 00000010 -1.000000e+00 NaN |................| +# 00000020 +``` + +### Skipping Data + +```ruby +Hexdump.hexdump("GARBAGEabc123", offset: 7) +# 00000007 61 62 63 31 32 33 |abc123| +# 0000000d +``` + +### Zero-padding + +```ruby +Hexdump.hexdump(("ABCD" * 4) + "AB", type: :uint32_be, zero_pad: true) +# 00000000 41424344 41424344 41424344 41424344 |ABCDABCDABCDABCD| +# 00000010 41420000 |AB..| +# 00000014 +``` + +### ANSI Styling + +```ruby +Hexdump.hexdump("ABCD", style: {index: :white, numeric: :green, chars: :cyan}) +``` + +### ANSI Highlighting + +```ruby +Hexdump.hexdump((0..255).map(&:chr).join, highlights: { + index: {/00$/ => [:white, :bold]}, + numeric: { + /^[8-f][0-9a-f]$/ => :faint, + /f/ => :cyan, + '00' => [:black, :on_red] + }, + chars: {/[^\.]+/ => :green} +}) +``` + +### Block Configuration + +```ruby +Hexdump.hexdump("hello\0") do |hex| + hex.type = :uint16_le + hex.group_chars = :type + # ... +end +# 00000000 6568 6c6c 006f |he|ll|o.| +# 00000006 +``` + ## Benchmarks -Benchmarks show {Hexdump.dump} processing 25M of data. +Benchmarks show hexdumping 1Mb of random data. -### Ruby 2.7.3 +### Ruby 2.7.4 ``` - user system total real -Hexdump.dump (output) 10.283433 0.000748 10.284181 ( 10.328899) -Hexdump.dump width=256 (output) 8.803228 0.005973 8.809201 ( 8.838375) -Hexdump.dump ascii=true (output) 10.740975 0.001903 10.742878 ( 10.779777) -Hexdump.dump word_size=2 (output) 15.163195 0.000989 15.164184 ( 15.220481) -Hexdump.dump word_size=4 (output) 14.279406 0.003840 14.283246 ( 14.345357) -Hexdump.dump word_size=8 (output) 7.715803 0.002879 7.718682 ( 7.746389) -Hexdump.dump (block) 5.543268 0.000980 5.544248 ( 5.561494) -Hexdump.dump width=256 (block) 5.438946 0.000000 5.438946 ( 5.455742) -Hexdump.dump ascii=true (block) 6.082787 0.000924 6.083711 ( 6.106234) -Hexdump.dump word_size=2 (block) 11.439610 0.000983 11.440593 ( 11.483788) -Hexdump.dump word_size=4 (block) 11.111633 0.000954 11.112587 ( 11.158416) -Hexdump.dump word_size=8 (block) 5.397569 0.002896 5.400465 ( 5.426971) + user system total real +Hexdump.hexdump(data) 1.148697 0.025829 1.174526 ( 1.183447) +Hexdump.hexdump(data, repeating: false) 1.050473 0.000000 1.050473 ( 1.057167) +Hexdump.hexdump(data, chars_column: false) 0.878459 0.002912 0.881371 ( 0.888779) +Hexdump.hexdump(data, columns: 256) 0.793922 0.008785 0.802707 ( 0.810535) +Hexdump.hexdump(data, group_columns: 4) 1.309818 0.000000 1.309818 ( 1.320721) +Hexdump.hexdump(data, group_chars: 4) 1.949181 0.000000 1.949181 ( 1.975533) +Hexdump.hexdump(data, encoding: :utf8) 1.292495 0.000000 1.292495 ( 1.302071) +Hexdump.hexdump(data, type: :char) 1.168044 0.000000 1.168044 ( 1.177700) +Hexdump.hexdump(data, type: :uchar) 1.033165 0.000000 1.033165 ( 1.041185) +Hexdump.hexdump(data, type: :int8) 1.310548 0.000000 1.310548 ( 1.319847) +Hexdump.hexdump(data, type: :uint8) 1.035534 0.000000 1.035534 ( 1.041428) +Hexdump.hexdump(data, type: :int16) 1.351306 0.009906 1.361212 ( 1.370048) +Hexdump.hexdump(data, type: :int16_le) 1.320781 0.002981 1.323762 ( 1.331747) +Hexdump.hexdump(data, type: :int16_be) 1.401554 0.003986 1.405540 ( 1.414568) +Hexdump.hexdump(data, type: :int16_ne) 1.367864 0.000000 1.367864 ( 1.376459) +Hexdump.hexdump(data, type: :uint16) 1.425247 0.003965 1.429212 ( 1.438618) +Hexdump.hexdump(data, type: :uint16_le) 1.399240 0.002979 1.402219 ( 1.411098) +Hexdump.hexdump(data, type: :uint16_be) 1.409289 0.006960 1.416249 ( 1.424767) +Hexdump.hexdump(data, type: :uint16_ne) 1.288829 0.000001 1.288830 ( 1.296091) +Hexdump.hexdump(data, type: :int32) 1.089239 0.000000 1.089239 ( 1.094715) +Hexdump.hexdump(data, type: :int32_le) 1.429353 0.000003 1.429356 ( 1.441620) +Hexdump.hexdump(data, type: :int32_be) 1.472933 0.000000 1.472933 ( 1.486328) +Hexdump.hexdump(data, type: :int32_ne) 1.357824 0.000000 1.357824 ( 1.369258) +Hexdump.hexdump(data, type: :uint32) 1.214704 0.000000 1.214704 ( 1.222920) +Hexdump.hexdump(data, type: :uint32_le) 1.253424 0.000000 1.253424 ( 1.262441) +Hexdump.hexdump(data, type: :uint32_be) 1.325268 0.000000 1.325268 ( 1.335447) +Hexdump.hexdump(data, type: :uint32_ne) 1.314893 0.000819 1.315712 ( 1.328889) +Hexdump.hexdump(data, type: :int64) 1.083071 0.000000 1.083071 ( 1.092108) +Hexdump.hexdump(data, type: :int64_le) 1.076378 0.000000 1.076378 ( 1.084785) +Hexdump.hexdump(data, type: :int64_be) 0.998069 0.000000 0.998069 ( 1.005166) +Hexdump.hexdump(data, type: :int64_ne) 0.990422 0.000000 0.990422 ( 1.005638) +Hexdump.hexdump(data, type: :uint64) 1.010946 0.000000 1.010946 ( 1.018339) +Hexdump.hexdump(data, type: :uint64_le) 0.961576 0.000000 0.961576 ( 0.967806) +Hexdump.hexdump(data, type: :uint64_be) 0.979367 0.000000 0.979367 ( 0.985515) +Hexdump.hexdump(data, type: :uint64_ne) 1.017737 0.000000 1.017737 ( 1.024689) +Hexdump.hexdump(data, type: :float32) 1.237278 0.000000 1.237278 ( 1.245206) +Hexdump.hexdump(data, type: :float32_le) 1.233321 0.000000 1.233321 ( 1.241154) +Hexdump.hexdump(data, type: :float32_be) 1.245740 0.000000 1.245740 ( 1.253952) +Hexdump.hexdump(data, type: :float32_ne) 1.256216 0.000000 1.256216 ( 1.264893) +Hexdump.hexdump(data, type: :float64) 1.122882 0.000000 1.122882 ( 1.130954) +Hexdump.hexdump(data, type: :float64_le) 1.117593 0.000000 1.117593 ( 1.125222) +Hexdump.hexdump(data, type: :float64_be) 1.139602 0.000000 1.139602 ( 1.147980) +Hexdump.hexdump(data, type: :float64_ne) 1.142568 0.000000 1.142568 ( 1.150949) ``` -### Ruby 3.0.1 +### Ruby 3.0.2 ``` - user system total real -Hexdump.dump (output) 12.064022 0.001165 12.065187 ( 12.118272) -Hexdump.dump width=256 (output) 10.228743 0.009920 10.238663 ( 10.279783) -Hexdump.dump ascii=true (output) 12.532913 0.000000 12.532913 ( 12.582665) -Hexdump.dump word_size=2 (output) 17.685782 0.000000 17.685782 ( 17.770686) -Hexdump.dump word_size=4 (output) 15.835564 0.000000 15.835564 ( 15.917552) -Hexdump.dump word_size=8 (output) 8.436831 0.000000 8.436831 ( 8.473445) -Hexdump.dump (block) 6.482589 0.000000 6.482589 ( 6.504816) -Hexdump.dump width=256 (block) 6.360828 0.000000 6.360828 ( 6.383705) -Hexdump.dump ascii=true (block) 6.911868 0.000000 6.911868 ( 6.936795) -Hexdump.dump word_size=2 (block) 13.120488 0.000000 13.120488 ( 13.179957) -Hexdump.dump word_size=4 (block) 12.349516 0.000000 12.349516 ( 12.412972) -Hexdump.dump word_size=8 (block) 5.814830 0.000000 5.814830 ( 5.837822) + user system total real +Hexdump.hexdump(data) 0.902383 0.046875 0.949258 ( 0.953623) +Hexdump.hexdump(data, repeating: false) 0.892407 0.000046 0.892453 ( 0.896401) +Hexdump.hexdump(data, chars_column: false) 0.705909 0.001029 0.706938 ( 0.709924) +Hexdump.hexdump(data, columns: 256) 0.627444 0.009986 0.637430 ( 0.640324) +Hexdump.hexdump(data, group_columns: 4) 1.081550 0.001041 1.082591 ( 1.087987) +Hexdump.hexdump(data, group_chars: 4) 1.444519 0.000000 1.444519 ( 1.452809) +Hexdump.hexdump(data, encoding: :utf8) 1.078177 0.000003 1.078180 ( 1.082981) +Hexdump.hexdump(data, type: :char) 0.865217 0.000000 0.865217 ( 0.868752) +Hexdump.hexdump(data, type: :uchar) 0.736559 0.000000 0.736559 ( 0.739721) +Hexdump.hexdump(data, type: :int8) 1.042024 0.000000 1.042024 ( 1.046687) +Hexdump.hexdump(data, type: :uint8) 0.917350 0.000005 0.917355 ( 0.921428) +Hexdump.hexdump(data, type: :int16) 1.351638 0.004978 1.356616 ( 1.363879) +Hexdump.hexdump(data, type: :int16_le) 1.315200 0.006944 1.322144 ( 1.329052) +Hexdump.hexdump(data, type: :int16_be) 1.421759 0.005966 1.427725 ( 1.435760) +Hexdump.hexdump(data, type: :int16_ne) 1.444364 0.001995 1.446359 ( 1.454039) +Hexdump.hexdump(data, type: :uint16) 1.491169 0.001000 1.492169 ( 1.500542) +Hexdump.hexdump(data, type: :uint16_le) 1.439111 0.000000 1.439111 ( 1.447745) +Hexdump.hexdump(data, type: :uint16_be) 1.464961 0.000836 1.465797 ( 1.473807) +Hexdump.hexdump(data, type: :uint16_ne) 1.407008 0.000808 1.407816 ( 1.415236) +Hexdump.hexdump(data, type: :int32) 1.048519 0.000004 1.048523 ( 1.053326) +Hexdump.hexdump(data, type: :int32_le) 1.080497 0.000000 1.080497 ( 1.085598) +Hexdump.hexdump(data, type: :int32_be) 1.033985 0.000000 1.033985 ( 1.038472) +Hexdump.hexdump(data, type: :int32_ne) 1.057491 0.000000 1.057491 ( 1.062123) +Hexdump.hexdump(data, type: :uint32) 1.019488 0.000000 1.019488 ( 1.023838) +Hexdump.hexdump(data, type: :uint32_le) 1.014077 0.000003 1.014080 ( 1.018370) +Hexdump.hexdump(data, type: :uint32_be) 1.038020 0.000000 1.038020 ( 1.042756) +Hexdump.hexdump(data, type: :uint32_ne) 1.047465 0.000000 1.047465 ( 1.052377) +Hexdump.hexdump(data, type: :int64) 0.842281 0.000000 0.842281 ( 0.845988) +Hexdump.hexdump(data, type: :int64_le) 0.840408 0.000000 0.840408 ( 0.844103) +Hexdump.hexdump(data, type: :int64_be) 0.845470 0.000002 0.845472 ( 0.849219) +Hexdump.hexdump(data, type: :int64_ne) 0.843975 0.000000 0.843975 ( 0.847644) +Hexdump.hexdump(data, type: :uint64) 0.836761 0.000000 0.836761 ( 0.840326) +Hexdump.hexdump(data, type: :uint64_le) 0.828863 0.000000 0.828863 ( 0.832319) +Hexdump.hexdump(data, type: :uint64_be) 0.839492 0.000001 0.839493 ( 0.843017) +Hexdump.hexdump(data, type: :uint64_ne) 0.843799 0.000000 0.843799 ( 0.847764) +Hexdump.hexdump(data, type: :float32) 1.091306 0.000000 1.091306 ( 1.096429) +Hexdump.hexdump(data, type: :float32_le) 1.077634 0.000000 1.077634 ( 1.082633) +Hexdump.hexdump(data, type: :float32_be) 1.085840 0.000986 1.086826 ( 1.092056) +Hexdump.hexdump(data, type: :float32_ne) 1.093757 0.000000 1.093757 ( 1.099011) +Hexdump.hexdump(data, type: :float64) 0.873676 0.010942 0.884618 ( 0.888978) +Hexdump.hexdump(data, type: :float64_le) 0.865006 0.003984 0.868990 ( 0.873156) +Hexdump.hexdump(data, type: :float64_be) 0.879795 0.009947 0.889742 ( 0.894389) +Hexdump.hexdump(data, type: :float64_ne) 0.876483 0.010934 0.887417 ( 0.892222) ``` -### JRuby 9.2.16.0 +### JRuby 9.2.19.0 ``` - user system total real -Hexdump.dump (output) 13.090000 0.240000 13.330000 ( 11.226466) -Hexdump.dump width=256 (output) 9.350000 0.030000 9.380000 ( 9.165070) -Hexdump.dump ascii=true (output) 10.910000 0.050000 10.960000 ( 10.665791) -Hexdump.dump word_size=2 (output) 13.760000 0.150000 13.910000 ( 12.268307) -Hexdump.dump word_size=4 (output) 11.940000 0.090000 12.030000 ( 11.107564) -Hexdump.dump word_size=8 (output) 8.170000 0.040000 8.210000 ( 7.419708) -Hexdump.dump (block) 7.840000 0.020000 7.860000 ( 7.777749) -Hexdump.dump width=256 (block) 7.540000 0.000000 7.540000 ( 7.466315) -Hexdump.dump ascii=true (block) 7.680000 0.010000 7.690000 ( 7.622393) -Hexdump.dump word_size=2 (block) 9.830000 0.020000 9.850000 ( 9.693596) -Hexdump.dump word_size=4 (block) 9.010000 0.020000 9.030000 ( 8.998687) -Hexdump.dump word_size=8 (block) 5.740000 0.030000 5.770000 ( 5.709127) + user system total real +Hexdump.hexdump(data) 6.440000 0.260000 6.700000 ( 1.990004) +Hexdump.hexdump(data, repeating: false) 1.920000 0.010000 1.930000 ( 0.973891) +Hexdump.hexdump(data, chars_column: false) 1.680000 0.010000 1.690000 ( 0.848573) +Hexdump.hexdump(data, columns: 256) 0.920000 0.010000 0.930000 ( 0.703203) +Hexdump.hexdump(data, group_columns: 4) 2.070000 0.010000 2.080000 ( 1.119408) +Hexdump.hexdump(data, group_chars: 4) 2.200000 0.010000 2.210000 ( 1.427454) +Hexdump.hexdump(data, encoding: :utf8) 2.280000 0.010000 2.290000 ( 1.148070) +Hexdump.hexdump(data, type: :char) 1.970000 0.020000 1.990000 ( 1.022860) +Hexdump.hexdump(data, type: :uchar) 0.940000 0.000000 0.940000 ( 0.780674) +Hexdump.hexdump(data, type: :int8) 1.580000 0.000000 1.580000 ( 1.086830) +Hexdump.hexdump(data, type: :uint8) 0.980000 0.010000 0.990000 ( 0.937851) +Hexdump.hexdump(data, type: :int16) 2.730000 0.030000 2.760000 ( 1.571684) +Hexdump.hexdump(data, type: :int16_le) 1.620000 0.000000 1.620000 ( 1.354835) +Hexdump.hexdump(data, type: :int16_be) 1.700000 0.010000 1.710000 ( 1.430056) +Hexdump.hexdump(data, type: :int16_ne) 1.640000 0.000000 1.640000 ( 1.437230) +Hexdump.hexdump(data, type: :uint16) 2.190000 0.100000 2.290000 ( 1.801601) +Hexdump.hexdump(data, type: :uint16_le) 1.770000 0.010000 1.780000 ( 1.585609) +Hexdump.hexdump(data, type: :uint16_be) 1.720000 0.000000 1.720000 ( 1.555715) +Hexdump.hexdump(data, type: :uint16_ne) 1.760000 0.010000 1.770000 ( 1.540340) +Hexdump.hexdump(data, type: :int32) 1.430000 0.000000 1.430000 ( 1.133868) +Hexdump.hexdump(data, type: :int32_le) 1.060000 0.000000 1.060000 ( 1.031721) +Hexdump.hexdump(data, type: :int32_be) 1.130000 0.010000 1.140000 ( 1.096841) +Hexdump.hexdump(data, type: :int32_ne) 1.080000 0.000000 1.080000 ( 1.074743) +Hexdump.hexdump(data, type: :uint32) 1.560000 0.010000 1.570000 ( 1.053369) +Hexdump.hexdump(data, type: :uint32_le) 1.070000 0.000000 1.070000 ( 1.001372) +Hexdump.hexdump(data, type: :uint32_be) 1.460000 0.020000 1.480000 ( 1.080869) +Hexdump.hexdump(data, type: :uint32_ne) 1.120000 0.010000 1.130000 ( 0.876941) +Hexdump.hexdump(data, type: :int64) 1.510000 0.010000 1.520000 ( 0.865030) +Hexdump.hexdump(data, type: :int64_le) 0.860000 0.000000 0.860000 ( 0.770903) +Hexdump.hexdump(data, type: :int64_be) 0.820000 0.000000 0.820000 ( 0.768356) +Hexdump.hexdump(data, type: :int64_ne) 0.760000 0.010000 0.770000 ( 0.752532) +Hexdump.hexdump(data, type: :uint64) 2.430000 0.000000 2.430000 ( 1.011133) +Hexdump.hexdump(data, type: :uint64_le) 0.850000 0.010000 0.860000 ( 0.823235) +Hexdump.hexdump(data, type: :uint64_be) 0.870000 0.000000 0.870000 ( 0.822799) +Hexdump.hexdump(data, type: :uint64_ne) 0.900000 0.000000 0.900000 ( 0.829247) +Hexdump.hexdump(data, type: :float32) 3.700000 0.020000 3.720000 ( 1.862630) +Hexdump.hexdump(data, type: :float32_le) 1.430000 0.010000 1.440000 ( 1.372024) +Hexdump.hexdump(data, type: :float32_be) 1.360000 0.010000 1.370000 ( 1.333000) +Hexdump.hexdump(data, type: :float32_ne) 1.390000 0.000000 1.390000 ( 1.354031) +Hexdump.hexdump(data, type: :float64) 2.830000 0.030000 2.860000 ( 1.705892) +Hexdump.hexdump(data, type: :float64_le) 1.370000 0.000000 1.370000 ( 1.356680) +Hexdump.hexdump(data, type: :float64_be) 1.430000 0.010000 1.440000 ( 1.392404) +Hexdump.hexdump(data, type: :float64_ne) 1.380000 0.000000 1.380000 ( 1.363983) ``` -### TruffleRuby 21.0.0 +### TruffleRuby 21.2.0.1 ``` - user system total real -Hexdump.dump (output) 25.818995 0.855689 26.674684 ( 22.376015) -Hexdump.dump width=256 (output) 20.489077 0.125966 20.615043 ( 18.301748) -Hexdump.dump ascii=true (output) 25.214678 0.098018 25.312696 ( 21.714985) -Hexdump.dump word_size=2 (output) 28.380387 0.192277 28.572664 ( 23.736887) -Hexdump.dump word_size=4 (output) 31.348977 0.134854 31.483831 ( 27.710968) -Hexdump.dump word_size=8 (output) 18.850093 0.100256 18.950349 ( 13.921720) -Hexdump.dump (block) 7.792878 0.050542 7.843420 ( 6.003789) -Hexdump.dump width=256 (block) 6.526531 0.015898 6.542429 ( 5.777169) -Hexdump.dump ascii=true (block) 7.425399 0.030799 7.456198 ( 5.705369) -Hexdump.dump word_size=2 (block) 12.629775 0.028653 12.658428 ( 11.115049) -Hexdump.dump word_size=4 (block) 20.372094 0.010807 20.382901 ( 19.758073) -Hexdump.dump word_size=8 (block) 8.828653 0.010889 8.839542 ( 8.017241) + user system total real +Hexdump.hexdump(data) 7.456088 0.230339 7.686427 ( 2.378998) +Hexdump.hexdump(data, repeating: false) 5.737137 0.150997 5.888134 ( 1.781732) +Hexdump.hexdump(data, chars_column: false) 6.671704 0.064265 6.735969 ( 2.054377) +Hexdump.hexdump(data, columns: 256) 4.711081 0.023574 4.734655 ( 1.352932) +Hexdump.hexdump(data, group_columns: 4) 8.762291 0.133901 8.896192 ( 2.711132) +Hexdump.hexdump(data, group_chars: 4) 13.382068 0.127633 13.509701 ( 4.128705) +Hexdump.hexdump(data, encoding: :utf8) 8.591975 0.138969 8.730944 ( 2.676283) +Hexdump.hexdump(data, type: :char) 6.455997 0.059446 6.515443 ( 1.953656) +Hexdump.hexdump(data, type: :uchar) 6.201412 0.048587 6.249999 ( 1.732655) +Hexdump.hexdump(data, type: :int8) 8.712725 0.095197 8.807922 ( 2.587043) +Hexdump.hexdump(data, type: :uint8) 5.553536 0.074358 5.627894 ( 1.786634) +Hexdump.hexdump(data, type: :int16) 11.300609 0.114115 11.414724 ( 3.440795) +Hexdump.hexdump(data, type: :int16_le) 8.040891 0.060503 8.101394 ( 2.388759) +Hexdump.hexdump(data, type: :int16_be) 6.602434 0.087225 6.689659 ( 2.082091) +Hexdump.hexdump(data, type: :int16_ne) 5.448411 0.076425 5.524836 ( 1.696039) +Hexdump.hexdump(data, type: :uint16) 10.081909 0.157579 10.239488 ( 3.106461) +Hexdump.hexdump(data, type: :uint16_le) 6.847504 0.040543 6.888047 ( 2.069546) +Hexdump.hexdump(data, type: :uint16_be) 6.730759 0.149299 6.880058 ( 2.147346) +Hexdump.hexdump(data, type: :uint16_ne) 5.539179 0.108832 5.648011 ( 1.747539) +Hexdump.hexdump(data, type: :int32) 7.998790 0.058401 8.057191 ( 2.383304) +Hexdump.hexdump(data, type: :int32_le) 4.650657 0.081202 4.731859 ( 1.412741) +Hexdump.hexdump(data, type: :int32_be) 11.538588 0.089259 11.627847 ( 3.557763) +Hexdump.hexdump(data, type: :int32_ne) 9.605673 0.146677 9.752350 ( 2.995870) +Hexdump.hexdump(data, type: :uint32) 10.404964 0.106136 10.511100 ( 3.118580) +Hexdump.hexdump(data, type: :uint32_le) 4.851154 0.080325 4.931479 ( 1.463532) +Hexdump.hexdump(data, type: :uint32_be) 11.293044 0.100121 11.393165 ( 3.539708) +Hexdump.hexdump(data, type: :uint32_ne) 9.907893 0.122000 10.029893 ( 3.165294) +Hexdump.hexdump(data, type: :int64) 9.103719 0.102995 9.206714 ( 2.775106) +Hexdump.hexdump(data, type: :int64_le) 9.304751 0.180642 9.485393 ( 2.922495) +Hexdump.hexdump(data, type: :int64_be) 7.166353 0.089344 7.255697 ( 2.215438) +Hexdump.hexdump(data, type: :int64_ne) 6.874170 0.090186 6.964356 ( 2.113975) +Hexdump.hexdump(data, type: :uint64) 12.997911 0.165758 13.163669 ( 4.081488) +Hexdump.hexdump(data, type: :uint64_le) 8.949650 0.130855 9.080505 ( 2.712645) +Hexdump.hexdump(data, type: :uint64_be) 8.948030 0.173500 9.121530 ( 2.842953) +Hexdump.hexdump(data, type: :uint64_ne) 8.055399 0.153749 8.209148 ( 2.547932) +Hexdump.hexdump(data, type: :float32) 14.345624 0.241224 14.586848 ( 4.508393) +Hexdump.hexdump(data, type: :float32_le) 10.454524 0.103136 10.557660 ( 3.112175) +Hexdump.hexdump(data, type: :float32_be) 11.073294 0.202252 11.275546 ( 3.443881) +Hexdump.hexdump(data, type: :float32_ne) 9.990956 0.091216 10.082172 ( 3.022276) +Hexdump.hexdump(data, type: :float64) 16.629231 0.279989 16.909220 ( 5.163906) +Hexdump.hexdump(data, type: :float64_le) 13.761375 0.190385 13.951760 ( 4.129403) +Hexdump.hexdump(data, type: :float64_be) 16.121047 0.277863 16.398910 ( 5.019326) +Hexdump.hexdump(data, type: :float64_ne) 8.873162 0.068414 8.941576 ( 4.748072) ``` ## Copyright Copyright (c) 2011-2021 Hal Brodigan