|
COM‐пропагандист
|
||||||
Общие вопросы и приёмы эффективного программирования на BASIC27.03.2021, 15:34. Показов 36448. Ответов 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 | |
|
Стоит ли изучать как устроена ЭВМ для эффективного программирования Подскажите ссылки на приемы программирования для Embedded
Интересны приемы программирования, о которых не пишут в книгах, а которые узнаются на практике Общие вопросы. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
|
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|