Важная информация

User Tag List

Страница 38 из 278 ПерваяПервая ... 343536373839404142 ... ПоследняяПоследняя
Показано с 371 по 380 из 2779

Тема: Xpeccy

  1. #371

    Регистрация
    26.03.2005
    Адрес
    Ivanovo
    Сообщений
    640
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SAM style Посмотреть сообщение
    Всё, что было с порядком байт, находилось сугубо в z80.h, которого теперь нет - оно заменено на libz80ex. Так что проблема, судя по всему, в последней. Она у тебя самосборная или из готового пакета?
    Из пакета. Должна работать, т.к. если судить по дебаггеру она там где-то блондится в ПЗУ, но на экране малевич. В случае косячного ПЗУ на экране косячный матрас.

  2. #372

    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,087
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    230
    Поблагодарили
    98 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    У меня вообще ничего эндиановского не осталось. Проверь либу на правильность - как inc c меняет всю пару bc. Если увеличивается на 256 - это оно, а если на 1 - хммм?..
    Все любят гипножабу

  3. #373

    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Дело небось не в эмуляции z80, а просто в перекидывании экрана.

  4. #374

    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,087
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    230
    Поблагодарили
    98 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    К моему формированию экрана тоже претензий по порядку байт нет - слой SDL 8-битный. Хотя, и это можно проверить - подождать несколько секунд, когда должно появиться 128-е меню и зажать вверх. Если начало трещать - работает, но не показывается. Если не начало - не работает.
    Для информации - в git отпочковалась ветка testing, где сейчас обкатывается новая процедурина прорисовки экрана. Прирост скорости есть.
    Последний раз редактировалось SAM style; 18.11.2011 в 16:39.
    Все любят гипножабу

  5. #375

    Регистрация
    11.04.2006
    Адрес
    Novosibirsk
    Сообщений
    971
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    9 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    А это нужно знать? Мне достаточно знать, как давать компилятору подсказки и то, что он сгенерит код лучше, чем я.
    Вот от этого мы и имеем ресурсожорких монстров которые на трехгигагерцовых пнях ворочаются медленнее чем в свое время на сотом пне летали. Компилятор не может сгенерировать код лучше программиста. Он может сгенерировать код лучше среднестатистического программиста. В большинстве случаев. И то не всегда. Поэтому если хотите получить хороший код - помогите компилятору.

    Вон взять Шалаевский эмулятор. С той поры кроме нескольких недокументированных фичей и точных времянок не появилось в эмуляторах принципиально ничего нового. Толка тогда на 120-м пне оно летало со свистом, а сейчас на двухгигагерцовом каждый второй эмулятор лагает.

    Потому-что "я синтаксически корректный код ему скормил, пускай оптимизирует".

    Чтобы генерировать эффективный код нужно иметь представление как компилятор думает и во что примерно он скомпилирует ту или иную конструкцию. Тогда еще когда вы пишете код можно выбрать наиболее эффективную, даже если алгоритм чуть изменить придется для этого. Это называется "уметь эффективно пользоваться инструментом"

    Потому-что где-то правильнее для какого-то конкретного компилятора сделать switch-case, а где-то if вложенный. Где-то надо цикл руками развернуть, а где-то компилятор сам справится. Где-то явное приведение типа в условии надо сделать, потому-что автоматическое приведение порождает функционально тот-же, но избыточный код, навроде test eax,1, and eax,eax, jz somewhat. Где-то в явном виде сделать табличный вызов функции, где-то отказаться от ООП чтобы не иметь оверхеда на цепочке inherited вызовов которые фактически nullsub-ами являются но программисту выяснять это лениво и он тупо inherited вызов делает, хуже то мол всяко не станет. Да прагму написать какую-нть иногда полезно бывает. Выравниванием поуправлять.

    Я тут давеча код один ковырял. В некоторых местах оверхеда до 90% насчитал. Полмегабайта кода который реально не делае ничего, кроме передачи друг другу управления и возвращения единственного нулевого статуса. Просто потому-что две библиотеки писали разные люди которым было лень и некогда разбираться в другдружьем коде, а третий воспользовался библиотеками первых двух и тоже поленился разбираться, да еще отнаследовался не от того что надо а от того что на глаза попало. В итоге дикий оферхэд как по производительности так и по памяти (две сотни абстрактных методов еще, против десятка которые реально используются и переопределены). Это только один inherited вызов. Вложенность наследования - чуть более сотни. Единственный пустой метод. А там еще есть конструктор и деструктор как минимум. И все виртуальное. Нахрена ?

    И никакой компилятор вместо программиста в таком головняке никогда не разберется. Потому-что искусственного интеллекта у него нет. А когда появится то и программист станет не нужен.
    Последний раз редактировалось ram_scan; 24.11.2011 в 09:36.

  6. #376

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ram_scan Посмотреть сообщение
    Вот от этого мы и имеем ресурсожорких монстров которые на трехгигагерцовых пнях ворочаются медленнее чем в свое время на сотом пне летали.
    А еще раньше трава зеленее была и небо голубее.

    Цитата Сообщение от ram_scan Посмотреть сообщение
    Компилятор не может сгенерировать код лучше программиста. Он может сгенерировать код лучше среднестатистического программиста. В большинстве случаев. И то не всегда.
    Компилятор- это всего лишь инструмент. Правильное применение снимает головную боль, неправильное- добавляет.

    Цитата Сообщение от ram_scan Посмотреть сообщение
    Поэтому если хотите получить хороший код - помогите компилятору.
    Я про это и говорил.

    Цитата Сообщение от ram_scan Посмотреть сообщение
    Вон взять Шалаевский эмулятор. С той поры кроме нескольких недокументированных фичей и точных времянок не появилось в эмуляторах принципиально ничего нового. Толка тогда на 120-м пне оно летало со свистом, а сейчас на двухгигагерцовом каждый второй эмулятор лагает.
    И где он теперь этот эмулятор Шалаева? Почему он не развивается? Может потому, что написан был для оптимизации по скорости под имеющееся на то время оборудование. Что привело к
    а) абсолютной неподдерживаемости
    б) абсолютной некроссплатформенности
    в) далеко не оптимальной работе на современных платформах, ибо правила выполнения даже машинных кодов поменялись, а пересборка ассемблерного кода (в отличие от ЯВУ) бессмысленна

    Цитата Сообщение от ram_scan Посмотреть сообщение
    Потому-что "я синтаксически корректный код ему скормил, пускай оптимизирует".
    Компилятор не сможет за тебя выбрать правильный алгоритм. Если ты фигачишь сортировку пузырьком, то хоть ты лопни или утони в ассемблерных вставках (лично видел такое), получишь на выходе тормозное *****. А правильный алгоритм даже на неоптимальном компиляторе будет работать быстрее.

    Цитата Сообщение от ram_scan Посмотреть сообщение
    Чтобы генерировать эффективный код нужно иметь представление как компилятор думает и во что примерно он скомпилирует ту или иную конструкцию. Тогда еще когда вы пишете код можно выбрать наиболее эффективную, даже если алгоритм чуть изменить придется для этого. Это называется "уметь эффективно пользоваться инструментом"

    Потому-что где-то правильнее для какого-то конкретного компилятора сделать switch-case, а где-то if вложенный. Где-то надо цикл руками развернуть, а где-то компилятор сам справится. Где-то явное приведение типа в условии надо сделать, потому-что автоматическое приведение порождает функционально тот-же, но избыточный код, навроде test eax,1, and eax,eax, jz somewhat.
    Существуют платформы, отличные от x86 (Всегда ваш, Капитан Очевидность).
    Или ты можешь изглаголить универсальные рецепты по оптимизации под все возможные платформы?

    Цитата Сообщение от ram_scan Посмотреть сообщение
    Где-то в явном виде сделать табличный вызов функции, где-то отказаться от ООП чтобы не иметь оверхеда на цепочке inherited вызовов которые фактически nullsub-ами являются но программисту выяснять это лениво и он тупо inherited вызов делает, хуже то мол всяко не станет. Да прагму написать какую-нть иногда полезно бывает. Выравниванием поуправлять.
    "Написать код, понятный компьютеру может каждый. Написать код, понятный человеку- далеко не каждый".

    Цитата Сообщение от ram_scan Посмотреть сообщение
    Я тут давеча код один ковырял. В некоторых местах оверхеда до 90% насчитал. Полмегабайта кода который реально не делае ничего, кроме передачи друг другу управления и возвращения единственного нулевого статуса. Просто потому-что две библиотеки писали разные люди которым было лень и некогда разбираться в другдружьем коде, а третий воспользовался библиотеками первых двух и тоже поленился разбираться, да еще отнаследовался не от того что надо а от того что на глаза попало. В итоге дикий оферхэд как по производительности так и по памяти (две сотни абстрактных методов еще, против десятка которые реально используются и переопределены). Это только один inherited вызов. Вложенность наследования - чуть более сотни. Единственный пустой метод. А там еще есть конструктор и деструктор как минимум. И все виртуальное. Нахрена ?
    Ну дык, умеючи и член сломать можно. Наследование- это сильная связь, агрегирование- слабая. Надо использовать агрегирование чтобы легко переделывать программу при необходимости. В моем коде размер типичной иерархии наследования- 2 уровня (абстрактный интерфейс и один или множество наследников). 3 и более уровней (приходится иногда писать) становятся в очередь на рефакторинг.

    Я вот тоже видел программу, "оптимизированную по скорости", и располагающуюся в одном(!) файле размером в 600кб(!). Внутри километровые функции по тысяче строк. Сопровождению не поддается.

    Или еще пример (из моей программерской жизни). Необходимо описать атрибуты некой сущности. Как поступает обычный программист- пишет структуру и возвращает ее заполненную из некой функции. Я тоже так сделал. И начал ловить дикие тормоза. Переделал все в ООП-стиле (интерфейс с методами доступа) и получил более чем трехкратный прирост скорости. О причинах этого прироста предлагаю догадаться самостоятельно.

  7. #376
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #377

    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А разве Шалаевский потактово эмулировал? С бордюром, лучом, и прочим?

  9. #378

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    А разве Шалаевский потактово эмулировал? С бордюром, лучом, и прочим?
    Ага. И AY там круто на FM-синтезаторе сделан. И LDIR одной командой выполнялся.
    Плагинная система- это да, круто, без вопросов.

  10. #379

    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Гм, да. Сам же когда-то на нём мультиколоры смотрел.
    >>И LDIR одной командой выполнялся.
    Как это? А если прерывание?

  11. #380

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    Как это? А если прерывание?
    Значит не судьба
    Запусти тест из интро Iris Megademo. Там именно так тест тактов делается.

Страница 38 из 278 ПерваяПервая ... 343536373839404142 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •