home *** CD-ROM | disk | FTP | other *** search
- midi.library benchmarks
- -----------------------
-
- All benchmark timing done using Radical Eye Software profiler for Aztec C.
-
-
- v2.0 (library version 7.92)
- ---------------------------
-
- test 1
- ------
-
- Private source->dest loopback
- 1 route w/o processing
- CLI priority +25
-
- m1 m2 m3
- ------ ------ ------
- PutMidiMsg 0.48ms 0.48ms 1.12ms
- GetMidiPacket <-------0.13ms------->
- FreeMidiPacket <---0.07ms---> 0.68ms
-
- m1 = fe
- m2 = 90 40 40
- m3 = f0 43 10 03 20 16 f7
-
-
- test 2
- ------
-
- Loopback thru MidiOut->MidiIn w/ MIDI cables
- 1 route w/o processing
- CLI priority +25
-
- m1 m2 m3
- ------ ------ ------
- PutMidiMsg 4.09ms 5.74ms 8.87ms
- GetMidiPacket <-------0.14ms------->
- FreeMidiPacket <---0.09ms---> 0.59ms
-
- m1 = fe
- m2 = 90 40 40
- m3 = f0 43 10 03 20 16 f7
-
- The slower times here can be attributed to the fact that MidiIn and
- MidiOut run at a higher priority than the test program (+30) and as
- such preempts the test program once PutMidiMsg is called. The
- serial interrupts also preempt the test program. The processing
- time for all of this stuff winds up being included in the
- PutMidiMsg() time.
-
- MidiOut doesn't contribute much to extra time: just a call to
- GetMidiPacket() and FreeMidiPacket().
-
- MidiIn runs inside of PutMidiStream() which has slightly lower
- performance ratings than PutMidiMsg(), but is necessary to packetize
- the incoming MIDI stream from the serial port.
-
-
- test 3
- ------
-
- Single route to MidiOut w/o processing
- CLI priority +25
-
- m1 m2 m3
- ------ ------ ------
- PutMidiMsg 1.72ms 1.67ms 4.09ms
-
- m1 = fe
- m2 = 90 40 40
- m3 = f0 43 10 03 20 16 f7
-
- This time includes the processing time for PutMidiMsg(), whatever
- MidiOut requires for each packet it receives, and serial transmit
- interrupt time. This fairly accurately represents the amount of
- time required to get a message out the serial port.
-
-
- test 4
- ------
-
- Private source->dest loopback
- 5 routes w/ variable filtering (either all or none)
- CLI priority +25
- All times are for PutMidiMsg
-
- n m1 m2 m3
- - ------ ------ ------
- 0 0.16ms 0.15ms 0.14ms
- 1 0.53 0.60 1.60
- 2 0.79 0.83 2.64
- 3 0.95 1.08 3.45
- 4 1.14 1.32 4.61
- 5 1.37 1.56 5.70
-
- n = number of routes that pass all messages, rest pass none
- m1 = fe
- m2 = 90 40 40
- m3 = f0 43 10 03 20 16 f7
-
-
- test 5
- ------
-
- Test PutMidiStream w/ 100 byte stream
- Private source->dest loopback
- 1 route w/ variable filtering (flags field below)
- CLI priority +25
- All times are for PutMidiStream
-
- flags time
- ----- --------
- --- 4.85ms
- --x 12.17
- -r- 16.47
- -rx 23.16
- c-- 10.53
- c-x 18.05
- cr- 22.21
- crx 28.57
-
- flags = mask of MMF_CHAN, MMF_SYSRT and MMF_SYSEX
- stream = [ 90 40 fe 40 40 fe 40 40 fe 40 f0 43 fe 10 03 fe 20 16
- fe f7 ] * 5
-
- 100 bytes
- 15 Note On messages
- 18 Active Sense messages
- 5 short Sys/Ex messages (f0 43 10 03 20 16 f7)
-
-
-