View Single Post
ArnimS's Avatar
Posts: 1,107 | Thanked: 720 times | Joined on Mar 2007 @ Germany
#112
Been doing some dosbox build performance tests with various compile-time flags. Finding a reasonable benchmark hasn't been easy. Since dosbox emulates several PC subsystems, I choose to test real-world apps. In this case Doom timedemos.

The results indicate time to start dosbox, run the timedemo and exit dosbox (from script). To compute the mean run time, I discard the slowest score of 5. Because a 'clean' run can be broken by various unknowns, the curve is more of a poisson than a binomial distribution.

dosbox_cvs_01_01_25_a -O3 -fomit-frame-pointer -fforce-addr -fforce-mem -falign-loops=2 -falign-functions=2 -falign-jumps=2 -funroll-loops -mabi=aapcs-linux -mcpu=arm1136j-s -mfpu=vfp -mfloat-abi=softfp

dosbox_cvs_01_01_25_novfp -O3 -fomit-frame-pointer -fforce-addr -fforce-mem -falign-loops=2 -falign-functions=2 -falign-jumps=2 -funroll-loops -mabi=aapcs-linux -mcpu=arm1136j-s

dosbox_feb12 -O3 -fomit-frame-pointer -mabi=aapcs-linux -mcpu=arm1136j-s -mfpu=vfp -mfloat-abi=softfp

dosbox_feb14a -Os -fomit-frame-pointer -fforce-addr -fforce-mem -falign-loops=2 -falign-functions=2 -falign-jumps=2 -mabi=aapcs-linux -mcpu=arm1136j-s -mfpu=vfp -mfloat-abi=softfp

dosbox_feb14b -O3 -fomit-frame-pointer -fforce-addr -fforce-mem -falign-loops=2 -falign-functions=2 -falign-jumps=2 -mabi=aapcs-linux -mcpu=arm1136j-s -mtune=arm1136j-s -mfpu=vfp -mfloat-abi=softfp -ffast-math

dosbox_feb14c same but with --disable-core-inline


Code:
core simple, cycles 1800, fs 5, no scaler, -timedemo demo3
dosbox_cvs_01_01_25_a           5:56  4:26  5:07
dosbox_cvs_01_01_25_novfp       4:45  5:06  4:43
dosbox_feb12                    4:52  5:03  4:57

core simple, cycles 2500, fs 5, no scaler, -timedemo demo3
dosbox_cvs_01_01_25_a           4:13  4:15  4:32  4:23  4:33 : 4:20.75
dosbox_cvs_01_01_25_novfp       4:31  4:25  4:22  4:27  4:23 : 4:24.25
dosbox_feb12                    4:42  4:33  4:27  4:39  4:26 : 4:31.25

core simple, cycles 2500, fs 5, no scaler, -timedemo demo3 'performance' profile
dosbox_cvs_01_01_25_a           4:24  4:52  4:23  4:40  4:33 : 4:30.00
dosbox_cvs_01_01_25_novfp       4:33  4:32  4:20  4:39  4:21 : 4:26.40
dosbox_feb12                    4:31  4:28  4:30  4:33  5:05 : 4:30.50

core simple, cycles 3600, fs 5, no scaler, -timedemo demo3 'performance' profile
dosbox_cvs_01_01_25_a           4:17  5:38  4:17  4:13  4:14 : 4:15.25
dosbox_cvs_01_01_25_novfp       4:19  4:21  4:14  4:17  4:13 : 4:15.75
dosbox_feb12                    4:18  4:19  5:00  4:17  4:31 : 4:21.25
dosbox_feb14a                   4:55  5:49  4:49  4:58  4:48 : 4:52.50
dosbox_feb14b                   4:02  4:41  4:38  4:05  4:01 : 4:11.50
dosbox_feb14c                   4:51  4:55  4:54  4:50  4:59 : 4:52.50

core normal, cycles 3600, fs 5, no scaler, -timedemo demo3 'performance' profile
dosbox_cvs_01_01_25_a           5:47  5:21  5:36  5:33  5:38 : 5:32.00
dosbox_cvs_01_01_25_novfp       6:01  6:06  6:06  5:59  7:12 : 6:03.00
dosbox_feb12                    6:02  5:51  6:01  6:10  5:52 : 5:56.50

core full, cycles 3600, fs 5, no scaler, -timedemo demo3 'performance' profile
dosbox_cvs_01_01_25_a           6:25  6:25  6:47  6:33  6:22 : 6:26.25
dosbox_cvs_01_01_25_novfp       5:43  5:43  5:43  5:44  5:52 : 5:43.25
dosbox_feb12                    5:57  6:06  5:55  5:55  5:57 : 5:56.00
While the data are inconclusive on effects of build flags, I think we can conclude that for doom timedemo, variance is reduced when the dosbox cycles significantly exceed what the emulator can achieve in realtime.

It appears that increasing cycles well above the point at which dosbox pegs the N810 CPU effectively defeats doom's internal frameskip so that a faster dosbox build+options will finish the run earlier than a slower one.

A seperate test series would be manually running the timedemos and jotting down doom's internal performance reports, using a very small game window and cycles=max.

Last edited by ArnimS; 2008-02-14 at 16:54.