home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Elysian Archive
/
AmigaElysianArchive.iso
/
sound
/
midi
/
midi20.arc
/
XFile.47
< prev
next >
Wrap
Text File
|
1988-10-26
|
3KB
|
133 lines
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)