|
COM‐пропагандист
|
||||||
Общие вопросы и приёмы эффективного программирования на BASIC27.03.2021, 15:34. Показов 32470. Ответов 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
Интересны приемы программирования, о которых не пишут в книгах, а которые узнаются на практике Общие вопросы. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|