home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 200-299 / ff227.lzh / MidiLib / docs / benchmark.doc next >
Text File  |  1989-06-25  |  3KB  |  133 lines

  1. midi.library benchmarks
  2. -----------------------
  3.  
  4. All benchmark timing done using Radical Eye Software profiler for Aztec C.
  5.  
  6.  
  7. v2.0 (library version 7.92)
  8. ---------------------------
  9.  
  10.     test 1
  11.     ------
  12.  
  13.     Private source->dest loopback
  14.     1 route w/o processing
  15.     CLI priority +25
  16.  
  17.               m1      m2      m3
  18.             ------    ------    ------
  19.     PutMidiMsg    0.48ms    0.48ms    1.12ms
  20.     GetMidiPacket    <-------0.13ms------->
  21.     FreeMidiPacket    <---0.07ms--->    0.68ms
  22.  
  23.     m1 = fe
  24.     m2 = 90 40 40
  25.     m3 = f0 43 10 03 20 16 f7
  26.  
  27.  
  28.     test 2
  29.     ------
  30.  
  31.     Loopback thru MidiOut->MidiIn w/ MIDI cables
  32.     1 route w/o processing
  33.     CLI priority +25
  34.  
  35.               m1      m2      m3
  36.             ------    ------    ------
  37.     PutMidiMsg    4.09ms    5.74ms    8.87ms
  38.     GetMidiPacket    <-------0.14ms------->
  39.     FreeMidiPacket    <---0.09ms--->    0.59ms
  40.  
  41.     m1 = fe
  42.     m2 = 90 40 40
  43.     m3 = f0 43 10 03 20 16 f7
  44.  
  45.     The slower times here can be attributed to the fact that MidiIn and
  46.     MidiOut run at a higher priority than the test program (+30) and as
  47.     such preempts the test program once PutMidiMsg is called.  The
  48.     serial interrupts also preempt the test program.  The processing
  49.     time for all of this stuff winds up being included in the
  50.     PutMidiMsg() time.
  51.  
  52.     MidiOut doesn't contribute much to extra time: just a call to
  53.     GetMidiPacket() and FreeMidiPacket().
  54.  
  55.     MidiIn runs inside of PutMidiStream() which has slightly lower
  56.     performance ratings than PutMidiMsg(), but is necessary to packetize
  57.     the incoming MIDI stream from the serial port.
  58.  
  59.  
  60.     test 3
  61.     ------
  62.  
  63.     Single route to MidiOut w/o processing
  64.     CLI priority +25
  65.  
  66.               m1      m2      m3
  67.             ------    ------    ------
  68.     PutMidiMsg    1.72ms    1.67ms    4.09ms
  69.  
  70.     m1 = fe
  71.     m2 = 90 40 40
  72.     m3 = f0 43 10 03 20 16 f7
  73.  
  74.     This time includes the processing time for PutMidiMsg(), whatever
  75.     MidiOut requires for each packet it receives, and serial transmit
  76.     interrupt time.  This fairly accurately represents the amount of
  77.     time required to get a message out the serial port.
  78.  
  79.  
  80.     test 4
  81.     ------
  82.  
  83.     Private source->dest loopback
  84.     5 routes w/ variable filtering (either all or none)
  85.     CLI priority +25
  86.     All times are for PutMidiMsg
  87.  
  88.     n     m1      m2      m3
  89.     -   ------  ------  ------
  90.     0   0.16ms  0.15ms  0.14ms
  91.     1   0.53    0.60    1.60
  92.     2   0.79    0.83    2.64
  93.     3   0.95    1.08    3.45
  94.     4   1.14    1.32    4.61
  95.     5   1.37    1.56    5.70
  96.  
  97.     n = number of routes that pass all messages, rest pass none
  98.     m1 = fe
  99.     m2 = 90 40 40
  100.     m3 = f0 43 10 03 20 16 f7
  101.  
  102.  
  103.     test 5
  104.     ------
  105.  
  106.     Test PutMidiStream w/ 100 byte stream
  107.     Private source->dest loopback
  108.     1 route w/ variable filtering (flags field below)
  109.     CLI priority +25
  110.     All times are for PutMidiStream
  111.  
  112.        flags     time
  113.        -----   --------
  114.     ---     4.85ms
  115.     --x    12.17
  116.     -r-    16.47
  117.     -rx    23.16
  118.     c--    10.53
  119.     c-x    18.05
  120.     cr-    22.21
  121.     crx    28.57
  122.  
  123.     flags = mask of MMF_CHAN, MMF_SYSRT and MMF_SYSEX
  124.     stream = [ 90 40 fe 40 40 fe 40 40 fe 40 f0 43 fe 10 03 fe 20 16
  125.          fe f7 ] * 5
  126.  
  127.            100 bytes
  128.         15 Note On messages
  129.         18 Active Sense messages
  130.          5 short Sys/Ex messages (f0 43 10 03 20 16 f7)
  131.  
  132.  
  133.