[Scummvm-devel] Slowdowns in SCI and SAGA
yotam barnoy
yotambarnoy at gmail.com
Thu Nov 26 05:55:18 CET 2009
On Wed, Nov 25, 2009 at 10:47 PM, Walter van Niftrik <
walter at vanniftrik-it.nl> wrote:
> I'm a little confused now though, as the configure script seems to set
> DISABLE_DOSBOX_OPL for PSP, so you should still be using the same old OPL
> emulator as before.
>
> So something doesn't quite add up here. Are you using a custom Makefile
> perhaps?
>
> Regards,
>
> Walter
>
I am using a custom makefile, and I try both the DOSBOX and MAME OPLs. Here
are the main results I get from gprof for both cases:
MAME:
% cumulative self self total
time seconds seconds calls s/call s/call name
48.69 26.07 26.07 25996761 0.00 0.00
OPL::MAME::OPL_CALC_SLOT(OPL::MAME::fm_opl_slot*)
15.21 34.22 8.15 12998381 0.00 0.00
OPL::MAME::OPL_CALC_CH(OPL::MAME::fm_opl_channel*)
12.83 41.09 6.87 9608 0.00 0.00
OSystem_PSP::unlockMutex(OpaqueMutex*)
4.93 43.72 2.64 2883584 0.00 0.00
_ZN5AudioL10clampedAddERsi
3.41 45.55 1.83 106090 0.00 0.00
PowerManager::beginCriticalSection(bool)
2.96 47.13 1.58 1444264 0.00 0.00 int CLIP<int>(int,
int, int)
2.59 48.52 1.39 301 0.00 0.00
OSystem_PSP::delayMillis(unsigned int)
with functional breakdown:
0.01 35.83 8539/8539
Sci::MidiDriver_Adlib::generateSamples(short*, int) [7]
[8] 66.9 0.01 35.83 8539
OPL::MAME::OPL::readBuffer(short*, int) [8]
0.03 35.80 8539/8539
OPL::MAME::YM3812UpdateOne(OPL::MAME::fm_opl_f*, short*, int) [9]
-----------------------------------------------
0.03 35.80 8539/8539
OPL::MAME::OPL::readBuffer(short*, int) [8]
[9] 66.9 0.03 35.80 8539
OPL::MAME::YM3812UpdateOne(OPL::MAME::fm_opl_f*, short*, int) [9]
8.15 26.07 12998381/12998381
OPL::MAME::OPL_CALC_CH(OPL::MAME::fm_opl_channel*) [10]
1.58 0.00 1444264/1444264 int CLIP<int>(int, int,
int) [39]
-----------------------------------------------
8.15 26.07 12998381/12998381
OPL::MAME::YM3812UpdateOne(OPL::MAME::fm_opl_f*, short*, int) [9]
[10] 63.9 8.15 26.07 12998381
OPL::MAME::OPL_CALC_CH(OPL::MAME::fm_opl_channel*) [10]
26.07 0.00 25996761/25996761
OPL::MAME::OPL_CALC_SLOT(OPL::MAME::fm_opl_slot*) [11]
-----------------------------------------------
26.07 0.00 25996761/25996761
OPL::MAME::OPL_CALC_CH(OPL::MAME::fm_opl_channel*) [10]
[11] 48.7 26.07 0.00 25996761
OPL::MAME::OPL_CALC_SLOT(OPL::MAME::fm_opl_slot*) [11]
-----------------------------------------------
and here's using the Dosbox OPL:
% cumulative self self total
time seconds seconds calls s/call s/call name
39.00 40.73 40.73 3652062 0.00 0.00
OPL::DOSBox::OPL3::operator_output(OPL::DOSBox::OPL3::operator_struct*, int,
int)
23.68 65.47 24.73 6063 0.00 0.00
OSystem_PSP::unlockMutex(OpaqueMutex*)
6.51 72.27 6.80 1406 0.00 0.00
OSystem_PSP::delayMillis(unsigned int)
5.17 77.66 5.40 1826031 0.00 0.00
OPL::DOSBox::OPL3::operator_decay(OPL::DOSBox::OPL3::operator_struct*)
4.04 81.88 4.22
OPL::DOSBox::OPL3::operator_attack(OPL::DOSBox::OPL3::operator_struct*)
3.77 85.82 3.94 3652062 0.00 0.00
OPL::DOSBox::OPL3::operator_advance(OPL::DOSBox::OPL3::operator_struct*,
int)
3.12 89.08 3.26
OPL::DOSBox::OPL3::operator_release(OPL::DOSBox::OPL3::operator_struct*)
2.31 91.49 2.41 539 0.00 0.00
PSPKeyboard::isVisible()
2.18 93.77 2.28 140479 0.00 0.00
PowerManager::beginCriticalSection(bool)
with functional breakdown:
0.01 51.34 2014/2014
Sci::MidiDriver_Adlib::generateSamples(short*, int) [7]
[8] 49.2 0.01 51.34 2014
OPL::DOSBox::OPL::readBuffer(short*, int) [8]
0.00 51.34 2014/2014
OPL::DOSBox::OPL3::Handler::generate(short*, unsigned int) [9]
-----------------------------------------------
0.00 51.34 2014/2014
OPL::DOSBox::OPL::readBuffer(short*, int) [8]
[9] 49.2 0.00 51.34 2014
OPL::DOSBox::OPL3::Handler::generate(short*, unsigned int) [9]
0.15 51.19 2014/2014
OPL::DOSBox::OPL3::adlib_getsample(short*, int) [10]
-----------------------------------------------
0.15 51.19 2014/2014
OPL::DOSBox::OPL3::Handler::generate(short*, unsigned int) [9]
[10] 49.2 0.15 51.19 2014
OPL::DOSBox::OPL3::adlib_getsample(short*, int) [10]
40.73 0.00 3652062/3652062
OPL::DOSBox::OPL3::operator_output(OPL::DOSBox::OPL3::operator_struct*, int,
int) [11]
5.40 0.00 1826031/1826031
OPL::DOSBox::OPL3::operator_decay(OPL::DOSBox::OPL3::operator_struct*) [26]
3.94 0.00 3652062/3652062
OPL::DOSBox::OPL3::operator_advance(OPL::DOSBox::OPL3::operator_struct*,
int) [30]
0.58 0.00 680480/680480
_ZN3OPL6DOSBox4OPL3L8clipit16EiPs [87]
0.55 0.00 1826031/1826031
OPL::DOSBox::OPL3::operator_sustain(OPL::DOSBox::OPL3::operator_struct*)
[90]
-----------------------------------------------
40.73 0.00 3652062/3652062
OPL::DOSBox::OPL3::adlib_getsample(short*, int) [10]
[11] 39.0 40.73 0.00 3652062
OPL::DOSBox::OPL3::operator_output(OPL::DOSBox::OPL3::operator_struct*, int,
int) [11]
-----------------------------------------------
as you can tell, using Dosbox produces slightly better results.
Regards,
Yotam
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.scummvm.org/pipermail/scummvm-devel/attachments/20091126/292818ad/attachment.html>
More information about the Scummvm-devel
mailing list