This

  • Автор темы sergey butov
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

sergey butov

Для: European


....Т.е. сначало надо выполнить оптимизация на высоком и среднем уровнях, а только потом переходить к тактам

Сансей, Вы сами ответили по поводу велосипеда

А нащот тактов могу только сказать, что для ПРИБЛИЗИТЕЛЬНОГО сравнения кода.... Да и вообще, допустим для сравнения разницы между делением и умножением (лично я стараюсь использовать умножение), помоему будет всё настолько линейно, что кэшу трудно будет промахнуца. Хотя, возможно я ошыбаюсь, но тем не менее всё равно спасибо)))

Для: grigsoft

Посибо)))) Щя позырю...
 
S

sergey butov

Для: grigsoft

да уш ... :) .... внатуре рилкодинг. Путёвый сайтец.Ищо рас ПОСИБО!!! Ато пришлось вчера нарыть 8битные эмулятор и прошивку на z80. Теперь у меня есть возможность оценить всё это более прогрессивно :)
 
S

sergey butov

И стати, можыт лучче создать отдельный топик для обсуждения оптимизацыи, ато вроде как оффтоп получаеца? Будем там под Вашем присмотром делица собственными соображениями и способами?
 
G

grigsoft

Подразделов и так слишком много. Ты ж на С++ пишешь? Вот и спрашивай тут, если что, обсудим
 
S

sergey butov

Для: grigsoft
Хорошо, тогда вопрос: в том примере, который Вы привели используеца, как я понял, преобразователь мнемоники в код _emit. А нет ли средств написания машинного кода в си без этих преобразователей? Просто у меня около 2,5 кб описания строк в приложении и для каждого байта прописывать _emit ... ну скажем так, напряжно)))))
 
G

grigsoft

То что ты пытаешься сделать суть богопротивно и неестественно, так что не жди помощи от компилятора. Однако простенькая дополнительная программка или макро в MSVC помогут тебе добиться твоих мерзких целей :)
PS. Для вставки асма есть __asm{} , но тебе ведь надо чистые байты пихать.
 
S

sergey butov

Для: grigsoft
:) Ну да, ну да.... А по поводу this... Я чото так и не вкурил.... У дебагера ваще свой взгляд на адреса. Вроде возвращаю указатель на себя, а разница между тем, что выдаёт приложение и дебагер огромная(((... Чую я, что придёца сделать просто отдельным файлом, хотя сёдня в академию - ищо там проконсультируюсь. Стати в массиве (неважно какого типа), дописываеца не заголовок, а ищо несколько байт к каждому элементу, или Вы это имели ввиду? И интересна, нащот тернарных операторов, можно ли туда встраивать функцыи или я прав)))?
 
G

grigsoft

Гм. Да нет в массиве никаких дополнительных байт. Разве что если ты структуры складываешь - тогда выравнивание начинает работать - попробуй в настройках С++\CodeGen выравнивание в 1 поставить. Ну еще данные выделяемые через new в дебаге обрамляются 4 байтами с обеих сторон.
А как ты смотришь что приложение выдает? Если в релизе, то разница будет, конечно. А так - может зависеть от уровня наследования классов. Можешь попробовать пересобрать начисто, если дебаг стал ерунду показывать.
 
S

sergey butov

Для: grigsoft
Вот, что я сечас делаю ( тока не пугайтесь))))..... Это работа на игзамен по с++, правда недоделанная. Удалите потом, как глянете

MSVS 6
Project .....win 32 console app
File .......... source file (.cpp)
 

Вложения

  • Battle_Sea.txt
    16,1 КБ · Просмотры: 609
G

grigsoft

Ну результат, конечно, неплох. Но код - это просто ужас. Комментариев нет, куча операторов в строке, читать невозможно.
И, говоря об оптимизации - о каких тактах процессора может идти речь, если ты тупо обновляешь экран консоли 5 раз в секунду независимо от наличия изменений.

Дополнение. Посмотрел повнимательнее - ты что, код специально чем-то обработал? Потому что я не верю, что человек без наркоты может писать такой код:
Код:
  cout<<p;if (!A[1]){if(B[3]&&A[0]>5&&A[0]<13&&!(A[0]%2)) {c=A[6+A[10]];c=(c)?c+48:251;
cout<<(char)c;A[10]++;}if (B[3]&&A[0]==16){p=grid+330+A[11]*11;cout<<p;}}
 
S

sergey butov

Для: grigsoft

Про обновление экрана могу только сказать, что прога недописана и я для того и делаю такую прорисовку, чтоп вовремя споймать бока ( по мерцанию)

)))) А нащот наркоты.... ммммм.... трезвый, пока что.... Что конкретно смущает в коде?



ЗЫ: как доделаю, вышлю бета версию :)
 
G

grigsoft

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

