Впервые здесь? Я Роха — провести быструю экскурсию?
Ошибка соединенияНеверный запросСтраница устарелаСессия истеклаТребуется входЗапрещеноНе найденоСлишком много запросовВнутренняя ошибка сервераПлохой шлюзСервис недоступенТайм-аут шлюзаВерсия HTTP не поддерживается
Сессия истекла
Ваша сессия истекла. Пожалуйста, войдите снова.
Требуется вход
Для этого нужна учётная запись. Войдите или создайте её — это займёт минуту.
Страница устарела
Токен безопасности отклонён — обычно потому, что страница была открыта слишком долго или вы вошли в систему в другом месте. Ничего не сохранено. Обновите страницу и повторите.
Запрос не выполнен
При обработке вашего запроса возникла проблема.
Проверьте подключение к интернету и попробуйте снова.
Попробовал эту программку. Сделал следующие наблюдения.
С буковскими третьими "платиновыми" Героями работает, но не сразу. :) Почему-то срабатывает регулярное выражение только вида ".*", задание выражения, соответствующего только файлу Heroes3.exe (".*Heroes3.*", например), не вызывает должного эффекта.
Игра начинает тормозить, а загрузка процессора уменьшается не так стремительно, как хотелось бы. Можно предположить примерно пропорциональную зависимость тормозов от разгрузки процессора. Т.е. фактически процессор освобождается за счет притормаживания программы. На самом деле выигрыш от остановки программы в месте вызова вышеупомянутой функции, а не в каком-то другом месте, вероятно, есть, но, видимо, он не такой уж большой. Ну, а что вы хотели, как говорится. :) Этого и следовало ожидать. Кроме того, сама "прокладка" потребляет не сказать чтобы мизерную часть процессора, это заметно.
Не работает со вторыми Героями. Вероятно, вторые Герои флудят каким-то другим местом. :)
В общем, по-нормальному сделать можно, наверное, только правкой самой игры - заменить бесконечный вызов функции одним более интеллектуальным вызовом, или что-то типа того. Тем не менее, спасибо автору за проделанную работу. Если стоит задача любым способом уменьшить прожорливость третьих Героев, то этот вариант можно использовать. Особенно когда других вариантов нет вообще. :)
А какой процессор, если не секрет? Программа не уменьшает количество вычислений, необходимых "героям" для работы, она уменьшает количество "лишних" вычислений. Если процессор слабый, то может так получится, что 95% процессорного времени Герои считают и 5% - просто крутят бесконечный цикл. Программа исправляет это, но при этом сама отжирает 10% :-) А вот если процессор мощный, то 98% - бесконечный цикл и 1-3% - семи Герои. Тут выигрыш существенен. В моём случае выигрыш заметен уже на ноутбуке 1,6 ГГц.
Процессор P4 2.8GHz. Я не думаю, что абсолютная мощность процессора имеет какое-либо значение, кроме влияния на тепловыделение, конечно. :)
А откуда вообще взялась идея, что основным пожирателем процессорного времени являются вызовы функций API, и почему именно они являются лишними вычислениями? Я смотрел вызовы вторых героев, так там из win32-вызовов самым частым во время бездействия является тот самый sleep. :) Причем, количество этих вызовов не так уж велико и явно на порядки превосходит количество исполненных ассемблерных команд. Я не большой специалист во всех этих вопросах, но мне кажется, что собака неограниченного цикла зарыта где-то внутри программы, а не в ее вызовах внешних функций.
Для третьих Героев, думаю, достаточно и 3% моего процессора. Оставшиеся 97%, соответственно, крутится тупой цикл. Когда мы начинаем останавливать программу с определенной периодичностью (на вызовах определенных функций API в нашем случае), затормаживая ее, скажем, на 50%, то "полезным" Героям остается, соответственно, 1.5%, т.е. половина от необходимого. Это если смотреть в долговременной перспективе, т.е. как это ощущает пользователь. Отсюда тормоза. А с точки зрения компьютера мы делаем некоторое "свободное окно" во времени процессора, только и всего, и когда программа просыпается, она продолжает молотить бестолковые циклы в том же самом соотношении к полезной своей части - 97/3. И так будет на любом, хоть 10GHz-процессоре. Я думаю, что все обстоит вот так.
Конечно, логично было бы предположить, что программа узнает о внешних событиях, которыми руководствуется, с помощью самого частого своего вызова функций ОС, но, видимо, тут все как-то сложнее.
Не API, а основной цикл программы. Он может выглядеть так
начало: нарисовать картинку проверить пользовательский ввод если прошло 10 мсек (к примеру) то сделать шаг вычислений конецесли перейти на начало ------ Т.е. на слабом процессоре всё будет замечательно, а вот на сильном - раз в 10 мсек будет выполняться (сделать шаг вычислений), а в остальное время - перерисовываться картинка. Прпосто на слабом компе она будет перерисовываться, скажем, 20 раз в секунду, а на сильном - 1000 раз. И тут, если вставить sleep(1) в нужное место :-) , то процессор будет какое-то время разгружен.
Попробую добыть вторых Героев и третьих платиновых (где-то они у меня были) и посмотреть, что на них происходит.
т к я новичок и мб создал тему не там, ногами не пинать :) но все же, как запустить на двухядерном? что ВоГ, что Полное собрание виснет практически сразу и все. Одно ядро пробывал отключать, не помогает а играть охото :(
Причем тут твои два ядра? Первый раз такое слышу... сам на athlon х2 все переиграл... Ищи причину в другом месте, скорее всего несовместимость с видеоадаптером или еще что нибудь... У тебя видеокарта с интеграцией?
Приведу данные рекомендации, если что спрашивайте. В двухъядерной системе наиболее часто наблюдаемая проблема (с которой можно столкнуться и в случае с процессором, c технологией Hyper-Threading) состоит в снижении производительности по сравнению с аналогичной одноядерной системой. К тому же в играх наблюдается, к примеру, резкое увеличение внутриигровой скорости (не производительности!). Причиной этого является некорректный выбор таймера операционной системы - вместо таймера управления питанием ACPI используется таймер TSC, что приводит к ошибкам в программах, задействующих в своей работе вызов функции ядра QueryPerformanceCounter.
В таком случае необходимо сделать следующее: в первую очередь нужно добавить в файл boot.ini, расположенный в корневом каталоге диска C, в конец строчки вида «multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Professional"/noexecute=optin/fastdetect» ключ/usepmtimer. Если вы не видите в Проводнике данного файла, то выберите в меню в разделе Сервис пункт Свойства папки . В появившемся окне на вкладке Вид уберите галочку возле пункта Скрывать защищенные системные файлы и в разделе Скрытые файлы и папки выберите Показывать скрытые файлы и папки . Далее владельцы процессоров AMD должны скачать и установить программу AMD DualCore Optimizer, Заметим, что если вы используете для управления частотой процессора не системные средства, а программу RMClock версии 2.15, то достаточно только добавить /usepmtimer в загрузочный файл. Если же, несмотря на выполнение вышеописанных действий, в ходе игры все равно возникают проблемы (зависания, выбрасывание на Рабочий стол и т. п.), то стоит попробовать жестко привязать игру к одному из ядер. Для этого после запуска игры нажимаем Ctrl+Alt+Del , в появившемся диспетчере задач щелкаем правой кнопкой на игре, выбираем пункт Перейти к процессам , затем кликаем опять правой кнопкой на выделенном процессе и выбираем Задать соответствие . В появившемся окне снимаем галочку возле одного из ядер, какого именно - не имеет значения, после чего закрываем окно, сам диспетчер задач и возвращаемся в игру. Если же после указанных действий проблемы не исчезли, и при этом у вас установлена видеокарта фирмы NVIDIA, можно попробовать отключить многопоточные оптимизации в видео-драйверах. Запускаем редактор реестра ( Пуск -> Выполнить -> regedit.exe), идем по адресу HKey_Local_MachineHardwareDeviceMapVideo и выписываем из переменной devicevideo0 адрес, по которому расположены настройки видеокарты. Заметим, что указанный адрес у систем Windows 2000 и Windows XP отличается, в Windows 2000 он будет иметь вид \REGISTRY\Machine\System\ControlSet001\Services\nv\Device0 , в то время как в Windows XP \Registry\Machine\System\Current ControlSet\Control\Video{DD18ED74-F584-4145-B29B-E3A6C6189FAA}\0000 . Переходим по указанному адресу, учитывая следующее: \Registry в данном случае говорит о том, что информация находится в реестре, а \Machine - что она хранится в разделе HKEY_LOCAL_MACHINE . Щелкаем мышью в правой части окна, выбираем Создать - Параметр DWORD , называем его OGL_ThreadControl и присваиваем ему значение 2 . Для отключения многопоточности в приложениях Direct3D нужно создать переменную WTD_EXECMODEL того же типа и присвоить ей значение 0 . [[COLOR="Red"Заметим, что обычно производители игр достаточно оперативно реагируют на проблемы такого рода, и прежде чем отключать поддержку двухъядерников, стоит проверить, нет ли COLOR]патча для игры, исправляющего возможные ошибки.
Добавлено через 17 минут В прошлый раз погорячился про проц, думал что о пятёрке речь.
Ну хрен его знает, могу посоветовть обновить дрова на видюху и переустановить игру. www.nvidia.ru А процессор здесь в натуре не причём.
Стоит последнее обновление
C13;172883
Далее владельцы процессоров AMD должны скачать и установить программу AMD DualCore Optimizer,
Стоит C13;172883
Если же, несмотря на выполнение вышеописанных действий, в ходе игры все равно возникают проблемы (зависания, выбрасывание на Рабочий стол и т. п.), то стоит попробовать жестко привязать игру к одному из ядер. Для этого после запуска игры нажимаем Ctrl+Alt+Del , в появившемся диспетчере задач щелкаем правой кнопкой на игре, выбираем пункт Перейти к процессам , затем кликаем опять правой кнопкой на выделенном процессе и выбираем Задать соответствие . В появившемся окне снимаем галочку возле одного из ядер, какого именно - не имеет значения, после чего закрываем окно, сам диспетчер задач и возвращаемся в игру.
Не помогаетC13;172883
Если же после указанных действий проблемы не исчезли, и при этом у вас установлена видеокарта фирмы NVIDIA, можно попробовать отключить многопоточные оптимизации в видео-драйверах. Запускаем редактор реестра ( Пуск -> Выполнить -> regedit.exe), идем по адресу HKey_Local_MachineHardwareDeviceMapVideo и выписываем из переменной devicevideo0 адрес, по которому расположены настройки видеокарты. Заметим, что указанный адрес у систем Windows 2000 и Windows XP отличается, в Windows 2000 он будет иметь вид \REGISTRY\Machine\System\ControlSet001\Services\nv\Device0 , в то время как в Windows XP \Registry\Machine\System\Current ControlSet\Control\Video{DD18ED74-F584-4145-B29B-E3A6C6189FAA}\0000 . Переходим по указанному адресу, учитывая следующее: \Registry в данном случае говорит о том, что информация находится в реестре, а \Machine - что она хранится в разделе HKEY_LOCAL_MACHINE . Щелкаем мышью в правой части окна, выбираем Создать - Параметр DWORD , называем его OGL_ThreadControl и присваиваем ему значение 2 . Для отключения многопоточности в приложениях Direct3D нужно создать переменную WTD_EXECMODEL того же типа и присвоить ей значение 0 . [[COLOR="Red"Заметим, что обычно производители игр достаточно оперативно реагируют на проблемы такого рода, и прежде чем отключать поддержку двухъядерников, стоит проверить, нет ли COLOR]патча для игры, исправляющего возможные ошибки.
Добавлено через 17 минут В прошлый раз погорячился про проц, думал что о пятёрке речь.
Не помогает
На каком-то форуме читал, что виноват СервисПак 2 Винды XP, хз
Причем тут твои два ядра? Первый раз такое слышу... сам на athlon х2 все переиграл... Ищи причину в другом месте, скорее всего несовместимость с видеоадаптером или еще что нибудь... У тебя видеокарта с интеграцией?
видео ати радеон 1600про. раньше с ним же на процессоре атлон 3000+ отлично игралось
Недавно на бае нашёл похожую тему, такая прога есть и неплохо работает - сокращает до 10-15%. Тему почти никто не смотрит, поэтому искать щас в лом. Если кому-нить нужно - стучите в асю. 432-146-477