Closed katananja closed 6 years ago
I don't know your computer specs, but yes it's running about 5x slower than before. Reason is the high frequency for the ACIA clock writes. It still needs to be measured from a PCB, probably lower freq than 1MHz.
I'm sure the speed is normal without the SANITIZE=address
option, this also affects another machine named aoh
. I'll compile a new one without SANITIZE=address
to make sure.
This are the specs of the computer testing MAME.
CPU: AMD FX(tm)-8350 Eight-Core Processor
Clock: 4002 MHz
Cache: 2048 kb
Memory: Corsair Vengeance 16GB 1866MHz CL9 DDR3 2x8GB
Video: ATI Radeon R7 250E 256Bit DDR5 2GB
Gigabyte 990FXA-UD5 R5
Storage: Seagate Barracuda SATA III 7200RPM 3TB
I can confirm that without SANITIZE=address
, figp
, f1gp2
and aoh
runs with normal speed, otherwise it runs in slow motion. It doesn't affect other machines so far, tested with sf2, ssf2, elevator, galaga, nrallyx and radr.
Build options:
make clean && make OVERRIDE_CC=/usr/bin/clang-3.9 OVERRIDE_CXX=/usr/bin/clang++-3.9 DEBUG=1 SYMBOLS=1 SYMLEVEL=1 -j7
Will check other SANITIZE
options if it has the same effect.
SANITIZE=address
and SANITIZE=alignment
cause emulation slowdown, SANITIZE=function
doesn't. SANITIZE=nullability
is unsupported here.
clang: error: unsupported argument 'nullability' to option 'fsanitize='
At the last patch https://github.com/mamedev/mame/commit/35e5a752439c927bd762518370d039f510975225 is -fsanitize=nullability
or -fno-sanitize=nullability
?
Without SANITIZE
emulation run normal as expected.
Build command used:
address
make clean && make VERBOSE=1 OVERRIDE_CC=/usr/bin/clang-3.9 OVERRIDE_CXX=/usr/bin/clang++-3.9 DEBUG=1 SYMBOLS=1 SYMLEVEL=1 SUBTARGET=arcade REGENIE=1 SANITIZE=address SOURCES=src/mame/drivers/f1gp.cpp -j7
function
for f in $(find . -name *.[oa]); do rm -rf $f; done && make VERBOSE=1 OVERRIDE_CC=/usr/bin/clang-3.9 OVERRIDE_CXX=/usr/bin/clang++-3.9 DEBUG=1 SYMBOLS=1 SYMLEVEL=1 SUBTARGET=arcade REGENIE=1 SANITIZE=function SOURCES=src/mame/drivers/f1gp.cpp -j7
alignment
for f in $(find . -name *.[oa]); do rm -rf $f; done && make VERBOSE=1 OVERRIDE_CC=/usr/bin/clang-3.9 OVERRIDE_CXX=/usr/bin/clang++-3.9 DEBUG=1 SYMBOLS=1 SYMLEVEL=1 SUBTARGET=arcade REGENIE=1 SANITIZE=alignment SOURCES=src/mame/drivers/f1gp.cpp -j7
nullability
for f in $(find . -name *.[oa]); do rm -rf $f; done && make VERBOSE=1 OVERRIDE_CC=/usr/bin/clang-3.9 OVERRIDE_CXX=/usr/bin/clang++-3.9 DEBUG=1 SYMBOLS=1 SYMLEVEL=1 SUBTARGET=arcade REGENIE=1 SANITIZE=nullability SOURCES=src/mame/drivers/f1gp.cpp -j7
clang: error: unsupported argument 'nullability' to option 'fsanitize='
precompile.make:307: recipe for target '../../../../linux_clang/obj/x64/Debug/src/emu/drivers/empty.o' failed
make[2]: *** [../../../../linux_clang/obj/x64/Debug/src/emu/drivers/empty.o] Error 1
Makefile:82: recipe for target 'precompile' failed
make[1]: *** [precompile] Error 2
make[1]: Leaving directory '/home/wellington/tmp/mame/build/projects/sdl/mamearcade/gmake-linux-clang'
makefile:1276: recipe for target 'linux_x64_clang' failed
make: *** [linux_x64_clang] Error 2
以上です。
As per documentation using the address sanitizer will decrease the speed by 2x - but I have seen cases with a bigger drop off. Using the undefined sanitizer will be even slower depending on what the code is doing. It seems nullability was just recently introduced and I will remove the implicit usage before the next release.
Good to know. Thank you @Firehawke
On Sat, Jan 13, 2018 at 8:16 AM hap notifications@github.com wrote:
I don't know your computer specs, but yes it's running about 5x slower than before. Reason is the high frequency for the ACIA clock writes. It still needs to be measured from a PCB, probably lower freq than 1MHz.
I'd assume that the F-1 GP ACIA clocks would have the same rate as the ones in Tail to Nose/Super Formula and Grand Striker.
AJR
mame0193-491-g8a3082de0a-dirty
Debian 9 x64 Build command:make clean && make VERBOSE=1 OVERRIDE_CC=/usr/bin/clang-3.9 OVERRIDE_CXX=/usr/bin/clang++-3.9 DEBUG=1 SYMBOLS=1 SYMLEVEL=1 SANITIZE=address -j7
./mame64d f1gp
ldd mame64d
mame.ini
mame.zip