|
COM‐пропагандист
|
||||||
Общие вопросы и приёмы эффективного программирования на BASIC27.03.2021, 15:34. Показов 32855. Ответов 391
Метки нет (Все метки)
Вот как создать кнопку:
0
|
||||||
| 27.03.2021, 15:34 | |
|
Ответы с готовыми решениями:
391
Общие вопросы по языку 1с Visual Basic Приемы взаимодействия Visual Basic и SQL Основные понятия и приемы программирования |
|
|
|||||||||
| 06.04.2021, 23:15 | |||||||||
Как реализовано в ЯП? Или сферический в вакууме тип?
0
|
|||||||||
|
Модератор
|
|||
| 06.04.2021, 23:36 | |||
|
0
|
|||
|
Кормпилятор
|
||||||||
| 07.04.2021, 05:52 | ||||||||
|
Ребята, вы, по-моему, попали в ловушку собственных предубеждений.
Уже в ход идут какие-то совсем абсурдные вещи про кэш. Это прям уже реально смешно. Вы пытаетесь сравнить аллокацию памяти так, как будто любой кодер это будет делать прямо в коде и микро кусками, т.е. кодер у вас по умолчанию - полный баран и днище. Вы упираете на время аллокации и деаллокации, хотя вроде понятно, что деаллокация менее затратная процедура, а аллокацию памяти можно делать в самом начале. Также упускается из виду то, что можно сделать аналог кэша, не трогая при этом никакие ключи компилятора завести его в самом начале программы, когда пользователь по большей части ждёт запуска программы и использовать точно так же как стек выделяя память парой инструкций процессора, точно также подгрузив указатель из переменной и далее уже работая с регистром т.е. одной командой, причём возвращать указатель будет не нужно, т.к. это не стек, тут нет такой вещи как "ожидание данных стека другими частями кода, куда оно свои данные положили". И вот мы подошли к самому главному написанному и поэтому. Мне было сказано: по вгрузке и выгрузке на реальный физ. носитель в прямом смысле не имеем. А соотв то, про что я писал несколько строк тому назад - более чем актуально. Теперь пройдёмся по вашим косякам: Кэш размером с мегабайт, допустим ты заведёшь почти весь его, ну начнёшь в хост и в гриву резвиться. На моём P4 в 3GHz общий кеш был на один мегабайт, общий означает что и на код и на данные, но если разбить его на это разделение, то выйдет так что то про что мы говорим туда не попадёт при всё таки. У меня например хороший рабочий вариант ноута 3-го пня(целерон) с 98 виндой. Я тоже могу как Замабувараев сказать про bloatware. Но все мы прекрасно знаем, если запустить допустим старые игры под DOS или Windows до нулевых сделанные, то можно заметить что чудесным образом они работают всё же быстрее со временем даже на новых, это означает что "те самые" оптимизации ещё актуальны. Причём ускорение значительно, можно привести в пример hioctane с полностью софтверным движком. Наслушается тут советов про скорость и на полном серьёзе захочет. Давать это на откуп? Или это неправильное использование строки? А если у чувака такая задача, загнать длинную строку и организовать в ней поиск. Выходит так, что все эти бенефиты сводятся на нет. Мы на ровном месте получаем геморрой: 1) Ту же самую необходимость в проверках размера свободной памяти, про которую обсуждение уже дошло аж до критических секций. 2) п1. тянет за собой необходимость подгружать это в регистр и сравнивать - теряем регистр в алгоритме где он может быть критически важен, причём это уже второй регистр, от ebp мы типа отказались. Ну т.е. гоняем туда сюда переменные память-регистры-память регистры, у нас же проц времени дофига и нам не важен ни объём кода, ни кол-во операций, конвееры толстые - справятся. 3)
Ещё стоит учесть что кэш разбивается по ядрам ЦП, поэтому его значение даже в современных машинах не такое уж и большое, даже там могут случатся кэш промахи. Ещё во всей этой истории с кэшем наверное стоит учесть и то, что прирост будет от кэша инструкций, а там я у парней видел такие штуки как CALL. Хотите оптимизировать, так оптимизируйте. Пока тут оптимизацией не пахнет даже. 4) 5) И разумеется всё это, особенно про кэши когда разговор, требует не просто высочайшей квалификации именно на низком уровне, но ещё и приличный тестерский штат ПК у кодера. Простотой тут вообще нифига не пахнет. И той халявой про которую якобы речь идёт, мол выдели переменные в стеке и радуйся будет супер пупер быстро и ичего больше делать не надо, алгоритмы сами собой заработают быстро. 6) Всякие любители рекурсий, готовые библиотеки-чёрные ящики с сам бог знает чем внутри и мол на сколько оно способно "поддёрнуть" стек. Уповать на удачу, что там всё ровненько, чистенько с проверочками и без сильных аппетитов. Добавлено через 36 минут Мегабайт это не так много, как некоторые считают. Под DOS'ом можно было спокойно выделить 9 сегментов памяти в коде. Т.е. 576 килобайт. Тут всего лишь в два раза больше. Не так-то и много. Рекурсию не пишу принципиально - мне не страшно, а вот те кто пристрастились, тут не знаешь где и как человек напортачит. Её часто, как раз и применяют в таких вещах, глубины которых не особо секут. А не зная броду как говорится...
0
|
||||||||
|
Модератор
|
|||||||||||||
| 07.04.2021, 10:12 | |||||||||||||
![]()
0
|
|||||||||||||
|
Кормпилятор
|
||
| 07.04.2021, 12:00 | ||
|
Всё сами разгребайтесь со своим пониманием, мне хватило.
0
|
||
|
COM‐пропагандист
|
|||||
| 07.04.2021, 12:02 [ТС] | |||||
|
Я правильно понимаю, что вам нужен особый синтаксис под каждую отдельную сущность? Вот скажите мне, ваш язык поддерживает адресную книгу с номерами незнакомок? Не надо мне предлагать список или map с некими структурами, мне нужна конкретно адресная книга для номеров незнакомок.
0
|
|||||
|
Кормпилятор
|
|
| 07.04.2021, 12:09 | |
|
0
|
|
|
|
|||||||||||||||||
| 07.04.2021, 12:34 | |||||||||||||||||
|
Это задача компилятора/интерпретатора. Или предлагаете все на указателях? Спасибо, но я пишу на бейсике не для того чтобы программы были в стиле Си. Не по теме: То есть книга с номерами знакомок не нужна? :D В принципе под задачу подойдет ассоциативный массив. ![]()
0
|
|||||||||||||||||
|
Модератор
|
||||
| 07.04.2021, 12:47 | ||||
|
0
|
||||
|
|
|||||||
| 07.04.2021, 15:55 | |||||||
![]() А тут красота, понадобилась ещё один параметр, например "Рост", вписал его в готовую структуру, и вот уже всё готово без переделки остального кода.
0
|
|||||||
|
COM‐пропагандист
|
||||||||
| 07.04.2021, 18:20 [ТС] | ||||||||
|
Или массивы в вашем языке реализованы без указателей? 2. Я взял библиотечную функцию, как там это реализовано — меня не волнует. Вы сами сказали почему это волновать не должно: Всё, задача выделения памяти на стэке решена. Вы хотите, чтобы функции из рантайма которые работают с памятью в привязке с кучей, работали на стэке? Этого не будет. Добавлено через 1 час 50 минут Давайте поговорим эффективность сети в PureBasic. Отправка данных не больше 65535 байт за раз, а для UDP и того меньше — не более 2 килобайт за раз (Я не шучу). ID клиентов и серверов хранятся в неком глобальном списке, а это значит, что где‐то внутри есть как минимум критическая секция или вообще мьютекс, для синхронизации между потоками. Это означает, что даже если вы запустили несколько потоков, то программа всё равно в неожиданных местах превращается в однопоточную. Реализация сервера из примера грузит процессор на 100%. Потому что «есть ли данные» проверяется в цикле! А чтобы не грузить процессор, приходится делать задержки между проверками. Никакой асинхронности. Вы не можете сказать: «Вот тебе буфер, как данные придут, положи их в буфер и сделай уведомление». Нет пула рабочих потоков, никаких epoll-IOCP.
0
|
||||||||
|
|
||||||||
| 07.04.2021, 19:56 | ||||||||
![]() Написал его и комп сам догадался что нужно и сделал. ![]() Только нужно ли это знать чтобы написать программу. С указателями также. По сути это просто адреса ячеек памяти т. к. массив нужно где-то хранить. Где он находится знать необязательно.
1
|
||||||||
|
COM‐пропагандист
|
||||||||||||||||
| 08.04.2021, 21:45 [ТС] | ||||||||||||||||
|
Во FreeBASIC можно укорачивать строки, их длина изменяется:
(Во вложении пример, демонстрирующий создание как WString произвольной длины на стэке, так и BSTR на стэке. Ссылка на гитхуб https://github.com/zamabuvaraeu/test )
0
|
||||||||||||||||
|
|
|||||||||||||||||
| 09.04.2021, 08:25 | |||||||||||||||||
1
|
|||||||||||||||||
|
|
|||||||||||||||||||
| 09.04.2021, 09:58 | |||||||||||||||||||
|
Догадайтесь что будет если записать в такую строку больше символов чем выделено памяти?
Не по теме: Сишники нервно курят в сторонке...
1
|
|||||||||||||||||||
|
COM‐пропагандист
|
|||||||||||||||||||||
| 09.04.2021, 14:51 [ТС] | |||||||||||||||||||||
Проблема в том, что взятие указателя вроде бы на одну и ту же переменную даёт разные результаты. Вы не можете пользоваться указателем до конца процедуры, потому что в любой некотролируемый момент он начнёт ссылаться на мусор. Проверил и это:
0
|
|||||||||||||||||||||
|
Кормпилятор
|
|||
| 09.04.2021, 14:53 | |||
|
В случае с PB тоже самое, но софт пишется only прямыми лапками. Мы завели строку а потом посереди неё один из байтов нарекли нолём. Классический подход zstring. Память мы не освободили таким образом. Если мы хотим строку и усечь и увеличить, то есть два пути 1) завести памяти столько, на сколько нам нужно, чтобы увеличить строку, т.е. нужно получить длины слепливаемых строк, сложить, завести память, скопировать туда наши строки и удалить исходную. 2) сделать реаллок с сохранением данных, если используемая структура позволяет. Это всё на уровне алгоритма, а не на уровне того, что мы используем из памяти. Есть ещё один подход, гибридный, который как раз и использую, но тут все умненькие сами догадаетесь. Но охотно рассмотрю любые догадки.
0
|
|||
|
|
|
| 09.04.2021, 15:25 | |
|
0
|
|
|
|
|||||||
| 09.04.2021, 15:32 | |||||||
Нет ни какой необходимости городить всю эту чушь, что Замабувараев порой пишет.
2
|
|||||||
|
Модератор
|
|||
| 09.04.2021, 16:26 | |||
|
0
|
|||
| 09.04.2021, 16:26 | |
|
Помогаю со студенческими работами здесь
160
Стоит ли изучать как устроена ЭВМ для эффективного программирования Подскажите ссылки на приемы программирования для Embedded
Интересны приемы программирования, о которых не пишут в книгах, а которые узнаются на практике Общие вопросы. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|