sergey butov

Для: grigsoft

Давайте лучче др задание, ато скажете что я полдня возилса, или если уш хотите меня проверить, то можно договоритса но определённое время
 
G

grigsoft

Я же не учитель, чтобы тебя проверять, и мне совершенно по барабану сколько ты будешь это делать. Сделай для себя, если хочешь. Если ты можешь внести такие изменения в твой код за пару минут, как это заняло бы в нормальном ООП подходе - я снимаю шляпу. Впрочем, я все равно уверен что через месяц ты не сможешь этого сделать, если не будешь каждый день над кодом корпеть.
Проблемы с твоим кодом:
1. Стратегические - это не ООП. Использование слова class не делает твой код объектно-ориентированным. Все свалено в кучу - данные, обрамление, рисовка таблицы, меню, работа с пользовательским вводом. Массив с кучей данных, в который свалено вообще все что используется - это нечто невообразимое. Структура программы совершенно не просматривается.
2. Тактические - отсутствие стандартного выравнивания (хоть какого), куча операторов в строке (так делать можно только в простейших случаях), нет комментариев, основные использованные переменные - А и В (и ты еще снисходительно улыбаешься над венгерской нотацией?).
Возможно ты гений и прирожденный хакер - я лично не понимаю как можно ориентироваться в такой программе. Но с таким подходом у тебя не будет шанса получить работу, и ты сам никогда не сможешь написать и сопровождать что-то чуть более сложное чем игра Морской бой.

К сожалению, в мое время не учили программировать - я не помню, чтобы даже в универе кто-то просматривал код программ, которые мы сдавали - а это более важно. Может хоть сейчас этому будут учить? Вроде была пару книжек по этому поводу. Для себя - скачай исходники какой-нибудь программы, поизучай подход к оформлению кода. Да хоть бы грид (http://www.codeproject.com/miscctrl/gridctrl.asp). Он далеко не образец стратегического дизайна, но над ним давно работают разные люди, что заставляет держать код нормально читаемым.
 
S

sergey butov

Задание заключалось в том, чтобы сделать морской бой с использованием класса обработки строк и во первых я уже говорил, что программа недописана ( я её привёл только для того чтобы вы примерно поняли, что я пытаюсь сделать), а во вторых.... работает то быстро?Ипользование массивов переменных А и В даёт возможность более гибко адресоваться к ним. Да и вообще, вы видели исходники quake? Там даже не c++, а c, по большей части. В своём коде я могу разнести операторы и функции, а также дописать комменты в любой момент.

ЗЫ: Много чего можно сказать, но давайте лучче я выложу конечный результат тут?
 
G

grigsoft

но давайте лучче я выложу конечный результат тут?
Да ради бога, я же не возражаю.
работает то быстро?
Ты о чем?? Что у тебя в морском бое может быстро работать?? У тебя из динамики - перемещение курсора пользователем и обновление экрана 5 раз в секунда в консоли. Какая оптимизация? Ты представляешь себе сколько будет вычисляться вот такая штука: field[A[0]][A[1]][A[2]]? Оптимизацией такой занимались люди с моей прошлой работы - у них прога под досом делала 10К циклов в секунду, и в каждом цикле они опрашивали железо и принимали решения по результатам. Вот они за такты боролись. А в твоем случае куда важнее научиться писать нормальный читаемый код.
Ипользование массивов переменных А и В даёт возможность более гибко адресоваться к ним
Ага, только если бы вместо них был десяток переменных с внятными именами, это и работало бы ничуть не медленнее, и было куда понятнее.
Короче, спорить тут не о чем. Будет готов результат - покажи.
 
G

grigsoft

Вот кстати ссылочка в тему:

правила оформления кода в софтверном подразделении LockheedMartin - я так понял код для всяких демо и, возможно, собственно софт в истребителях.
О том как серьезные компании походят к коду.
 
S

sergey butov

Посибо за ссылку. Стати, а по MFC, не шариш случаем? Ато мы тут начали учить, а я много пропустил. Если можеж проконсультировать. ..

1. Как в мсвс 2005 вызвать class wizard? в мсвс 6 - ctrl+w, а вот в 2005 чота я непонял.
2. Как связать управление с обьектом ( например меню с диалоговым окном)?

Помоги, плыз :ph34r:

Что касаеца того приложения,то я решыл просто создать массив scr в котором будут описаны два окна: окна расстановки кораблей и окно самой огры. То есть массивы grid и field будут просто зашиты в массив scr. Так по крайней мере будет быстрее работать прорисовка. Попробую так, а там видно будет :D
 
G

grigsoft

1. Без понятия - сам сижу на VS6 все еще.
2. Визуально - никак. Добавляешь обработчик команды меню (ручками или визардом) и вписываешь работы с диалогом.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!