File: test_osc_perf.rb

package info (click to toggle)
sonic-pi 3.2.2~repack-8
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 71,872 kB
  • sloc: ruby: 30,548; cpp: 8,490; sh: 957; ansic: 461; erlang: 360; lisp: 141; makefile: 44
file content (54 lines) | stat: -rw-r--r-- 1,738 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#--
# This file is part of Sonic Pi: http://sonic-pi.net
# Full project source: https://github.com/samaaron/sonic-pi
# License: https://github.com/samaaron/sonic-pi/blob/master/LICENSE.md
#
# Copyright 2013, 2014, 2015, 2016 by Sam Aaron (http://sam.aaron.name).
# All rights reserved.
#
# Permission is granted for use, copying, modification, and
# distribution of modified versions of this work as long as this
# notice is included.
#++


# Uncomment this file if you want to run benchmark tests
# requires benchmark/ips gem to be installed

if ENV['RUN_PERF_TESTS']
  require_relative '../setup_test.rb'
  require_relative "../../lib/sonicpi/osc/osc"
  require_relative "../../lib/sonicpi/osc/oscencode"
  require_relative "../../lib/sonicpi/osc/oscdecode"
  require 'benchmark/ips'
  require 'osc-ruby'
  require 'fast_osc'

  samosc = SonicPi::OSC::OscDecode.new(true)
  samoscenc = SonicPi::OSC::OscEncode.new(false)
  oscruby = OSC::OSCPacket

  address = "/feeooblah"
  args = ["beans", 1, 2.0]
  msg = OSC::Message.new(address, *args)
  test_message = msg.encode

  puts "ENCODING TEST"
  Benchmark.ips do |bencher|
    bencher.report("fast_osc") { FastOsc.encode_single_message(address, args) }
    bencher.report("samsosc") { samoscenc.encode_single_message(address, args) }
    bencher.report("osc-ruby") { msg.encode }

    bencher.compare
  end

  # puts samosc.decode_single_message(test_message).inspect
  puts "DECODING TEST"
  Benchmark.ips do |bencher|
    bencher.report("fast_osc") { FastOsc.decode_single_message(test_message) }
    bencher.report("samsosc") { samosc.decode_single_message(test_message) }
    bencher.report("osc-ruby") { oscruby.messages_from_network(test_message) }

    bencher.compare
  end
end