|
COM‐пропагандист
|
||||||
Общие вопросы и приёмы эффективного программирования на BASIC27.03.2021, 15:34. Показов 32559. Ответов 391
Метки нет (Все метки)
Вот как создать кнопку:
0
|
||||||
| 27.03.2021, 15:34 | |
|
Ответы с готовыми решениями:
391
Общие вопросы по языку 1с Visual Basic Приемы взаимодействия Visual Basic и SQL Основные понятия и приемы программирования |
|
Кормпилятор
|
||
| 09.04.2021, 22:34 | ||
|
с нуля. Не понятно только, почему не сделал и почему не пишешь на си, если знаешь его. Это какое-то садо мазо, но надо обязательно зайти и попинать народ на других диалектах.
0
|
||
|
|
|||||
| 09.04.2021, 22:49 | |||||
|
Но на содержание переменной это не повлияет, ![]()
0
|
|||||
|
Модератор
|
||||
| 09.04.2021, 22:51 | ||||
|
0
|
||||
|
Модератор
|
|||
| 09.04.2021, 23:12 | |||
|
, и не важно сколько ты там изначально навыделял.
0
|
|||
|
Кормпилятор
|
||
| 10.04.2021, 00:01 | ||
|
Пытаюсь лишь сказать, что: 1) Проблема преувеличена. Т.к. удельное кол-во строковых операций на все иные - не так велико. Дай бог процентов 20, а то и меньше. Софта, ориентированного на строки, тоже по пальцам пересчитать. 2) Скорости большинства классических(не .NET) диалектов достаточно для любых задач со строками. С этим вообще нет никаких проблем. 3) Озвученные сценарии разработки неправдоподобны, программисты не бараны, об стенку рогами долбиться не будут, делая внутри двойного цикла(или аналогичных ситуациях) аллокат, а это единственная ситуация когда разность методик даст уверенную разницу. Грамотные люди его всегда делают заранее, в те моменты, когда оно не критично, это может выражаться во всём, но так или иначе в лобешник не делают. Претензии высказывались к хепу в целом, а не со стороны строк. Я же говорю, что там всё нормально, если делать по-человечески и все эти претензии - не имеют под собой основания в виде "ваш софт гарантированно будет работать на 5% медленнее". Дай бог там 1% нарисуется на компе 20-ти летней давности. И со строками тоже момент тонкий, с их объёмом и размером. 4) Что есть нюансы, касаемо как раз оптимизации. Что push\pop важны(например чтобы сохранять счётчик внешнего цикла), а работать со строкой(или что там ещё можно так завести) может потребоваться в любом месте и хинты со стеком создадут жопу с этой точки зрения для других частей программы, указатель придётся возвращать(потому что стек это структура вида "последний пришёл - первый ушёл" и сместив указатель мы нарушаем её), а чтобы возвращать, нужно понимать на сколько, это значение из памяти. То что могло улезть в регистры за один присест и находиться в них, ускоряя процесс обсчёта, будет мотаться по тому же стеку или локалкам туда сюда, этого не всегда можно избежать, а точнее мало когда, но 1 лишний регистр как правило существенно ускоряет алгоритм, если будут такие места, где можно внутренний цикл полностью загнать в регистры, ну понятное дело указатели по памяти шерстят, но это единственные накладные расходы. И это как раз то, что может свести на нет всю пользу от этого дела и машинная оптимизация тут лишь вводит в заблуждение. Т.е. чтобы получить реально увесистые значения пользы, нужно минимум иметь двойной цикл и аллокатить стек в нём. Любому программисту вроде бы должно быть понятно, что истратить весь стек таким образом можно за стотысячную долю секунды и даже быстрее, но даже если это какой-то умный алг, который, отрабатывая, возвращает, - это всё равно опасно, там надо смотреть динамику расхода, анализировать глубину рекурсии, возможность нехватки памяти. Это само по себе геморрой, просто как действие. Да, за обычной памятью тоже надо следить и всё такое, но в тривиальных задачах должно быть понятно что её в разы больше и проблем не будет с вероятностью большей на порядки. На деле конечно нужно смотреть и то и то, все варианты, что быстрее, всё тестировать. Мысль интересная, получать халявные такты из воздуха, никто не спорит как-бы. Но так ли это безвредно во всём остальном, кроме тестов на хеллоу ворлдах. Плюс всё это можно без стека делать, завести кусок памяти толстый и вуаля. Вот тебе аналог, юзай, а стек остаётся для соотв. алгоритмических нужд. Добавлено через 8 минут И это при всём при том, если сам алгоритм нельзя подобрать более грамотный(разбить по потокам, применить хитрые структуры и методики) и мол надо крутить эти сраные циклы.
0
|
||
|
Модератор
|
||||||
| 10.04.2021, 00:19 | ||||||
|
0
|
||||||
|
COM‐пропагандист
|
|
| 10.04.2021, 00:31 [ТС] | |
|
0
|
|
|
COM‐пропагандист
|
||
| 10.04.2021, 02:22 [ТС] | ||
|
А то Я подумал, что PureBasic перешёл на кодогенератор Си типа ГЦЦ или Шланг.
0
|
||
|
Кормпилятор
|
|||||
| 10.04.2021, 09:50 | |||||
|
Например так: Просто считай, что ebp, это esp и всё. Тебе push\pop, как видно, всё равно не нужны. Даже мозгам удобнее, поинтер не вычитать, а прибавлять, никто эту память не трогает, измерить потребление проще, меньше вероятность опростоволоситься. Добавлено через 7 минут Уже писал, что это быстрее, чем память и есть такой параметр время доступа к памяти. Стек рулил в том плане ещё давно. Инфа из 90-х. И посмотри ещё машинный байт код, для достоверности что такое отпушать и что такое в память положить.
0
|
|||||
|
Модератор
|
||||||
| 10.04.2021, 09:58 | ||||||
|
0
|
||||||
|
Кормпилятор
|
||||||||||||||
| 10.04.2021, 12:44 | ||||||||||||||
|
посрать на эти строки было, до всей этой дискуссии. Это вы тут все повёрнуты на строках в стеке. Никак не можете понять, что это на бейсиках никому не надо. Все эти извращения. У меня всё работало великолепно, всегда. Кодил, горя не знал. А тут то кодер хулиган лезет ко мне со своими "сями" и видением мира за строки, то вы теперь всполошились. Да был бы толк ото всего этого. Но вы как обычно ничего толкового и простого не предложите для разных BASIC диалектов. Т.е. это так чисто похаять, сотрясти воздух лишний раз. Или предложите говно какое-нибудь, типа не динамических строк, с последующим геморроем. склепаешь какой-нибудь хелло ворлдовский пример, который мне это продемонстрирует и мол пофигу, что в нормальных проектах всё сделано по уму и ничего такого даже и близко не будет, потому что их тестируют жесточайше перед релизом. Добавлено через 8 минут что тут, что там мы меняем указатель и ОБЯЗАНЫ вернуть его на место. А за потоки базара не было - не надо. Если брать потоки, то тут вообще все эти недостатки нивелируются, отдельный поток может спокойно резервировать память. Добавлено через 23 минуты Вот тебе заведение блока в потоке и его лёгкое юзание в основной программе.
В поток ещё можно переменную передать, любую. Гибко, приятно, никаких проблем вообще. Какие в жопу проблемы? Проблемы у тех, кто кодить не умеет. Вот у них реально будут проблемы. Почти все, кто тут в дискуссии участвует - у них проблем не будет с гарантией, какой бы подход они не использовали.
1
|
||||||||||||||
|
Модератор
|
|||||||||||||||
| 10.04.2021, 13:09 | |||||||||||||||
.![]()
Как видишь push/pop медленней.
0
|
|||||||||||||||
|
Модератор
|
|||
| 10.04.2021, 13:13 | |||
. Ты вообще тему читаешь? Давай так, что ты этим тестом хотел показать?
0
|
|||
|
Кормпилятор
|
|||||||||||
| 10.04.2021, 13:36 | |||||||||||
|
В обратку тоже работает:
чтобы удобнее было организовать код в процедуре потока. Бейсик людям вообще чисто для ВУ логики, когда начинаются эти пляски с оптимизацией уже на самом диалекте - там такие "кони люди" получаются, что хоть стой хоть падай. Нужна оптимизация - есть ASM. А иначе мы получаем замороченный исходник, в котором высока вероятность словить баг и нежелание потом к нему возвращаться для допиливания, потому что там сам чёрт ногу сломает. Одно дело когда мы пишем библиотеку или API прослойку для проекта и совсем другое уже чистый код проекта. Я показал отсутствие каких-либо проблем с доступом к памяти из потока и наоборот. Надо завёл там, надо завёл сям. Что ты имел в виду вот этим? : Позже буду смотреть. На старом компе адекватнее. Это какая-то чушь, стек плохо спаривается в отличие от остального, тебе это прекрасно известно, не надо таких подтасовок. На 2,3,4 пеньке запусти, там без квери перфоманса можно и по таймеру замер сделать, цикл побольше воткнуть и всё. Добавлено через 5 минут посмотрим у кого понимание чище, специально зайду в эту тему, но уже с нормальными примерами, а не детским садом из хелло ворлдов и попыток натянуть это на общий случай.
1
|
|||||||||||
|
COM‐пропагандист
|
|||||
| 10.04.2021, 14:00 [ТС] | |||||
|
Функция Allocate выделяет память из кучи, а не из «памяти потока». Переделывайте. Добавлено через 6 минут
0
|
|||||
|
Кормпилятор
|
|||||
| 10.04.2021, 14:19 | |||||
|
Хеп она там заводит или ещё чего, мне до бзды, функция даёт мне указатель на валидную память, которую видно из дочерних потоков, лишь завёл глобальный указатель чтобы её адресовать. Это всё что мне надо знать. Этот код как и все приведённые в теме - бесполезен чуть более чем полностью. Ещё тут ни одного исходника не увидел, который бы дал однозначный ответ на вопрос использования озвучиваемой фичи, такого чтобы закрыть все просто вопросы и об оптимизации и об удобном использовании и чтобы глаза не резал сам код. Добавлено через 4 минуты мы имеем, а не на миллиписечных, где можно за один проход понять примерно расклад. И надо смотреть на задачах встречаемых, например сохранять счётчики циклов. Если бы код был в таком ключе, то слова бы не сказал. А это сферический конь в квадратном вакууме. Добавлено через 9 минут это QuickBasic. С которого FB за здравие начал и закончил за упокой. Причём это ожидает и другие среды, куда протянут свои ручонки сишники со своей, другой идеологией. Я вот к ним не лезу, не учу их жизни, хотя там балванов тоже хватает.
0
|
|||||
|
Модератор
|
|||||||||||
| 10.04.2021, 14:29 | |||||||||||
|
0
|
|||||||||||
|
Кормпилятор
|
||||
| 10.04.2021, 14:37 | ||||
|
0
|
||||
|
Модератор
|
||||||
| 10.04.2021, 14:45 | ||||||
|
Добавлено через 4 минуты
0
|
||||||
| 10.04.2021, 14:45 | |
|
Помогаю со студенческими работами здесь
200
Стоит ли изучать как устроена ЭВМ для эффективного программирования Подскажите ссылки на приемы программирования для Embedded
Интересны приемы программирования, о которых не пишут в книгах, а которые узнаются на практике Общие вопросы. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла:
Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
|
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
|