прочитай первый пост (WARININGS) и отредактируй ~/.samstyle/samulator/samulator.conf на предмет current = и memory = в секции [MACHINE].
Вид для печати
прочитай первый пост (WARININGS) и отредактируй ~/.samstyle/samulator/samulator.conf на предмет current = и memory = в секции [MACHINE].
gprof мне рассказал то, что я и так знаю:
valgrind много ругался, послал меня куда подальше :(, но утечку показал небольшую.Код:% cumulative self self total
time seconds seconds calls ms/call ms/call name
23.84 2.42 2.42 99348523 0.00 0.00 Video::tick()
23.45 4.80 2.38 99348523 0.00 0.00 AYProc::tick()
14.38 6.26 1.46 99348523 0.00 0.00 Floppy::tick()
11.43 7.42 1.16 99348523 0.00 0.00 VG93::tick()
8.67 8.30 0.88 12685462 0.00 0.00 Z80::ticks(unsigned char)
6.60 8.97 0.67 99348523 0.00 0.00 Sound::tick()
5.02 9.48 0.51 9142806 0.00 0.00 Z80::exec()
1.87 9.67 0.19 49674261 0.00 0.00 Tape::tick()
1.67 9.84 0.17 10975345 0.00 0.00 Z80::read(unsigned short, unsigned char)
У меня другое получилось:
Остается вопрос по самой многожрущей процедуре- нафига нужна точность до такта? Все равно процессор не успеет среагировать по любому. Лучше покомандно исполнять и потом синхронизировать остальные устройства по разнице.Код:time seconds seconds calls ms/call ms/call name
19.40 1.45 1.45 10932965 0.00 0.00 Z80::ticks(unsigned char)
18.66 2.84 1.39 82001923 0.00 0.00 Video::tick()
13.83 3.87 1.03 82001923 0.00 0.00 AYProc::tick()
12.55 4.80 0.94 82001923 0.00 0.00 VG93::tick()
9.80 5.53 0.73 82001923 0.00 0.00 Sound::tick()
4.70 5.88 0.35 6499121 0.00 0.00 Z80::exec()
4.30 6.20 0.32 82001923 0.00 0.00 Floppy::tick()
2.15 6.36 0.16 41000961 0.00 0.00 Tape::tick()
2.01 6.51 0.15 526219 0.00 0.00 BDI::in(int)
1.88 6.65 0.14 1 140.00 140.00 Sound::defpars()
1.88 6.79 0.14 1 140.00 140.00 Floppy::step(bool)
1.75 6.92 0.13 std::vector<TapeBlock, std::allocator<TapeBlock> >::push_back(TapeBlock const&)
0.94 6.99 0.07 506185 0.00 0.00 AYProc::getvol()
0.81 7.05 0.06 9001997 0.00 0.00 Memory::rd(unsigned short)
0.81 7.11 0.06 8998720 0.00 0.00 Z80::read(unsigned short, unsigned char)
0.67 7.16 0.05 6499121 0.00 0.00 DebugWin::findbp(BPoint)
0.67 7.21 0.05 Tape::rectick()
0.54 7.25 0.04 9044452 0.00 0.00 Memory::getptr(unsigned short)
0.54 7.29 0.04 572 0.07 12.43 EmulWin::emulframe()
0.40 7.32 0.03 1258389 0.00 0.00 Z80::getopt(unsigned char)
0.27 7.34 0.02 542464 0.00 0.00 Z80::anda(unsigned char)
Да, кстати- бросай эту "экономию". Передавать целочисленный параметр через unsigned char- это тормозно и глупо. Самый оптимальный вариант- юзать std::size_t/std::ptrdiff_t (заtypedef'ить если влом много печатать) или unsigned/int на худой конец.
Упдатес. Убиение AYProc::tick(), изменение формирования AY/YM звука.
SAM style, переселился на Debian Squeeze. Загрузка проца в среднем - 70% с запущенным образом. Звук лучше не стал.
Дровинки на видео от производителя поставлены? Слабо, но надеюсь, что часть вины на их отсутствии. Если не подтвердится - случай странный, машина у тебя не такая и слабая.
---------- Post added at 21:13 ---------- Previous post was at 21:08 ----------
К слову, у меня что на дровах nvidia, что на иксовых nv - почти одинаково, в районе 16-20%.
А без образа у тебя как?
SAM style, NVIDIA Driver Version: 190.53
Без образа - ~60
У меня и подавно все жуть как небыстро.
Да, он тормоз. :v2_sick:
Разберусь с делами - распотрошу его ещё раз.