|
COM‐пропагандист
|
||||||
Общие вопросы и приёмы эффективного программирования на BASIC27.03.2021, 15:34. Показов 32741. Ответов 391
Метки нет (Все метки)
Вот как создать кнопку:
0
|
||||||
| 27.03.2021, 15:34 | |
|
Ответы с готовыми решениями:
391
Общие вопросы по языку 1с Visual Basic Приемы взаимодействия Visual Basic и SQL Основные понятия и приемы программирования |
|
|
|||
| 05.04.2021, 14:19 | |||
|
0
|
|||
|
Модератор
|
|||||
| 05.04.2021, 14:26 | |||||
Добавлено через 6 минут
0
|
|||||
|
Кормпилятор
|
||
| 05.04.2021, 14:36 | ||
|
она априори неэффективна. Всегда толдычу только об одном, об архитектуре программы. Меня по большому счёту вся эта возьня с микронюансами не интересует настолько, чтобы утонуть в ней, потому что знаю простую вещь, что правильно построенная архитектура(а это нефиговый такой анализ) не даст проге работать как говно. Потому что в ней как раз и закладываются все эти будущие узкие места, где завести память, где освободить, что и где обсчитать. Как бы никогда не сяду прямолинейно кодить прогу потому что мол много мозгов и готов прошибать в прямом смысле стены. А на форуме дело больше в другом, ты вот даёшь людям на откуп дубину, которой они себя потом зашибут. Стек это реально НУ и очень тонкая работа. А какие-то строки им заводить, ну это не знаю. В задачах где реально там циклы и надо мелкими кусками заводить много, может и будет прирост, большие объёмы нужны чтобы этот прирост был ощутим, в реальных ситуациях такого нет и почти всегда можно обойтись хепом, понять где завести заранее, чтобы сразу все потребности накрыть. Т.е. как-бы аккуратно все эти штуки со стеком, а не так чтобы мол вот вам стек он работает быстрее и мол юзайте, да там неофиты такого нагородят, потом ещё из их голов это не вытравишь никак. да и как бы то что ты показал через тип - предполагаю в FB такое тоже есть, и пока он сам это пасёт мне вот честное слово пофигу, я понимаю что это не топовый компиль и скоростные характеристики меня устраивают.
0
|
||
|
COM‐пропагандист
|
||
| 05.04.2021, 14:43 [ТС] | ||
|
В отладочной версии у меня падает, там кто‐то другой теребит её rsp. Ссылка на гитхаб https://github.com/zamabuvaraeu/test (для x86 версии ставьте gcc)
0
|
||
|
COM‐пропагандист
|
|
| 05.04.2021, 14:51 [ТС] | |
|
На скриншоте код функции __alloca из библиотеки ГЦЦ.
0
|
|
|
Модератор
|
||||
| 05.04.2021, 15:06 | ||||
|
Вот мое оригинальное сообщение:
0
|
||||
|
Кормпилятор
|
||||
| 05.04.2021, 15:34 | ||||
|
когда писал текстурирование на ассемблере. Там было около 10 версий текстур +/-, на это было убито в общей сложности полтора года, даже больше. Это не сел и нахерачил за 5 минут пример, который показывает лишь базовый принцип и не показывает где зарыта собака. С тех пор много воды утекло, уже асм давно забросил, да и те навыки слабо под винду канают, ибо x64 уже во всю, со своими 15-ю регистрами. Дай мне тогда 15 толстенных 64 битных регистра, да я бы озверел с такой халявы. А в то время на портах например обычная горизониальная линия быстрее работала, пример - библиотека XLib для Паскаля. не может быть фиктивным, привык чувствовать эффективность, в прямом смысле слова. Т.е. если это 5% - то уже чувствую, но меня это не сильно волнует, если 10-15% - то как-бы на это обращу внимание, просто отложу в долгий ящик, а если 20-50% - то это делаю сразу. Что-то менее значимое чем 5%, мной даже не рассматривается, потому что архитектура, грамотный алгоритм и формализация совместно дают кратные прибавки и лучше потратить время на модернизирование этих характеристик, а технические кодерские нюансы дают лишь относительно небольшой прирост, ну если только это не SIMD или явные такие штуки типа табличной оптимизации, но это тоже скорее больше архитектура, просто в более мелком масштабе, на уровне конкретного алгоритма, конкретной функции.
0
|
||||
|
Модератор
|
||||
| 05.04.2021, 15:40 | ||||
|
0
|
||||
|
Кормпилятор
|
||
| 05.04.2021, 16:29 | ||
|
того как они решают вопрос долгосрочности таких выделений, потому что в моих реалиях, когда кодил, использовал стек для сохранения переменных внутри циклов, счётчиков и того что вытеснялось на время, т.е. было не нужным для обсчёта. Уже описал этот процесс, при котором "регистры все заняты" вроде бы должно быть понятно почему они заняты, причём, включая bp(ebp), и ситуация: ты внутри цикла, идёт заход в ещё цикл, cx надо сохранять, куда? Стек ты подвинул, положишь что-то сверху, ниже заведённое уже не ликвидировать, пока не вернёшься, возвращать указатель обратно тоже надо, иначе прога дальше вытащит не свои данные(адрес возврата например на ret) и придёт кирдык. А так то да, правил никаких, можно отдать ценнейший bp на адресацию и складывать регистры в любую доступную память(локальную или глобальную, первое проще когда пишешь машинные коды, второе, когда этим занимается компилятор). Так ли всё это мифично на самом деле?
0
|
||
|
Модератор
|
||
| 05.04.2021, 16:41 | ||
|
0
|
||
|
Кормпилятор
|
|||
| 05.04.2021, 21:26 | |||
|
даже на системе, где всей этой памяти копейки, о чём пишу и делюсь своими опытом с другими. Просто говорю, что не стал бы использовать это на каждый чих, в реале, в 99% случаев оно не даст никакой видимой выгоды, только в каких-то редких случаях. Со строками в тех кейзах, в которых их обычно используют - точно не даст. А разного рода геморроя может добавить порядком, особенно неопытным программистам, которые не знают с какой стороны к этому самому стеку подойти. До сих пор уверен, что ты не осознаёшь всю глубину проблемы, почему всё это пишу. Одно дело читать код, генеренный компилятором и совсем другое писать этот код самому. И когда BASIC программист увидит такой код, он будет долго ломать бошку, мол, зачем же его сделали, если там не будет комментария. Повторюсь, оптимизирую только тогда, когда это необходимо, т.е. когда есть явная в том потребность. Когда потребности нет в асм не лезу и не вижу смысла лезть. И типовой кейз - это алгоритмы, а не просто потому что кто-то посчитал, что строки работают недостаточно быстро и диалекты мол писали какие-то левые тюфяки, которые ни в зуб ногой. Всё там работает отлично. И если внезапно начинаются проблемы - это как раз первый звоночек и прямое свидетельство того, что архитектура проги сделана через задницу и не уделено внимание самому главному, это также означает, что если вовремя эту работу не переделать - проблем станет больше. Также знаю, что операция регистр регистр выполняется быстрее, чем регистр память. Во всяком случае так было раньше и с этим никто не спорил, это был серьёзный ресурс для оптимизации, наряду с выравниванием, с табличкой и другими, уже более сложными.
0
|
|||
|
Модератор
|
|||||
| 05.04.2021, 21:44 | |||||
|
0
|
|||||
|
COM‐пропагандист
|
||
| 06.04.2021, 12:35 [ТС] | ||
|
1. Память в стэке выделается одной командой процессора. 2. Память в куче — это вызов функции, где проверяются всякие списки, свободные места, происходит вход в критическую секцию и так далее. 3. Данные в стэке лежат прямо вместе с кодом и легко умещаются в кеш процессора. 4. Данные в куче лежат неизвестно по каким адресам, и чтобы до них добраться, процессору может потребоваться сбросить кеш. Есть есть ли ещё сомнения, почему куча априори неэффективна?
0
|
||
|
|
||||
| 06.04.2021, 12:41 | ||||
|
0
|
||||
|
COM‐пропагандист
|
|||
| 06.04.2021, 13:09 [ТС] | |||
0
|
|||
|
Модератор
|
|||||||||
| 06.04.2021, 13:19 | |||||||||
Не по теме: Pro_grammer, я бы еще эту тему вытащил на главную, там про виртуальную память интересная дискуссия. Как считаешь?
0
|
|||||||||
| 06.04.2021, 15:06 | |
|
0
|
|
| 06.04.2021, 15:06 | |
|
Помогаю со студенческими работами здесь
140
Стоит ли изучать как устроена ЭВМ для эффективного программирования Подскажите ссылки на приемы программирования для Embedded
Интересны приемы программирования, о которых не пишут в книгах, а которые узнаются на практике Общие вопросы. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|